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. Seleccione la pestaña correspondiente al entorno de desarrollo:
Nota
vsts-npm-auth no se admite en Azure DevOps Server.
Inicie sesión en la organización de Azure DevOps y vaya al 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 su fuente.
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:
Feed con ámbito de 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
Ejecuta el siguiente comando en una ventana de comandos y, cuando se te solicite, pega tu token de acceso personal. 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 de .npmrc del usuario por el token de acceso personal codificado obtenido del paso anterior.
Inicie sesión en la colección de Azure DevOps y vaya al 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 su 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
Ejecute el siguiente comando en una ventana de símbolo del sistema y, a continuación, pegue su 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 de .npmrc del usuario por el token de acceso personal codificado obtenido del paso anterior.
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
Ejecute el siguiente comando en una ventana de símbolo del sistema y, a continuación, pegue su 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 de .npmrc del usuario por el token de acceso personal codificado obtenido del paso anterior.
Inicie sesión en la colección de Azure DevOps y vaya al proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Aparecerá una nueva ventana. En el panel de navegación izquierdo, seleccione npm.
Siga las instrucciones proporcionadas para configurar el proyecto y los archivos .npmrc del usuario .
Al usar ejecutores de tareas como gulp o Grunt, debería priorizar la configuración de su tarea de autenticación de npm al principio de su pipeline. Este paso garantiza que tus credenciales se insertan en el archivo .npmrc de tu proyecto y se mantienen a lo largo de la ejecución del pipeline, permitiendo que los pasos posteriores accedan a las credenciales en tu archivo de configuración.
Vaya al proyecto, seleccione Pipelines y, a continuación, seleccione la definición de pipeline.
Seleccione Editar para modificar la canalización.
Seleccione + para agregar una nueva tarea al proceso.
Navegue a su proyecto, seleccione Pipelines>Compilacionesy, a continuación, seleccione su definición de compilación.
Seleccione Editar para modificar la canalización de compilación.
Seleccione + para agregar una nueva tarea a la canalización de compilación.
Busque la tarea npm Authenticate y, a continuación, seleccione Add.
Seleccione el archivo .npmrc y, a continuación, seleccione Guardar & 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 su feed desde tu canalización, asegúrese de que el rol de servicio de compilación esté establecido en Lector de feed y lector ascendente (Colaborador) en Configuración de feed>Permisos.
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 opción Add to PATH. Como alternativa, puede agregar la carpeta de módulos npm a la ruta modificando la variable PATH para %APPDATA%\npm en la línea de comandos o $env:APPDATA\npm en PowerShell.
No se puede autenticar
Error: código E401 npm ERR! No se puede autenticar:> Ejecute el comando vsts-npm-auth con la 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 publicas un paquete en tu feed, 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.