Dela via


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?

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 vill no_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 av npm.

  • 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ä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