npmAuthenticate@0 – npm-autentisera (för aktivitetslöpare) v0-aktivitet
Använd den här uppgiften om du vill ange npm
autentiseringsuppgifter till en .npmrc
fil på lagringsplatsen för bygget. Detta gör det möjligt för npm
, samt npm
aktivitetslöpare som gulp och Grunt, att autentisera med privata register.
Syntax
# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
inputs:
workingFile: # string. Required. .npmrc file to authenticate.
#customEndpoint: # string. Credentials for registries outside this organization/collection.
Ingångar
workingFile
-
.npmrc-fil för att autentisera
string
. Obligatoriskt.
Sökvägen till den .npmrc
fil som anger de register som du vill arbeta med. Välj filen, inte mappen, till exempel /packages/mypackage.npmrc
.
customEndpoint
-
autentiseringsuppgifter för register utanför organisationen/samlingen
string
.
Kommaavgränsad lista över npm-tjänstanslutning namn för register utanför organisationen eller samlingen. Den angivna .npmrc
-filen måste innehålla registerposter som motsvarar tjänstanslutningarna. Om du bara behöver register i den här organisationen eller samlingen lämnar du det tomt. Byggets autentiseringsuppgifter används automatiskt.
Kontrollalternativ för aktivitet
Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.
Utdatavariabler
Ingen.
Anmärkningar
Använd den här uppgiften om du vill ange npm
autentiseringsuppgifter till en .npmrc
fil på lagringsplatsen för bygget. Detta gör det möjligt för npm
, samt npm
aktivitetslöpare som gulp och Grunt, att autentisera med privata register.
- Hur fungerar den här uppgiften?
- När i min pipeline ska jag köra den här uppgiften?
- Jag har flera npm-projekt. Behöver jag köra den här uppgiften för varje .npmrc-fil?
- Min agent finns bakom en webbproxy. Kommer
npmAuthenticate
konfigureranpm/gulp/Grunt
att använda min proxy? - Min pipeline måste komma åt en feed i ett annat projekt
Hur fungerar den här uppgiften?
Den här uppgiften söker i den angivna .npmrc
filen efter registerposter och lägger sedan till autentiseringsinformation för de identifierade registren i slutet av filen. För alla register i den aktuella organisationen/samlingen används byggets autentiseringsuppgifter. För register i en annan organisation eller som hanteras av en tredje part jämförs register-URI:erna med URI:erna för npm-tjänstanslutningar som anges av customEndpoint
indata och motsvarande autentiseringsuppgifter används. Den .npmrc
filen återställs till sitt ursprungliga tillstånd i slutet av pipelinekörningen.
När i min pipeline ska jag köra den här uppgiften?
Den här uppgiften måste köras innan du använder npm
, eller en npm
aktivitetslöpare, för att installera eller push-överföra paket till en autentiserad npm-lagringsplats, till exempel Azure Artifacts. Det finns inga andra beställningskrav.
Jag har flera npm-projekt. Behöver jag köra den här uppgiften för varje .npmrc-fil?
Den här uppgiften lägger bara till autentiseringsinformation i en .npmrc
fil i taget. Om du behöver autentisering för flera .npmrc
filer kan du köra uppgiften flera gånger, en gång för varje .npmrc
fil. Alternativt kan du överväga att skapa en .npmrc
fil som anger alla register som används av dina projekt, kör npmAuthenticate
på den här .npmrc
filen och sedan anger en miljövariabel för att ange den här .npmrc
filen som npm per användare-konfigurationsfil.
- task: npmAuthenticate@0
inputs:
workingFile: $(agent.tempdirectory)/.npmrc
- script: echo ##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(agent.tempdirectory)/.npmrc
- script: npm ci
workingDirectory: project1
- script: npm ci
workingDirectory: project2
Min agent finns bakom en webbproxy. Kommer npmAuthenticate
konfigurera npm/gulp/Grunt
att använda min proxy?
Svaret är nej. Även om den här uppgiften i sig fungerar bakom en webbproxy din agent har konfigurerats för att använda, konfigurerar den inte npm
eller npm
aktivitetslöpare att använda proxyn.
För att göra det kan du antingen:
Ange miljövariablerna
http_proxy
/https_proxy
och om du villno_proxy
till proxyinställningarna. Mer information finns i npm config. Observera att dessa ofta används variabler som andra icke-npm
verktyg (t.ex. curl) också kan använda.Lägg till proxyinställningarna i npm-konfigurationenantingen manuellt med hjälp av npm-konfigurationsuppsättningeneller genom att ange miljövariabler prefixet med
NPM_CONFIG_
.Varning:
npm
aktivitetslöpare kanske inte är kompatibla med alla metoder för proxykonfiguration som stöds avnpm
.Ange proxyn med en kommandoradsflagga när du anropar
npm
.- script: npm ci --https-proxy $(agent.proxyurl)
Om proxyn kräver autentisering kan du behöva lägga till ytterligare ett byggsteg för att skapa en autentiserad proxy-URI.
- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)
Min pipeline måste komma åt en feed i ett annat projekt
Om pipelinen körs i ett annat projekt än det projekt som är värd för flödet måste du konfigurera det andra projektet för att bevilja läs-/skrivåtkomst till byggtjänsten. Mer information finns i Paketbehörigheter i Azure Pipelines.
Exempel
-
Återställ
npm
paket för projektet från ett register i organisationen -
Återställa och publicera
npm
paket utanför organisationen - npmrc
- npm
Återställa npm
paket för projektet från ett register i din organisation
Om de enda autentiserade register som du använder är Azure Artifacts-register i din organisation behöver du bara ange sökvägen till en .npmrc
fil till npmAuthenticate
uppgift.
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
- script: npm ci
# ...
- script: npm publish
Återställa och publicera npm
paket utanför organisationen
Om din .npmrc
innehåller Azure Artifacts-register från en annan organisation eller använder en autentiserad paketlagringsplats från tredje part måste du konfigurera npm-tjänstanslutningar och ange dem i customEndpoint
indata.
Register i din Azure Artifacts-organisation autentiseras också automatiskt.
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true
Register-URL:en som pekar på en Azure Artifacts-feed kan innehålla projektet. En URL för ett projektomfattningsflöde måste innehålla projektet och URL:en för ett organisationsomfångsflöde får inte innehålla projektet. Läs mer om projektomfattande feeds.
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
OtherOrganizationNpmConnection
och ThirdPartyRepositoryNpmConnection
är namnen på npm-tjänstanslutningar som har konfigurerats och godkänts för användning i pipelinen och har URL:er som matchar dem i den angivna .npmrc
filen.
Krav
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
kräver | Ingen |
funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Vilken som helst |
variabler som kan | Vilken som helst |
Agentversion | 2.115.0 eller senare |
Aktivitetskategori | Paket |