Partager via


npmAuthenticate@0 - tâche npm authenticate (pour les exécuteurs de tâches) v0

Utilisez cette tâche pour fournir des npm informations d’identification à un .npmrc fichier dans votre référentiel pour l’étendue de la build. Cela permet à npm, ainsi qu’aux exécuteurs de tâches tels que npm gulp et Grunt, de s’authentifier auprès de registres privés.

Syntaxe

# 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.
# 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. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this account/collection.

Entrées

workingFile - Fichier .npmrc à authentifier
string. Obligatoire.

Chemin d’accès au .npmrc fichier qui spécifie les registres avec lesquels vous souhaitez travailler. Sélectionnez le fichier, et non le dossier, tel que /packages/mypackage.npmrc.


workingFile - Fichier .npmrc à authentifier
string.

Chemin d’accès au .npmrc fichier qui spécifie les registres avec lesquels vous souhaitez travailler. Sélectionnez le fichier, et non le dossier, tel que /packages/mypackage.npmrc.


customEndpoint - Informations d’identification pour les registres en dehors de cette organisation/collection
string.

Liste séparée par des virgules des noms de connexion de service npm pour les registres en dehors de cette organisation ou de cette collection. Le fichier spécifié .npmrc doit contenir des entrées de Registre correspondant aux connexions de service. Si vous avez uniquement besoin de registres dans cette organisation ou collection, laissez ce champ vide. Les informations d’identification de la build sont utilisées automatiquement.


customEndpoint - Informations d’identification pour les registres en dehors de ce compte/collection
string.

Liste séparée par des virgules des noms de connexion de service npm pour les registres en dehors de cette organisation ou de cette collection. Le fichier spécifié .npmrc doit contenir des entrées de Registre correspondant aux connexions de service. Si vous avez uniquement besoin de registres dans cette organisation ou collection, laissez ce champ vide. Les informations d’identification de la build sont utilisées automatiquement.


Options de contrôle des tâches

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâche. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Utilisez cette tâche pour fournir des npm informations d’identification à un .npmrc fichier dans votre référentiel pour l’étendue de la build. Cela permet à npm, ainsi qu’aux exécuteurs de tâches tels que npm gulp et Grunt, de s’authentifier auprès de registres privés.

Comment fonctionne cette tâche ?

Cette tâche recherche les entrées du Registre dans le fichier spécifié .npmrc , puis ajoute les détails d’authentification des registres découverts à la fin du fichier. Pour tous les registres de l’organisation/collection actuelle, les informations d’identification de la build sont utilisées. Pour les registres d’une autre organisation ou hébergés par un tiers, les URI du Registre seront comparés aux URI des connexions de service npm spécifiées par l’entrée customEndpoint , et les informations d’identification correspondantes seront utilisées. Le .npmrc fichier est rétabli à son état d’origine à la fin de l’exécution du pipeline.

Quand dans mon pipeline dois-je exécuter cette tâche ?

Cette tâche doit s’exécuter avant d’utiliser npm, ou un exécuteur de npm tâches, pour installer ou envoyer (push) des packages vers un dépôt npm authentifié tel qu’Azure Artifacts. Il n’existe aucune autre exigence de classement.

J’ai plusieurs projets npm. Dois-je exécuter cette tâche pour chaque fichier .npmrc ?

Cette tâche n’ajoute les détails d’authentification qu’à un .npmrc seul fichier à la fois. Si vous avez besoin d’une authentification pour plusieurs .npmrc fichiers, vous pouvez exécuter la tâche plusieurs fois, une fois pour chaque .npmrc fichier. Vous pouvez également créer un .npmrc fichier qui spécifie tous les registres utilisés par vos projets, en cours d’exécution npmAuthenticate sur ce .npmrc fichier, puis définir une variable d’environnement pour désigner ce .npmrc fichier comme fichier de configuration npm par utilisateur.

- 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

Mon agent se trouve derrière un proxy web. Sera-t-il npmAuthenticate configuré npm/gulp/Grunt pour utiliser mon proxy ?

La réponse est négative. Bien que cette tâche elle-même fonctionne derrière un proxy web que votre agent a été configuré pour utiliser, elle ne configure npm pas ou npm exécuteurs de tâches pour utiliser le proxy.

Pour ce faire, vous pouvez :

  • Définissez les variables http_proxy/https_proxy d’environnement et éventuellement no_proxy vos paramètres de proxy. Pour plus d’informations, consultez configuration npm . Notez qu’il s’agit de variables couramment utilisées que d’autresnpm outils (par exemple, curl) peuvent également utiliser.

  • Ajoutez les paramètres de proxy à la configuration npm, soit manuellement, à l’aide du jeu de configuration npm, soit en définissant des variables d’environnement précédées NPM_CONFIG_de .

    Attention :
    npm Les exécuteurs de tâches peuvent ne pas être compatibles avec toutes les méthodes de configuration de proxy prises en charge par npm.

  • Spécifiez le proxy avec un indicateur de ligne de commande lors de l’appel npmde .

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

Si votre proxy nécessite une authentification, vous devrez peut-être ajouter une étape de génération supplémentaire pour construire un URI de proxy authentifié.

- 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)

Mon pipeline doit accéder à un flux dans un autre projet

Si le pipeline s’exécute dans un projet différent du projet hébergeant le flux, vous devez configurer l’autre projet pour accorder un accès en lecture/écriture au service de build. Pour plus d’informations, consultez Autorisations de package dans Azure Pipelines .

Exemples

Restaurer npm des packages pour votre projet à partir d’un registre au sein de votre organisation

Si les seuls registres authentifiés que vous utilisez sont des registres Azure Artifacts dans votre organisation, il vous suffit de spécifier le chemin d’accès à un .npmrc fichier de la npmAuthenticate tâche.

.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

Restaurer et publier npm des packages en dehors de votre organisation

Si votre .npmrc contient des registres Azure Artifacts d’une autre organisation ou si vous utilisez un dépôt de packages authentifié tiers, vous devez configurer les connexions de service npm et les spécifier dans l’entrée customEndpoint . Les registres au sein de votre organisation Azure Artifacts seront également authentifiés automatiquement.

.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

L’URL du Registre pointant vers un flux Azure Artifacts peut contenir ou non le projet. Une URL pour un flux de projet doit contenir le projet, et l’URL d’un flux d’étendue d’organisation ne doit pas contenir le projet. En savoir plus sur les flux délimités par le projet.

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/

OtherOrganizationNpmConnection et ThirdPartyRepositoryNpmConnection sont les noms des connexions de service npm qui ont été configurées et autorisées à être utilisées dans votre pipeline, et ont des URL qui correspondent à celles du fichier spécifié .npmrc .

Spécifications

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent 2.115.0 ou version ultérieure
Catégorie de la tâche Package