Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Azure Artifacts permite a los desarrolladores administrar sus paquetes desde varios orígenes, incluidos los registros públicos, como npmjs.com y fuentes privadas. Para autenticarse con Azure Artifacts, deberá configurar el archivo de configuración de npm. Este archivo contiene direcciones URL de fuente y credenciales usadas por npm, ofreciendo opciones para personalizar el comportamiento del cliente de npm, como configurar servidores proxy, definir ubicaciones de paquetes predeterminadas o configurar fuentes de paquetes privadas. El archivo .npmrc se encuentra normalmente en el directorio principal del usuario, pero también se puede crear en el nivel de proyecto para invalidar la configuración predeterminada.
Azure Artifacts recomienda usar dos archivos de configuración independientes. La primera se dedica a la autenticación con Azure Artifacts, mientras que la segunda debe mantenerse localmente para almacenar las credenciales. Este enfoque le permite compartir el archivo de configuración al tiempo que mantiene las credenciales seguras.
Para configurar el segundo archivo, basta con colocarlo en el directorio principal en la máquina de desarrollo e incluir todas las credenciales del Registro. Esto permite al cliente npm acceder fácilmente a sus credenciales para la autenticación.
Los pasos siguientes le guiarán a través de la configuración del primer archivo de configuración:
Nota:
vsts-npm-auth no se admite en Azure DevOps Server.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Seleccione npm en la barra lateral izquierda. Si es la primera vez que usa Azure Artifacts con npm, asegúrese de que ha instalado los requisitos previos.
Siga las instrucciones de la sección Configuración del proyecto para conectarse a la fuente.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y pegue el siguiente fragmento de código en él.
Copie el siguiente fragmento de código y péguelo en el archivo npmrc de nivel de usuario:
Fuente con ámbito de la organización:
; 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
Fuente con ámbito de proyecto:
; 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite. Una vez hecho esto, copie el valor codificado en Base 64 generado.
Si está en Linux/Mac, también puede usar el siguiente comando para convertir el token de acceso personal en Base 64. Copie el valor codificado en Base64 resultante.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Reemplace los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo .npmrc de usuario por el token de acceso personal codificado obtenido del paso anterior.
Inicie sesión en su colección de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Seleccione npm en la barra lateral izquierda y siga las instrucciones de la sección Configuración del proyecto para configurar el archivo de configuración.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y pegue el siguiente fragmento de código en él.
Copie el siguiente fragmento de código y péguelo en el archivo .npmrc de nivel de usuario:
Fuente con ámbito de colección:
; 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
Fuente con ámbito de proyecto:
; 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite. Una vez hecho esto, copie el valor codificado en Base 64 generado.
Reemplace los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo .npmrc de usuario por el token de acceso personal codificado obtenido del paso anterior.
Inicie sesión en su colección de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Seleccione npm de la izquierda y siga las instrucciones de Configuración del proyecto para configurar el archivo de configuración.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo de package.json y pegue el siguiente fragmento de código en él:
Copie el siguiente fragmento de código y péguelo en el archivo .npmrc de nivel de usuario:
Fuente con ámbito de colección:
; 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
Fuente con ámbito de proyecto:
; 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite. Una vez hecho esto, copie el valor codificado en Base 64 generado.
Reemplace los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo .npmrc de usuario por el token de acceso personal codificado obtenido del paso anterior.
Inicie sesión en su colección de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Aparecerá una ventana nueva. En el panel de navegación izquierdo, seleccione npm.
Siga las instrucciones proporcionadas para configurar el proyecto y los archivos .npmrc de usuario .
Sugerencia
El uso de varios registros en archivos .npmrc se admite con ámbitos y orígenes ascendentes.
Autenticación de canalización
Para autenticarse con la canalización, Azure Artifacts recomienda usar la tarea de autenticación de npm.
Al usar ejecutores de tareas como gulp o Grunt, es priorizar la configuración de la tarea de autenticación de npm al principio de la canalización. Este paso garantiza que las credenciales se insertan en el archivo .npmrc del proyecto y se conservan a lo largo de la ejecución de la canalización, lo que permite que los pasos posteriores accedan a las credenciales en el archivo de configuración.
Vaya al proyecto, seleccione Canalizaciones y, a continuación, seleccione la definición de canalización.
Seleccione Editar para modificar la canalización.
Seleccione + esta opción para agregar una nueva tarea a la canalización.
Vaya al proyecto, seleccione Pipelines Builds (Compilaciones>de canalizaciones) y, a continuación, seleccione la definición de compilación.
Seleccione Editar para modificar la canalización de compilación.
Seleccione + esta opción para agregar una nueva tarea a la canalización de compilación.
Busque la tarea Autenticación de npm y, a continuación, seleccione Agregar.
Seleccione el archivo .npmrc y, a continuación, seleccione Guardar y cola cuando haya terminado.
- 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 acceder a la fuente desde la canalización, asegúrese de que el rol de servicio de compilación esté establecido en Lector de fuente y ascendente (colaborador) en los permisos de configuración>de fuentes.
Nota:
Si su organización usa un firewall o un servidor proxy, asegúrese de permitir las direcciones URL de dominio adecuadas. Consulte Direcciones IP permitidas y direcciones URL de dominio para obtener más información.
Solución de problemas
vsts-npm-auth no se reconoce
Este error indica que la carpeta de módulos npm no se ha agregado a la ruta de acceso. Vuelva a ejecutar la configuración de Node.js y asegúrese de seleccionar la Add to PATH opción . Como alternativa, puede agregar la carpeta de módulos npm a la ruta de acceso modificando la variable PATH a %APPDATA%\npm en el símbolo del sistema o $env:APPDATA\npm en PowerShell.
No se puede autenticar
Error: código E401 npm ERR! No se puede autenticar: -> Ejecute el comando con la vsts-npm-auth marca -F para volver a autenticar:
vsts-npm-auth -config .npmrc -F
Restablecer vsts-npm-auth
Siga estos pasos para restablecer las credenciales de vsts-npm-auth:
Si se produce un error 403, puede indicar un conflicto de nombres. En Azure Artifacts, los paquetes son inmutables, lo que significa que una vez que publica un paquete en la fuente, su número de versión está reservado permanentemente. Incluso si lo elimina, no puede publicar un nuevo paquete con el mismo número de versión. Para solucionar este problema, actualice la versión del paquete en el archivo package.json e inténtelo de nuevo.