npmAuthenticate@0 - npm 認証 (タスク ランナーの場合) v0 タスク
このタスクを使用して、ビルドの.npmrc
スコープのリポジトリ内のファイルに資格情報を指定npm
します。 これにより、 npm
npm
だけでなく、gulp や Grunt などのタスク ランナーもプライベート レジストリで認証できます。
構文
# 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.
入力
workingFile
- 認証する .npmrc ファイル
string
. 必須です。
操作する .npmrc
レジストリを指定するファイルへのパス。 フォルダーではなく、ファイルを選択します (例: /packages/mypackage.npmrc
)。
workingFile
- 認証する .npmrc ファイル
string
.
操作する .npmrc
レジストリを指定するファイルへのパス。 フォルダーではなく、ファイルを選択します (例: /packages/mypackage.npmrc
)。
customEndpoint
- この組織またはコレクション以外のレジストリの資格情報
string
.
この組織またはコレクションの外部のレジストリの npm サービス接続 名のコンマ区切りの一覧。 指定した .npmrc
ファイルには、サービス接続に対応するレジストリ エントリが含まれている必要があります。 この組織またはコレクションにレジストリのみが必要な場合は、この空白のままにします。 ビルドの資格情報が自動的に使用されます。
customEndpoint
- このアカウント/コレクション以外のレジストリの資格情報
string
.
この組織またはコレクションの外部のレジストリの npm サービス接続 名のコンマ区切りの一覧。 指定した .npmrc
ファイルには、サービス接続に対応するレジストリ エントリが含まれている必要があります。 この組織またはコレクションにレジストリのみが必要な場合は、この空白のままにします。 ビルドの資格情報が自動的に使用されます。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。
出力変数
[なし] :
解説
このタスクを使用して、ビルドの.npmrc
スコープのリポジトリ内のファイルに資格情報を指定npm
します。 これにより、 npm
npm
だけでなく、gulp や Grunt などのタスク ランナーもプライベート レジストリで認証できます。
- このタスクはどのように機能しますか?
- パイプラインでこのタスクを実行する必要があるのはいつですか?
- 複数の npm プロジェクトがあります。 .npmrc ファイルごとにこのタスクを実行する必要がありますか?
- エージェントが Web プロキシの背後にあります。 プロキシを使用するように設定
npm/gulp/Grunt
されますかnpmAuthenticate
? - パイプラインが別のプロジェクトのフィードにアクセスする必要がある
このタスクはどのように機能しますか?
このタスクでは、指定した .npmrc
ファイルでレジストリ エントリが検索され、検出されたレジストリの認証の詳細がファイルの末尾に追加されます。 現在の組織またはコレクション内のすべてのレジストリでは、ビルドの資格情報が使用されます。 別の組織またはサードパーティによってホストされているレジストリの場合、レジストリ URI は入力によってcustomEndpoint
指定された npm サービス接続の URI と比較され、対応する資格情報が使用されます。 ファイルは .npmrc
、パイプラインの実行の最後に元の状態に戻されます。
パイプラインでこのタスクを実行する必要があるのはいつですか?
このタスクは、Azure Artifacts などの認証された npm リポジトリにパッケージをインストールまたはプッシュするために、 またはnpm
タスク ランナーを使用npm
する前に実行する必要があります。 その他の順序付けの要件はありません。
複数の npm プロジェクトがあります。 .npmrc ファイルごとにこのタスクを実行する必要がありますか?
このタスクでは、一度に 1 つの .npmrc
ファイルにのみ認証の詳細が追加されます。 複数 .npmrc
のファイルに対して認証が必要な場合は、ファイルごとに .npmrc
1 回、タスクを複数回実行できます。 または、プロジェクトで使用されるすべてのレジストリを .npmrc
指定し、このファイルで実行 npmAuthenticate
し、環境変数 .npmrc
を設定してこの .npmrc
ファイルを npm ユーザーごとの構成ファイルとして指定するファイルを作成することを検討してください。
- 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
エージェントが Web プロキシの背後にあります。 プロキシを使用するように設定npm/gulp/Grunt
されますかnpmAuthenticate
?
答えはノーです。 このタスク自体は、エージェントが使用するように構成されている Web プロキシの背後で機能しますが、プロキシを使用するように構成またはnpm
タスク ランナーは構成npm
しません。
これを行うには、次のいずれかを行います。
環境変数
http_proxy
/https_proxy
を設定し、必要にno_proxy
応じてプロキシ設定に設定します。 詳細については、 npm 構成 に関するページを参照してください。 これらは、他の非npm
ツール (curl など) も使用する可能性がある一般的に使用される変数であることに注意してください。npm 構成にプロキシ設定を追加します。手動で npm 構成セットを使用するか、 でプレフィックスが付いた
NPM_CONFIG_
環境変数を設定します。注意:
npm
タスク ランナーは、 でnpm
サポートされているプロキシ構成のすべてのメソッドと互換性がない場合があります。を呼び出
npm
すときに、コマンド ライン フラグを使用してプロキシを指定します。- script: npm ci --https-proxy $(agent.proxyurl)
プロキシで認証が必要な場合は、認証されたプロキシ URI を構築するための追加のビルド 手順を追加する必要がある場合があります。
- 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)
パイプラインが別のプロジェクトのフィードにアクセスする必要がある
フィードをホストしているプロジェクトとは異なるプロジェクトでパイプラインが実行されている場合は、他のプロジェクトを設定して、ビルド サービスへの読み取り/書き込みアクセス権を付与する必要があります。 詳細については、「 Azure Pipelines でのパッケージのアクセス許可 」を参照してください。
例
組織内のレジストリからプロジェクトのパッケージを復元 npm
する
使用する認証済みレジストリが組織内の Azure Artifacts レジストリのみである場合は、タスクへのファイルへの .npmrc
パスのみを指定する 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
組織外でのパッケージの復元と発行npm
に .npmrc
別の組織の Azure Artifacts レジストリが含まれている場合、またはサードパーティの認証済みパッケージ リポジトリを使用している場合は、 npm サービス接続 を設定し、入力で指定する customEndpoint
必要があります。
Azure Artifacts 組織内のレジストリも自動的に認証されます。
.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
Azure Artifacts フィードを指すレジストリ URL には、プロジェクトが含まれている場合と含まれていない場合があります。 プロジェクト スコープ フィードの URL にはプロジェクトを含める必要があり、組織のスコープ フィードの URL にはプロジェクトを含めてはいけません。 プロジェクト スコープ フィードの詳細については、こちらを参照してください。
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
と ThirdPartyRepositoryNpmConnection
は、パイプラインで使用するように構成および承認され、指定された.npmrc
ファイル内のものと一致する URL を持つ npm サービス接続の名前です。
要件
要件 | 説明 |
---|---|
パイプラインの種類 | YAML、クラシック ビルド、クラシック リリース |
上で実行 | エージェント、DeploymentGroup |
確認要求 | なし |
Capabilities | このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。 |
コマンドの制限 | Any |
設定可能な変数 | Any |
エージェントのバージョン | 2.115.0 以上 |
タスクのカテゴリ | パッケージ |