Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019
Artefatos do Azure permitem que os desenvolvedores gerenciem os seus pacotes de várias fontes, incluindo registos públicos, como o npmjs.com, e feeds privados. Para autenticar com o Azure Artifacts, você precisará configurar seu 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 de .npmrc normalmente está localizado no diretório base 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 Artefatos do Azure, 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 pessoal em sua máquina 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 irão guiá-lo através da configuração do primeiro arquivo de configuração. Selecione a guia que corresponde ao seu ambiente de desenvolvimento:
Observação
vsts-npm-auth não tem suporte no Servidor de DevOps do Azure.
Entre em sua organização do Azure DevOps e navegue até seu projeto.
Selecione Artefatose, em seguida, selecione Conectar ao Feed.
Selecione npm na barra lateral esquerda. Se esta for a primeira vez usando Artefatos do Azure com npm, certifique-se de ter instalado os pré-requisitos.
Siga as instruções na seção de configuração do Project para se conectar ao seu feed.
Adicione um arquivo de .npmrc no diretório do projeto, no mesmo diretório do arquivo package.json, e cole o seguinte trecho nele.
Copie o seguinte trecho e cole-o no seu ficheiro de npmrc nível de utilizador:
Feed de âmbito organizacional:
; 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 de âmbito de 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 permissões de leitura e escritura para pacotes .
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito, copie o valor codificado Base 64 gerado.
Se você estiver no Linux/Mac, você pode alternativamente usar o seguinte comando para converter seu token de acesso pessoal para a 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 de .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Copie o seguinte trecho e cole-o no seu ficheiro de nível de utilizador .npmrc:
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 com escopo de 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 permissões de leitura e escrita para empacotamento .
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito, copie o valor codificado Base 64 gerado.
Substitua os espaços reservados [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo de .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Copie o seguinte trecho e cole-o no seu ficheiro .npmrc de nível de utilizador :
Feed específico para 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 com escopo de 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 permissões de leitura e escrita de empacotamento .
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado. Uma vez feito, copie o valor codificado Base 64 gerado.
Substitua os espaços reservados [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo de .npmrc do usuário pelo token de acesso pessoal codificado obtido na etapa anterior.
Entre em sua coleção de DevOps do Azure e navegue até seu projeto.
Selecione Artefatose, em seguida, selecione Conectar para alimentar.
Irá aparecer uma nova janela. No painel de navegação esquerdo, selecione npm.
Siga as instruções fornecidas para configurar seu de projeto e usuário arquivos .npmrc.
Dica
O uso de vários registos em arquivos .npmrc é suportado com os escopos e as fontes que têm como origem .
Autenticação de canalização
Para autenticar com o seu pipeline, o Azure Artifacts recomenda usar a tarefa npm authenticate.
Ao usar executores de tarefas como gulp ou Grunt, é priorizar a configuração do npm autenticar de tarefas no início do pipeline. Esta 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é seu projeto, selecione Pipelinese, em seguida, selecione sua definição de pipeline.
Selecione Edit para modificar o seu pipeline.
Selecione + para adicionar uma nova tarefa ao seu pipeline.
Navegue até seu projeto, selecione Pipelines>Buildse, em seguida, selecione sua definição de compilação.
Selecione Editar para modificar seu pipeline de compilação.
Selecione + para adicionar uma nova tarefa ao seu pipeline de compilação.
Procure a tarefa npm Autenticar e, em seguida, selecione Adicionar.
Selecione o seu ficheiro .npmrc e, em seguida, selecione Guardar & na fila quando tiver concluído.
- 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 aceder ao feed a partir do pipeline, certifique-se de que a função de serviço de compilação está definida como Feed And Upstream Reader (Colaborador) nas definições do Feed>Permissões.
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 mais informações.
Solução de problemas
vsts-npm-auth não é reconhecido
Este erro indica que a pasta npm modules não foi adicionada ao seu caminho. Execute novamente a configuração do Node.js e certifique-se de selecionar a opção Add to PATH. 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 vsts-npm-auth com 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. Nos Artefatos do Azure, 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 que você o exclua, 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.