Paquete: npm Authenticate (tarea) (para ejecutores de tareas)

Azure Pipelines

Use esta tarea para proporcionar credenciales de npm a .npmrc un archivo del repositorio para el ámbito de la compilación. Esto permite que npm, así como los ejecutores de tareas npm como Gulp y Grunt, se autentiquen con registros privados.

Fragmento de código YAML

# npm authenticate
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm and npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    #workingFile:
    #customEndpoint: # Optional

Argumentos

Argumento Descripción
workingFile
Archivo .npmrc para autenticarse
Ruta de acceso al archivo .npmrc que especifica los registros con los que desea trabajar. Seleccione el archivo, no la carpeta.
Por ejemplo/packages/mypackage.npmrc"
customEndpoint
Credenciales para registros fuera de esta organización o colección
(Opcional) Lista separada por comas de nombres de conexión de servicio npmpara registros fuera de esta organización o colección. El archivo especificado .npmrc debe contener entradas del Registro correspondientes a las conexiones de servicio. Si solo necesita registros en esta organización o colección, déjelo en blanco. Las credenciales de la compilación se usan automáticamente.

Ejemplos

Restauración de paquetes npm para el proyecto desde un registro dentro de la organización

Si los únicos registros autenticados que usa son Azure Artifacts registros de su organización, solo debe especificar la ruta de acceso a un archivo .npmrc a la tarea npmAuthenticate.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
- script: npm ci
# ...
- script: npm publish

Restauración y publicación de paquetes npm fuera de la organización

Si contiene Azure Artifacts registros de una organización diferente o usa un repositorio de paquetes autenticados de terceros, deberá configurar conexiones de servicio npm y especificarlas en la .npmrc.npmrccustomEndpoint entrada. Los registros dentro de Azure Artifacts organización también se autenticarán automáticamente.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true

La dirección URL del Registro que apunta a Azure Artifacts fuente puede contener o no el proyecto. Una dirección URL para una fuente con ámbito de proyecto debe contener el proyecto y la dirección URL de una fuente con ámbito de organización no debe contener el proyecto. Más información.

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnectiony son los nombres de las conexiones de servicio npm que se han configurado y autorizado para su uso en la canalización, y tienen direcciones URL que coinciden con las del ThirdPartyRepositoryNpmConnection archivo OtherOrganizationNpmConnection.npmrc especificado.

Código Abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

¿Cómo funciona esta tarea?

Esta tarea busca entradas del Registro en el archivo especificado y, a continuación, anexa los detalles de autenticación de los registros detectados al .npmrc final del archivo. Para todos los registros de la organización o colección actuales, se usan las credenciales de la compilación. En el caso de los registros de una organización diferente o hospedados por un tercero, los URI del registro se compararán con los URI de las conexiones de servicio npm especificadas por la entrada, y se usarán las credenciales correspondientes. El .npmrc archivo se revertirá a su estado original al final de la ejecución de la canalización.

¿Cuándo debo ejecutar esta tarea en mi canalización?

Esta tarea debe ejecutarse antes de usar npm, o un ejecutor de tareas npm, para instalar o insertar paquetes en un repositorio npm autenticado, como Azure Artifacts. No hay ningún otro requisito de ordenación.

Tengo varios proyectos de npm. ¿Es necesario ejecutar esta tarea para cada archivo .npmrc?

Esta tarea solo agregará detalles de autenticación a .npmrc un archivo a la vez. Si necesita autenticación para varios archivos, puede ejecutar la tarea .npmrc varias veces, una para cada .npmrc archivo. Como alternativa, considere la posibilidad de crear un archivo que especifique todos los registros usados por los proyectos, ejecutar npmAuthenticate en este archivo y, a continuación, establecer una variable de entorno para designar este archivo como el archivo de configuración npm por .npmrc.npmrc.npmrc usuario.

- task: npmAuthenticate@0
  inputs:
    workingFile: $(agent.tempdirectory)/.npmrc
- script: echo ##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(agent.tempdirectory)/.npmrc
- script: npm ci
  workingDirectory: project1
- script: npm ci
  workingDirectory: project2

Mi agente está detrás de un proxy web. ¿Configurará npmAuthenticate npm/gulp/Grunt para usar mi proxy?

La respuesta es no. Aunque esta propia tarea funcionará detrás de un proxyweb que el agente ha configurado para usar , no configura ejecutores de tareas npm o npm para usar el proxy.

Para ello, puede:

  • Establezca las variables de http_proxy/https_proxy entorno y, no_proxy opcionalmente, en la configuración del proxy. Consulte npm config (configuración de npm) para obtener más información. Tenga en cuenta que se trata de variables de uso frecuente que también pueden usar otras herramientas que no son npm (por ejemplo, curl).

  • Agregue la configuración de proxy a la configuración de npm, ya sea manualmente, mediante npm config seto estableciendo variables de entorno con el prefijo .

    Precaución:
    Es posible que los ejecutores de tareas npm no sean compatibles con todos los métodos de configuración de proxy admitidos por npm.

  • Especificar el proxy con una marca de línea de comandos al llamar a npm

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Si el proxy requiere autenticación, es posible que tenga que agregar un paso de compilación adicional para construir un URI de proxy autenticado.

- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)

Mi canalización debe acceder a una fuente en un proyecto diferente

Si la canalización se ejecuta en un proyecto diferente al que hospeda la fuente, debe configurar el otro proyecto para conceder acceso de lectura y escritura al servicio de compilación. Consulte Permisos de paquete en Azure Pipelines para obtener más detalles.