Compartilhar via


npmAuthenticate@0 – tarefa npm authenticate (para executores de tarefas) v0

Use essa tarefa para fornecer credenciais npm a um arquivo .npmrc em seu repositório para o escopo do build. 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:
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.

Entradas

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

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


credenciais customEndpoint - 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 de .npmrc especificado deve conter entradas de registro correspondentes às conexões de serviço. Se você precisar apenas de registros nesta organização ou coleção, deixe isso em branco. As credenciais do build são usadas automaticamente.


Opções de controle de tarefa

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

Variáveis de saída

Nenhum.

Observações

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

Como essa tarefa funciona?

Essa tarefa pesquisa o arquivo de .npmrc especificado em busca de entradas do Registro e acrescenta detalhes de autenticação para os registros descobertos até o final do arquivo. Para todos os registros na organização/coleção atual, as credenciais do build são usadas. Para registros em uma organização diferente ou hospedados por terceiros, as URIs do Registro serão comparadas com as 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 no meu pipeline devo executar essa tarefa?

Essa tarefa deve ser executada antes de usar npmou um executor de tarefas npm para instalar ou enviar pacotes por push para um repositório npm autenticado, como o Azure Artifacts. Não há outros requisitos de ordenação.

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

Essa tarefa só adicionará detalhes de autenticação a um arquivo .npmrc por vez. Se você precisar de autenticação para vários arquivos .npmrc, poderá executar a tarefa várias vezes, uma vez para cada arquivo .npmrc. Como alternativa, considere criar um arquivo .npmrc que especifica todos os registros usados por seus projetos, executar npmAuthenticate neste 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 Web. Será que npmAuthenticate configurar npm/gulp/Grunt para usar meu proxy?

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

Para fazer isso, você pode:

  • Defina as variáveis de ambiente http_proxy/https_proxy e, opcionalmente, no_proxy para suas configurações de proxy. Consulte de configuração npm para obter detalhes. Observe que essas 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_.

    cuidado:
    npm executores de tarefas podem não ser compatíveis com todos os métodos de configuração de proxy compatíveis com 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 build 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 em execução 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 build. Consulte permissões de pacote no Azure Pipelines para obter mais detalhes.

Exemplos

Restaurar npm pacotes para seu projeto de um registro em sua organização

Se os únicos registros autenticados que você usa forem registros do Azure Artifacts em sua organização, você só precisará especificar o caminho para um arquivo .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 de npm fora da sua organização

Se o .npmrc contiver registros do Azure Artifacts de uma organização diferente ou usar um repositório de pacote autenticado de terceiros, você precisará configurar conexões de serviço npm e especificá-las na entrada customEndpoint. Os registros em sua organização do Azure Artifacts também serão autenticados 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

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

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

Requisitos

Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
Execuções em Agent, DeploymentGroup
de demandas Nenhum
recursos Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
restrições de comando Qualquer
variáveis settable Qualquer
Versão do agente 2.115.0 ou superior
Categoria de tarefa Pacote