Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Med Azure Artifacts kan utvecklare publicera och installera olika pakettyper från feeds och offentliga register som npmjs.com. Om du vill autentisera med Azure Artifacts är det nödvändigt att konfigurera npm-konfigurationsfilen.
Den här filen innehåller feed-URL:er och autentiseringsuppgifter som används av npm och erbjuder alternativ för att anpassa npm-klientbeteendet, till exempel konfigurera proxyservrar, definiera standardpaketplatser eller konfigurera privata paketfeeds. .npmrc-filen finns vanligtvis i användarens hemkatalog men kan också skapas på projektnivå för att åsidosätta standardinställningarna. Genom att ändra .npmrc-filen kan användarna anpassa sin npm-upplevelse för att uppfylla sina specifika krav.
Förutsättningar
En Azure DevOps-organisation och ett projekt. Skapa en organisation eller ett projekt om du inte redan har gjort det.
En Azure Artifacts-feed. Skapa en ny feed om du inte redan har en.
För bästa praxis rekommenderar vi att du använder två separata konfigurationsfiler. Den första används för autentisering med Azure Artifacts, medan den andra lagras lokalt och innehåller dina autentiseringsuppgifter.
Om du vill konfigurera den andra filen placerar du den i din hemkatalog på utvecklingsdatorn och inkluderar alla dina registerautentiseringsuppgifter. På så sätt kan npm-klienten enkelt komma åt dina autentiseringsuppgifter för autentisering, så att du kan dela konfigurationsfilen samtidigt som du håller dina autentiseringsuppgifter säkra.
Följande steg vägleder dig genom att konfigurera den första konfigurationsfilen:
Kopiera följande kodfragment till npmrc-filen på användarnivå:
Flöde med organisationsomfattning:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flöde med projektomfattning:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Kopiera följande kodfragment till .npmrc-filen på användarnivå:
Flöde med samlingsomfång:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flöde med projektomfattning:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Kopiera följande kodfragment till .npmrc-filen på användarnivå:
Flöde med samlingsomfång:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flöde med projektomfattning:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
För att autentisera med din pipeline rekommenderar Azure Artifacts att du använder npm-autentisera uppgiften.
När du använder aktivitetslöpare som gulp eller Grunt är det viktigt att ta med npm-autentisera uppgiften i början av pipelinen. Den här åtgärden säkerställer att dina autentiseringsuppgifter matas in i projektets .npmrc-fil och behålls under pipelinekörningen, vilket gör det möjligt för efterföljande steg att komma åt autentiseringsuppgifterna i konfigurationsfilen.
Gå till projektet, välj Pipelines och välj sedan din pipelinedefinition.
Välj Redigera för att ändra pipelinen.
Välj + för att lägga till en ny uppgift i pipelinen.
Gå till projektet, välj Pipelines Builds> och välj sedan din byggdefinition.
Välj Redigera för att ändra bygg-pipelinen.
Välj + för att lägga till en ny uppgift i bygg-pipelinen.
Sök efter npm Authenticate-uppgiften och välj sedan Lägg till.
Välj .npmrc-filen och välj sedan Spara & kö när du är klar.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Kommentar
För att din pipeline ska få åtkomst till feeden kontrollerar du att byggtjänstrollen är inställd på Feed And Upstream Reader (Deltagare) i feedinställningarna.
Om du stöter på följande fel under projektkörningen:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
Då är det troligt att mappen npm-moduler inte har lagts till i sökvägen. Du kan åtgärda detta genom att köra Node.js installationsprogrammet igen och se till att välja alternativet Add to PATH .
Du kan också lägga till mappen npm-moduler i sökvägen genom att ändra PATH-variabeln till %APPDATA%\npm i Kommandotolken eller $env:APPDATA\npm i PowerShell.
Det gick inte att autentisera
Om du stöter på ett E401-fel: code E401 npm ERR! Unable to authenticate. vsts-npm-auth Kör kommandot med flaggan -F för att autentisera igen.
vsts-npm-auth -config .npmrc -F
Återställ vsts-npm-auth
Följ dessa steg för att återställa dina vsts-npm-auth-autentiseringsuppgifter:
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i: https://aka.ms/ContentUserFeedback.