Freigeben über


npmAuthenticate@0 – npm-Authentifizierung (für Aufgabenläufer) v0-Aufgabe

Verwenden Sie diese Aufgabe, um npm Anmeldeinformationen für eine .npmrc Datei in Ihrem Repository für den Umfang des Builds bereitzustellen. Auf diese Weise können npmsowie npm Aufgabenläufer wie gulp und Grunt sich bei privaten Registern authentifizieren.

Syntax

# 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.

Eingänge

workingFile - NPMRC-Datei zum Authentifizieren von
string. Erforderlich.

Der Pfad zur datei .npmrc, die die Registrierungen angibt, mit denen Sie arbeiten möchten. Wählen Sie die Datei und nicht den Ordner aus, z. B. /packages/mypackage.npmrc.


customEndpoint - Anmeldeinformationen für Registrierungen außerhalb dieser Organisation/Sammlung
string.

Die durch Trennzeichen getrennte Liste npm-Dienstverbindung Namen für Registrierungen außerhalb dieser Organisation oder Sammlung. Die angegebene .npmrc Datei muss Registrierungseinträge enthalten, die den Dienstverbindungen entsprechen. Wenn Sie nur Registrierungen in dieser Organisation oder Sammlung benötigen, lassen Sie diese leer. Die Anmeldeinformationen des Builds werden automatisch verwendet.


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.

Ausgabevariablen

Keiner.

Bemerkungen

Verwenden Sie diese Aufgabe, um npm Anmeldeinformationen für eine .npmrc Datei in Ihrem Repository für den Umfang des Builds bereitzustellen. Auf diese Weise können npmsowie npm Aufgabenläufer wie gulp und Grunt sich bei privaten Registern authentifizieren.

Wie funktioniert diese Aufgabe?

Diese Aufgabe durchsucht die angegebene .npmrc Datei nach Registrierungseinträgen und fügt dann Authentifizierungsdetails für die ermittelten Registrierungen am Ende der Datei an. Für alle Registrierungen in der aktuellen Organisation/Sammlung werden die Anmeldeinformationen des Builds verwendet. Bei Registrierungen in einer anderen Organisation oder gehostet von einem Drittanbieter werden die Registrierungs-URIs mit den URIs der npm-Dienstverbindungen verglichen, durch die customEndpoint Eingabe angegeben, und die entsprechenden Anmeldeinformationen werden verwendet. Die .npmrc Datei wird am Ende der Pipelineausführung in den ursprünglichen Zustand zurückgesetzt.

Wann sollte ich diese Aufgabe in meiner Pipeline ausführen?

Diese Aufgabe muss ausgeführt werden, bevor Sie npmoder einen npm Aufgabenläufer verwenden, um Pakete in einem authentifizierten npm-Repository wie Azure Artifacts zu installieren oder zu übertragen. Es gibt keine weiteren Bestellanforderungen.

Ich habe mehrere npm-Projekte. Muss ich diese Aufgabe für jede NPMRC-Datei ausführen?

Diese Aufgabe fügt jeweils nur Authentifizierungsdetails zu einer .npmrc Datei hinzu. Wenn Sie eine Authentifizierung für mehrere .npmrc Dateien benötigen, können Sie die Aufgabe mehrmals für jede .npmrc Datei ausführen. Alternativ können Sie eine .npmrc Datei erstellen, die alle von Ihren Projekten verwendeten Registrierungen angibt, npmAuthenticate für diese .npmrc Datei ausführt, und dann eine Umgebungsvariable festlegen, um diese .npmrc Datei als npm-Konfigurationsdatei pro Benutzer festzulegen.

- 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

Mein Agent liegt hinter einem Webproxy. Wird npmAuthenticatenpm/gulp/Grunt für die Verwendung meines Proxys eingerichtet?

Nein, das ist nicht möglich. Während diese Aufgabe selbst hinter einem Webproxy funktioniert, Ihr Agent für die Verwendungkonfiguriert wurde, konfiguriert er nicht npm oder npm Aufgabenläufer für die Verwendung des Proxys.

Dazu können Sie eine der folgenden Aktionen ausführen:

  • Legen Sie die Umgebungsvariablen http_proxy/https_proxy und optional auf Ihre Proxyeinstellungen no_proxy fest. Weitere Informationen finden Sie unter npm config. Beachten Sie, dass es sich hierbei um häufig verwendete Variablen handelt, die auch andere Nicht-npm-Tools (z. B. Curl) verwenden können.

  • Fügen Sie die Proxyeinstellungen der npm-Konfiguration, entweder manuell, mithilfe npm config set, oder durch Festlegen Umgebungsvariablen Präfix mit dem Präfix NPM_CONFIG_.

    Vorsicht:
    npm Aufgabenläufer sind möglicherweise nicht mit allen Methoden der Proxykonfiguration kompatibel, die von npmunterstützt werden.

  • Geben Sie den Proxy mit einer Befehlszeilenkennzeichnung beim Aufrufen von npman.

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

Wenn Ihr Proxy eine Authentifizierung erfordert, müssen Sie möglicherweise einen zusätzlichen Buildschritt hinzufügen, um einen authentifizierten Proxy-URI zu erstellen.

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

Meine Pipeline muss auf einen Feed in einem anderen Projekt zugreifen.

Wenn die Pipeline in einem anderen Projekt ausgeführt wird als das Projekt, das den Feed hostet, müssen Sie das andere Projekt einrichten, um Lese-/Schreibzugriff auf den Builddienst zu gewähren. Weitere Informationen finden Sie unter Paketberechtigungen in Azure Pipelines.

Beispiele

Wiederherstellen npm Pakete für Ihr Projekt aus einer Registrierung innerhalb Ihrer Organisation

Wenn die einzigen authentifizierten Registrierungen, die Sie verwenden, Azure Artifacts-Registrierungen in Ihrer Organisation sind, müssen Sie nur den Pfad zu einer .npmrc Datei zur npmAuthenticate Aufgabe angeben.

.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

Wiederherstellen und Veröffentlichen von npm Paketen außerhalb Ihrer Organisation

Wenn Ihre .npmrc Azure Artifacts-Registrierungen aus einer anderen Organisation enthält oder ein authentifiziertes Paket-Repository eines Drittanbieters verwendet, müssen Sie npm-Dienstverbindungen einrichten und in der customEndpoint Eingabe angeben. Registrierungen innerhalb Ihrer Azure Artifacts-Organisation werden ebenfalls automatisch authentifiziert.

.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

Die Registrierungs-URL, die auf einen Azure Artifacts-Feed verweist, kann oder nicht das Projekt enthalten. Eine URL für einen Projektbereichsfeed muss das Projekt enthalten, und die URL für einen organisationsbezogenen Feed darf das Projekt nicht enthalten. Erfahren Sie mehr über projektbezogenen Feeds.

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 und ThirdPartyRepositoryNpmConnection sind die Namen von npm-Dienstverbindungen, die für die Verwendung in Ihrer Pipeline konfiguriert und autorisiert wurden, und urLs enthalten, die mit denen in der angegebenen .npmrc Datei übereinstimmen.

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Classic Build, Classic Release
Läuft auf Agent, DeploymentGroup
Anforderungen Nichts
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Jegliche
Settable-Variablen Jegliche
Agentversion 2.115.0 oder höher
Vorgangskategorie Paket