Partager via


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

Utilisez cette tâche pour fournir npm informations d’identification à un fichier .npmrc dans votre référentiel pour l’étendue de la build. Cela permet npm, ainsi que les exécuteurs de tâches npm comme 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.

Entrées

workingFile - fichier .npmrc pour authentifier
string. Obligatoire.

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


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

Liste séparée par des virgules de connexion de service npm noms des registres en dehors de cette organisation ou de cette collection. Le fichier .npmrc spécifié 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 cette valeur vide. Les informations d’identification de la build sont utilisées automatiquement.


Options de contrôle de la tâche

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

Variables de sortie

Aucun.

Remarques

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

Comment cette tâche fonctionne-t-elle ?

Cette tâche recherche le fichier .npmrc spécifié pour les entrées du Registre, puis ajoute des détails d’authentification pour les 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 de Registre sont 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 fichier .npmrc sera 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 tâches npm, pour installer ou envoyer (push) des packages vers un référentiel 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 que les détails d’authentification à un seul fichier .npmrc à la fois. Si vous avez besoin d’authentification pour plusieurs fichiers .npmrc, vous pouvez exécuter la tâche plusieurs fois, une fois pour chaque fichier .npmrc. Vous pouvez également créer un fichier .npmrc qui spécifie tous les registres utilisés par vos projets, en exécutant npmAuthenticate sur ce fichier .npmrc, puis en définissant une variable d’environnement pour désigner ce fichier .npmrc 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. npmAuthenticate configurera-t-elle 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 votre agent a été configuré pour utiliser, il ne configure pas npm ou npm exécuteurs de tâches pour utiliser le proxy.

Pour ce faire, vous pouvez :

  • Définissez les variables d’environnement http_proxy/https_proxy et éventuellement no_proxy sur vos paramètres proxy. Pour plus d’informations, consultez configuration npm. Notez que ces variables sont couramment utilisées, que d’autres outils nonnpm (par exemple curl) peuvent également utiliser.

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

    Important

    npm 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 de npm.

    - 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 génération. Pour plus d’informations, consultez autorisations de package dans Azure Pipelines.

Exemples

Restaurer npm 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, vous devez uniquement spécifier le chemin d’accès à un fichier .npmrc à la tâche de 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

Restaurer et publier des packages npm en dehors de votre organisation

Si votre .npmrc contient des registres Azure Artifacts d’une autre organisation ou utilisez un référentiel de package authentifié tiers, vous devez configurer connexions de service npm et les spécifier dans l’entrée customEndpoint. Les registres au sein de votre organisation Azure Artifacts sont é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 d’étendue de projet doit contenir le projet, et l’URL d’un flux délimité par l’organisation ne doit pas contenir le projet. En savoir plus sur flux délimités par le projet.

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 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 .npmrc spécifié.

Spécifications

Besoin Descriptif
Types de pipelines YAML, Build Classique, Version Classique
Exécutions sur Agent, DeploymentGroup
demandes Aucun
fonctionnalités de Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail.
restrictions de commande N'importe quel
variables settables N'importe quel
Version de l’agent 2.115.0 ou version ultérieure
Catégorie de tâche Paquet