Condividi tramite


npmAuthenticate@0 - attività npm authenticate (for task runners) v0

Usare questa attività per fornire le credenziali npm a un file .npmrc nel repository per l'ambito della compilazione. In questo modo npm, oltre a npm strumenti di esecuzione delle attività come gulp e Grunt, possono eseguire l'autenticazione con registri privati.

Sintassi

# 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.

Ingressi dati

workingFile - file npmrc per autenticare
string. Obbligatorio.

Percorso del file di .npmrc che specifica i registri con cui si desidera lavorare. Selezionare il file, non la cartella, ad esempio /packages/mypackage.npmrc.


customEndpoint - Credenziali per registri esterni a questa organizzazione/raccolta
string.

Elenco delimitato da virgole di connessione al servizio npm nomi per i registri esterni all'organizzazione o alla raccolta. Il file di .npmrc specificato deve contenere voci del Registro di sistema corrispondenti alle connessioni al servizio. Se sono necessari solo registri nell'organizzazione o nella raccolta, lasciare vuoto questo campo. Le credenziali della compilazione vengono usate automaticamente.


Opzioni di controllo delle attività

Tutte le attività dispongono di opzioni di controllo oltre ai relativi input attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di output

Nessuno.

Osservazioni:

Usare questa attività per fornire le credenziali npm a un file .npmrc nel repository per l'ambito della compilazione. In questo modo npm, oltre a npm strumenti di esecuzione delle attività come gulp e Grunt, possono eseguire l'autenticazione con registri privati.

Come funziona questa attività?

Questa attività cerca nel file di .npmrc specificato le voci del Registro di sistema, quindi aggiunge i dettagli di autenticazione per i registri individuati alla fine del file. Per tutti i registri nell'organizzazione/raccolta corrente, vengono usate le credenziali della compilazione. Per i registri in un'organizzazione diversa o ospitata da terze parti, gli URI del Registro di sistema verranno confrontati con gli URI delle connessioni del servizio npm specificate dall'input customEndpoint e verranno usate le credenziali corrispondenti. Il file .npmrc verrà ripristinato allo stato originale alla fine dell'esecuzione della pipeline.

Quando nella pipeline è necessario eseguire questa attività?

Questa attività deve essere eseguita prima di usare npmo uno strumento di esecuzione attività npm per installare o eseguire il push di pacchetti in un repository npm autenticato, ad esempio Azure Artifacts. Non esistono altri requisiti di ordinamento.

Ho più progetti npm. È necessario eseguire questa attività per ogni file con estensione npmrc?

Questa attività aggiungerà solo i dettagli di autenticazione a un file .npmrc alla volta. Se è necessaria l'autenticazione per più file di .npmrc, è possibile eseguire l'attività più volte, una volta per ogni file .npmrc. In alternativa, prendere in considerazione la creazione di un file di .npmrc che specifica tutti i registri usati dai progetti, l'esecuzione di npmAuthenticate in questo file .npmrc e quindi l'impostazione di una variabile di ambiente per designare questo file .npmrc come file di configurazione npm per utente.

- 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

L'agente si trova dietro un proxy Web. Verrà npmAuthenticate configurata npm/gulp/Grunt per l'uso del proxy?

La risposta è no. Anche se questa attività funzionerà dietro un proxy Web l'agente è stato configurato per l'uso di, non configura npm o npm strumenti di esecuzione attività per l'uso del proxy.

A tale scopo, è possibile:

  • Impostare le variabili di ambiente http_proxy/https_proxy e, facoltativamente, no_proxy sulle impostazioni proxy. Per informazioni dettagliate, vedere npm config. Si noti che si tratta di variabili di uso comune che possono essere usate anche da altri strumenti nonnpm (ad esempio curl).

  • Aggiungere le impostazioni proxy alla configurazione di npm, manualmente, usando npm config seto impostando variabili di ambiente precedute da NPM_CONFIG_.

    attenzione:
    npm utilità di esecuzione delle attività potrebbe non essere compatibile con tutti i metodi di configurazione proxy supportati da npm.

  • Specificare il proxy con un flag della riga di comando quando si chiama npm.

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Se il proxy richiede l'autenticazione, potrebbe essere necessario aggiungere un passaggio di compilazione aggiuntivo per costruire un URI proxy autenticato.

- 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)

La pipeline deve accedere a un feed in un progetto diverso

Se la pipeline è in esecuzione in un progetto diverso da quello che ospita il feed, è necessario configurare l'altro progetto per concedere l'accesso in lettura/scrittura al servizio di compilazione. Per altri dettagli, vedere autorizzazioni del pacchetto in Azure Pipelines.

Esempi

Ripristinare i pacchetti npm per il progetto da un registro all'interno dell'organizzazione

Se gli unici registri autenticati usati sono registri di Azure Artifacts nell'organizzazione, è sufficiente specificare il percorso di un file .npmrc all'attività npmAuthenticate.

.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

Ripristinare e pubblicare pacchetti npm all'esterno dell'organizzazione

Se il .npmrc contiene registri azure Artifacts di un'organizzazione diversa o usa un repository di pacchetti autenticato di terze parti, è necessario configurare connessioni del servizio npm e specificarle nell'input customEndpoint. Anche i registri all'interno dell'organizzazione di Azure Artifacts verranno autenticati automaticamente.

.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

L'URL del Registro di sistema che punta a un feed di Azure Artifacts può contenere o meno il progetto. Un URL per un feed con ambito progetto deve contenere il progetto e l'URL per un feed con ambito organizzazione non deve contenere il progetto. Altre informazioni sui feed con ambito progetto.

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 e ThirdPartyRepositoryNpmConnection sono i nomi delle connessioni del servizio npm configurate e autorizzate per l'uso nella pipeline e hanno URL corrispondenti a quelli nel file di .npmrc specificato.

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Nessuno
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente 2.115.0 o versione successiva
Categoria attività Pacchetto