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 npm
sowie 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 npm
sowie npm
Aufgabenläufer wie gulp und Grunt sich bei privaten Registern authentifizieren.
- Wie funktioniert diese Aufgabe?
- Wann sollte ich diese Aufgabe in meiner Pipeline ausführen?
- Ich habe mehrere npm-Projekte. Muss ich diese Aufgabe für jede NPMRC-Datei ausführen?
- Mein Agent liegt hinter einem Webproxy. Wird
npmAuthenticate
npm/gulp/Grunt
für die Verwendung meines Proxys eingerichtet? - "Meine Pipeline" muss auf einen Feed in einem anderen Projekt zugreifen
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 npm
oder 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 npmAuthenticate
npm/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 Proxyeinstellungenno_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 vonnpm
unterstützt werden.Geben Sie den Proxy mit einer Befehlszeilenkennzeichnung beim Aufrufen von
npm
an.- 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 von
npm
Paketen für Ihr Projekt aus einer Registrierung innerhalb Ihrer Organisation -
Wiederherstellen und Veröffentlichen von
npm
Paketen außerhalb Ihrer Organisation - npmrc
- npm
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 |