Conectar seu projeto npm a feeds do Azure Artifacts
Artigo
Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019
Os Artefatos do Azure permitem que os desenvolvedores publiquem e instalem vários tipos de pacotes de feeds e registros públicos, como npmjs.com. Para autenticar com o Azure Artifacts, é necessário 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 .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. Ao modificar o arquivo .npmrc, os usuários podem personalizar sua experiência npm para atender às suas necessidades específicas.
Pré-requisitos
Uma organização e um projeto do Azure DevOps. Crie uma organização ou um projeto , caso ainda não o tenha feito.
Um feed de Artefatos do Azure. Crie um novo feed se ainda não tiver um.
Para práticas recomendadas, é recomendável usar dois arquivos de configuração separados. O primeiro é usado para autenticação com Artefatos do Azure, enquanto o segundo é armazenado localmente e contém suas credenciais.
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. Dessa forma, o cliente npm pode acessar facilmente suas credenciais para autenticação, permitindo que você compartilhe seu arquivo de configuração enquanto mantém suas credenciais seguras.
As etapas a seguir irão guiá-lo através da configuração do primeiro arquivo de configuração:
Nota
vsts-npm-auth não tem suporte no Servidor de DevOps do Azure.
Copie o seguinte trecho em seu arquivo npmrc de nível de usuário:
Feed com 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 com 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.
Codifique seu token de acesso pessoal recém-gerado da seguinte maneira:
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado:
Copie o seguinte trecho para o arquivo .npmrc de nível de 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 com 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.
Codifique seu token de acesso pessoal recém-gerado da seguinte maneira:
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado:
Copie o seguinte trecho para o arquivo .npmrc de nível de 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 com 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.
Codifique seu token de acesso pessoal recém-gerado da seguinte maneira:
Execute o seguinte comando em uma janela de prompt de comando e cole seu token de acesso pessoal quando solicitado:
Substitua ambos os valores [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] no arquivo .npmrc do usuário pelo token de acesso pessoal da Etapa 3.
Selecione sua coleção e navegue até seu projeto.
Selecione Artefatos e, em seguida, selecione Conectar ao feed.
Irá aparecer uma nova janela. No painel de navegação esquerdo, selecione npm.
Siga as instruções para configurar seus arquivos .npmrc de projeto e usuário .
Gorjeta
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 npm authenticate.
Ao usar executores de tarefas como gulp ou Grunt, é importante incluir sua tarefa npm authenticate no início do pipeline. Essa ação garante que suas credenciais sejam injetadas no arquivo .npmrc do projeto e mantidas durante toda a execução do pipeline, permitindo etapas subsequentes para acessar 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 seu pipeline.
Selecione + esta opção para adicionar uma nova tarefa ao seu pipeline.
Navegue até seu projeto, selecione Pipelines Builds e, em seguida, selecione sua definição de>compilação.
Selecione Editar para modificar seu pipeline de compilação.
Selecione + esta opção para adicionar uma nova tarefa ao seu pipeline de compilação.
Procure a tarefa npm Authenticate e selecione Adicionar.
Selecione o arquivo .npmrc e, em seguida, selecione Salvar fila & 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
Nota
Para que seu pipeline acesse seu feed, verifique se a função de serviço de compilação está definida como Feed And Upstream Reader (Colaborador) nas configurações do feed.
Nota
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.
Resolver problemas
vsts-npm-auth não é reconhecido
Se você encontrar o seguinte erro durante a execução do projeto:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
Então é provável que a pasta npm modules não tenha sido adicionada ao seu caminho. Para resolver isso, 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
Se você estiver enfrentando um erro E401: code E401 npm ERR! Unable to authenticate. 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:
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja: https://aka.ms/ContentUserFeedback.