Compartir a través de


npmAuthenticate@0: tarea de autenticación de npm (para ejecutores de tareas) v0

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

Sintaxis

# npm authenticate (for task runners) v0
# 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 task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    #azureDevOpsServiceConnection: # string. Alias: workloadIdentityServiceConnection. 'Azure DevOps' Service Connection. 
    #feedUrl: # string. Azure Artifacts URL. 
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.
# npm authenticate (for task runners) v0
# 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 task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.

Entradas

azureDevOpsServiceConnection - 'Azure DevOps' Conexión de Servicio
Alias de entrada: workloadIdentityServiceConnection. string.

Si esto está activado, feedUrl es obligatorio. Las conexiones de servicio para organizaciones/colecciones externas y endpoints personalizados no son compatibles.


Azure Artifacts URL
string.

Si esto está activado, workloadIdentityServiceConnection es obligatorio. No es compatible con customEndpoint. La URL del feed debe estar en formato de npm registro: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/npm/registry/.


workingFile - archivo .npmrc para autenticar
string. Obligatorio.

Ruta de acceso al archivo .npmrc que especifica los registros con los que desea trabajar. Seleccione el archivo, no la carpeta , como /packages/mypackage.npmrc.


customEndpoint - Credenciales para registros fuera de esta organización o colección
string.

Lista separada por comas de conexión de servicio npm nombres de registros fuera de esta organización o colección. El archivo .npmrc especificado 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.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.

Variables de salida

Ninguno.

Observaciones

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

¿Cómo funciona esta tarea?

Esta tarea busca en las entradas del Registro el archivo de .npmrc especificado y, a continuación, anexa los detalles de autenticación de los registros detectados al 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 del servicio npm de especificadas por la entrada customEndpoint y se usarán las credenciales correspondientes. El archivo .npmrc 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 que utilices npm, o un ejecutor de tareas npm, para instalar o enviar paquetes a 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 un archivo .npmrc a la vez. Si necesita autenticación para varios archivos de .npmrc, puede ejecutar la tarea varias veces, una vez por cada archivo .npmrc. Como alternativa, considere la posibilidad de crear un archivo de .npmrc que especifique todos los registros usados por los proyectos, ejecutando npmAuthenticate en este archivo .npmrc y, a continuación, estableciendo una variable de entorno para designar este archivo .npmrc como archivo de configuración npm por 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. ¿npmAuthenticate configurará npm/gulp/Grunt para usar mi proxy?

La respuesta es no. Aunque esta tarea funcionará detrás de un proxy web el agente se ha configurado para usar, no configura npm ni npm ejecutores de tareas para usar el proxy.

Para ello, puede:

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

  • Agregue la configuración del proxy al configuración de npm, ya sea manualmente, mediante conjunto de configuración de npmo estableciendo variables de entorno prefijos con NPM_CONFIG_.

    Importante

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

  • Especifique 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. Consulta Package en Azure Pipelines para más detalles.

Ejemplos

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

Si los únicos registros autenticados que usas son Azure Artifacts registros de tu organización, solo necesitas especificar la ruta hacia 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 de npm fuera de la organización

Si tu .npmrc contiene registros Azure Artifacts de otra organización o utiliza un repositorio de paquetes autenticado de terceros, tendrás que configurar conexiones de servicio npm y especificarlas en la entrada customEndpoint. Los registros dentro de tu organización Azure Artifacts también serán autenticados 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 URL del registro que apunta a un feed de Azure Artifacts puede o no contener el proyecto. Una dirección URL de 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. Obtenga más información sobre fuentes con ámbito de proyecto.

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection # Name of your service connection
- script: npm ci

- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection y ThirdPartyRepositoryNpmConnection son los nombres de 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 archivo de .npmrc especificado.

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
demandas Ninguno
funcionalidades de Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquiera
variables settable Cualquiera
Versión del agente 2.115.0 o superior
Categoría de tarea Paquete