Partilhar via


npmAuthenticate@0 - npm autenticar (para executores de tarefas) v0 tarefa

Use esta tarefa para fornecer credenciais npm a um arquivo de .npmrc em seu repositório para o escopo da compilação. Isso permite que npm, bem como npm executores de tarefas como gulp e Grunt, se autentiquem com registros privados.

Sintaxe

# 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:
    #azureDevOpsServiceConnection: # string. Alias: workloadIdentityServiceConnection. 'Azure DevOps' Service Connection. 
    #feedUrl: # string. Azure Artifacts URL. 
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.
# 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.

Insumos

azureDevOpsServiceConnection - 'Azure DevOps' Ligação ao Serviço
Alias de entrada: workloadIdentityServiceConnection. string.

Se isto estiver definido, feedUrl é obrigatório. As Ligações de Serviço para organizações/coleções externas e endpoints personalizados não são compatíveis.


feedUrl - Artefactos do Azure URL
string.

Se isto estiver definido, workloadIdentityServiceConnection é obrigatório. Não é compatível com customEndpoint. O URL do feed deve estar no npm formato do registo: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/npm/registry/.


workingFile - arquivo .npmrc para autenticar
string. Obrigatório.

O caminho para o arquivo de .npmrc que especifica os registros com os quais você deseja trabalhar. Selecione o arquivo, não a pasta, como /packages/mypackage.npmrc.


customEndpoint - Credenciais para registros fora desta organização/coleção
string.

A lista separada por vírgulas de conexão de serviço npm nomes para registros fora dessa organização ou coleção. O arquivo .npmrc especificado deve conter entradas do Registro correspondentes às conexões de serviço. Se você só precisa de registros nesta organização ou coleção, deixe isso em branco. As credenciais da compilação são usadas automaticamente.


Opções de controlo de tarefas

Todas as tarefas têm opções de controle, além de suas entradas de tarefas. Para obter mais informações, consulte Opções de controle de e propriedades de tarefas comuns.

Variáveis de saída

Nenhum.

Observações

Use esta tarefa para fornecer credenciais npm a um arquivo de .npmrc em seu repositório para o escopo da compilação. Isso permite que npm, bem como npm executores de tarefas como gulp e Grunt, se autentiquem com registros privados.

Como funciona esta tarefa?

Esta tarefa pesquisa entradas de registo no ficheiro .npmrc especificado e, em seguida, acrescenta detalhes de autenticação para os registos descobertos ao final do ficheiro. Para todos os registros na organização/coleção atual, as credenciais da compilação são usadas. Para registros em uma organização diferente ou hospedados por terceiros, os URIs do registro serão comparados aos URIs das conexões de serviço npm especificadas pela entrada customEndpoint e as credenciais correspondentes serão usadas. O arquivo .npmrc será revertido para seu estado original no final da execução do pipeline.

Quando devo executar esta tarefa no meu pipeline?

Esta tarefa deve ser executada antes de usar npm, ou um executor de tarefas npm, para instalar ou enviar pacotes para um repositório npm autenticado, como Artefactos do Azure. Não existem outros requisitos de encomenda.

Tenho vários projetos npm. Preciso executar esta tarefa para cada arquivo .npmrc?

Esta tarefa só adicionará detalhes de autenticação a um ficheiro .npmrc de cada vez. Se você precisar de autenticação para vários arquivos .npmrc, poderá executar a tarefa várias vezes, uma para cada arquivo .npmrc. Como alternativa, considere criar um arquivo de .npmrc que especifique todos os registros usados por seus projetos, executar npmAuthenticate nesse arquivo .npmrc e, em seguida, definir uma variável de ambiente para designar esse arquivo .npmrc como o arquivo de configuração npm por usuário.

- 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

Meu agente está por trás de um proxy da web. O npmAuthenticate configurará npm/gulp/Grunt para usar meu proxy?

A resposta é não. Embora essa tarefa em si funcione atrás de um proxy da Web seu agente tenha sido configurado para usá, ela não configura npm ou npm executores de tarefas para usar o proxy.

Para tal, pode:

  • Defina as variáveis de ambiente http_proxy/https_proxy e, opcionalmente, no_proxy às suas configurações de proxy. Consulte de configuração npm para obter detalhes. Note que estas são variáveis comumente usadas que outras ferramentas nãonpm (por exemplo, curl) também podem usar.

  • Adicione as configurações de proxy ao de configuração npm , manualmente, usando conjunto de configurações npmou definindo variáveis de ambiente prefixadas com NPM_CONFIG_.

    Importante

    npm executores de tarefas podem não ser compatíveis com todos os métodos de configuração de proxy suportados pelo npm.

  • Especifique o proxy com um sinalizador de linha de comando ao chamar npm.

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

Se o proxy exigir autenticação, talvez seja necessário adicionar uma etapa de compilação adicional para construir um URI de proxy autenticado.

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

Meu pipeline precisa acessar um feed em um projeto diferente

Se o pipeline estiver sendo executado em um projeto diferente do projeto que hospeda o feed, você deverá configurar o outro projeto para conceder acesso de leitura/gravação ao serviço de compilação. Consulte permissões Package em Azure Pipelines para mais detalhes.

Exemplos

Restaurar pacotes de npm para seu projeto a partir de um registro dentro de sua organização

Se os únicos registos autenticados que usar forem Artefactos do Azure registos da sua organização, só precisa de especificar o caminho para um ficheiro .npmrc para a tarefa 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

Restaurar e publicar pacotes npm fora da sua organização

Se o seu .npmrc contiver registos Artefactos do Azure de outra organização ou usar um repositório de pacotes autenticado por terceiros, terá de configurar ligações de serviço npm e especificá-las na entrada customEndpoint. Os registos dentro da sua organização Artefactos do Azure também serão automaticamente autenticados.

.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

O URL do registo que aponta para um feed do Artefactos do Azure pode ou não conter o projeto. Uma URL para um feed de escopo de projeto deve conter o projeto e a URL para um feed de escopo da organização não deve conter o projeto. Saiba mais sobre feeds com escopo de projeto.

NPM

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection # Name of your service connection
- script: npm ci

- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection e ThirdPartyRepositoryNpmConnection são os nomes de conexões de serviço npm que foram configuradas e autorizadas para uso em seu pipeline e têm URLs que correspondem às do arquivo de .npmrc especificado.

Requerimentos

Requisito Descrição
Tipos de pipeline YAML, Construção clássica, Versão clássica
Funciona em Agente, DeploymentGroup
Exigências Nenhum
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 2.115.0 ou superior
Categoria de tarefa Embalagem