Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
O Azure Artifacts permite que os desenvolvedores gerenciem seus pacotes de várias fontes, incluindo registros públicos, como npmjs.com e feeds privados. Para autenticar com o Azure Artifacts, você precisará configurar o arquivo de configuração npm. Esse arquivo contém URLs de feed e credenciais usadas pelo npm, oferecendo opções para personalizar o comportamento do cliente npm, como configurar proxies, definir locais de pacotes padrão ou configurar feeds de pacotes privados. O arquivo .npmrc normalmente está localizado no diretório inicial do usuário, mas também pode ser criado no nível do projeto para substituir as configurações padrão.
O Azure Artifacts recomenda o uso de dois arquivos de configuração separados. O primeiro é dedicado à autenticação com Azure Artifacts, enquanto o segundo deve ser mantido localmente para armazenar suas credenciais. Essa abordagem permite que você compartilhe seu arquivo de configuração enquanto mantém suas credenciais seguras.
Para configurar o segundo arquivo, basta colocá-lo em seu diretório base em seu computador de desenvolvimento e incluir todas as suas credenciais de registro. Isso permite que o cliente npm acesse facilmente suas credenciais para autenticação.
As etapas a seguir o guiarão pela configuração do primeiro arquivo de configuração:
Observação
vsts-npm-auth não há suporte em Azure DevOps Server.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Artefatos e, em seguida, selecione Conectar ao Feed.
Selecione npm na barra lateral esquerda. Se esta for a primeira vez que você usa o Azure Artifacts com o npm, verifique se você instalou os pré-requisitos.
Siga as instruções na seção Configuração do projeto para se conectar ao seu feed.
Adicione um arquivo .npmrc no diretório do seu projeto, no mesmo diretório do arquivo package.json , e cole o seguinte snippet nele.
Copie o seguinte snippet e cole-o no arquivo npmrc no nível do usuário:
Feed no escopo da organização:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed no escopo do projeto:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Gere um token de acesso pessoal com escopos de leitura e gravação de empacotamento.
Execute o comando a seguir em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito isso, copie o valor codificado de Base 64 gerado.
Se você estiver no Linux/Mac, poderá usar o comando a seguir para converter seu token de acesso pessoal em Base 64. Copie o valor codificado Base64 resultante.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Substitua os espaços reservados [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Copie o seguinte snippet e cole-o no arquivo .npmrc no nível do usuário:
Feed com escopo de coleção:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed no escopo do projeto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Gere um token de acesso pessoal com escopos de leitura e gravação de empacotamento.
Execute o comando a seguir em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito isso, copie o valor codificado de Base 64 gerado.
Substitua os espaços reservados [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Copie o seguinte snippet e cole-o no arquivo .npmrc no nível do usuário:
Feed com escopo de coleção:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed no escopo do projeto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Gere um token de acesso pessoal com escopos de leitura e gravação de empacotamento.
Execute o comando a seguir em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito isso, copie o valor codificado de Base 64 gerado.
Substitua os espaços reservados [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Entre na sua coleção do Azure DevOps e navegue até seu projeto.
Selecione Artefatos e, em seguida, selecione Conectar ao feed.
Uma nova janela será exibida. No painel de navegação esquerdo, selecione npm.
Siga as instruções fornecidas para configurar os arquivos .npmrc do projeto e do usuário .
Dica
O uso de vários registros em arquivos .npmrc é suportado com escopos e fontes upstream.
Autenticação de pipeline
Para autenticar com seu pipeline, o Azure Artifacts recomenda usar a tarefa de autenticação npm.
Ao usar executores de tarefas como gulp ou Grunt, é para priorizar a configuração da tarefa de autenticação npm no início do pipeline. Essa etapa garante que suas credenciais sejam injetadas no arquivo .npmrc do projeto e mantidas durante toda a execução do pipeline, permitindo que as etapas subsequentes acessem as credenciais no arquivo de configuração.
Navegue até o projeto, selecione Pipelines e, em seguida, selecione a definição do pipeline.
Selecione Editar para modificar o pipeline.
Selecione + para adicionar uma nova tarefa ao pipeline.
Navegue até o projeto, selecione Builds de Pipelines e, em seguida, selecione sua definição de>build.
Selecione Editar para modificar o pipeline de build.
Selecione + para adicionar uma nova tarefa ao pipeline de build.
Pesquise a tarefa Autenticar npm e selecione Adicionar.
Selecione o arquivo .npmrc e, em seguida, selecione Salvar e enfileirar quando terminar.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Observação
Para acessar o feed do pipeline, verifique se a função de serviço de build está definida como Feed e Leitor Upstream (Colaborador) nas Permissões de configurações>do feed.
Observação
Se sua organização estiver usando um firewall ou um servidor proxy, certifique-se de permitir as URLs de domínio apropriadas. Consulte Endereços IP permitidos e URLs de domínio para obter detalhes.
Solucionar problemas
vsts-npm-auth não é reconhecido
Esse erro indica que a pasta de módulos npm não foi adicionada ao seu caminho. Execute novamente a configuração do Node.js e certifique-se de selecionar a Add to PATH opção. Como alternativa, você pode adicionar a pasta npm modules ao seu caminho modificando a variável PATH para %APPDATA%\npm no Prompt de Comando ou $env:APPDATA\npm no PowerShell.
Não é possível autenticar
Erro: código E401 npm ERR! Não é possível autenticar: -> Execute o comando com o vsts-npm-auth sinalizador -F para autenticar novamente:
vsts-npm-auth -config .npmrc -F
Redefinir vsts-npm-auth
Siga estas etapas para redefinir suas credenciais vsts-npm-auth:
Se você encontrar um erro 403, isso pode indicar um conflito de nome. No Azure Artifacts, os pacotes são imutáveis, o que significa que, depois que você publica um pacote em seu feed, seu número de versão é reservado permanentemente. Mesmo se você excluí-lo, não poderá publicar um novo pacote com o mesmo número de versão. Para resolver esse problema, atualize a versão do pacote no arquivo package.json e tente novamente.