npmAuthenticate@0 - npm authenticate (for task runners) v0 task
このタスクを使用して、ビルドのスコープのリポジトリ内の .npmrc
ファイルに npm
資格情報を指定します。 これにより、npm
だけでなく、gulp や Grunt などの npm
タスク ランナーもプライベート レジストリで認証できます。
構文
# 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.
入力
.npmrc ファイルを workingFile
- して を認証する
string
. 必須。
操作するレジストリを指定する .npmrc
ファイルへのパス。
/packages/mypackage.npmrc
など、フォルダーではなくファイルを選択します。
この組織またはコレクションの外のレジストリの customEndpoint
- 資格情報
string
.
この組織またはコレクションの外部にあるレジストリの名前 npm サービス接続 のコンマ区切りの一覧。 指定した .npmrc
ファイルには、サービス接続に対応するレジストリ エントリが含まれている必要があります。 この組織またはコレクションにレジストリのみが必要な場合は、空白のままにします。 ビルドの資格情報は自動的に使用されます。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。
出力変数
なし。
注釈
このタスクを使用して、ビルドのスコープのリポジトリ内の .npmrc
ファイルに npm
資格情報を指定します。 これにより、npm
だけでなく、gulp や Grunt などの npm
タスク ランナーもプライベート レジストリで認証できます。
- このタスクのしくみ
- パイプラインでこのタスクを実行する必要がある場合
- 複数の npm プロジェクトがあります。 .npmrc ファイルごとにこのタスクを実行する必要がありますか?
- エージェントが Web プロキシの背後にあります。 プロキシ
npmAuthenticate
使用するようにnpm/gulp/Grunt
を設定しますか? - パイプラインが別のプロジェクト のフィードにアクセスする必要がある
このタスクのしくみ
このタスクは、指定した .npmrc
ファイルでレジストリ エントリを検索し、検出されたレジストリの認証の詳細をファイルの末尾に追加します。 現在の組織/コレクション内のすべてのレジストリに対して、ビルドの資格情報が使用されます。 別の組織またはサードパーティによってホストされているレジストリの場合、レジストリ URI は、customEndpoint
入力で指定された npm サービス接続の URI と比較され、対応する資格情報が使用されます。
.npmrc
ファイルは、パイプラインの実行の終了時に元の状態に戻されます。
パイプラインでこのタスクを実行する必要があるタイミング
このタスクは、npm
または npm
タスク ランナーを使用して、Azure Artifacts などの認証済み npm リポジトリにパッケージをインストールまたはプッシュする前に実行する必要があります。 他の順序付け要件はありません。
複数の npm プロジェクトがあります。 .npmrc ファイルごとにこのタスクを実行する必要がありますか?
このタスクでは、認証の詳細が一度に 1 つの .npmrc
ファイルにのみ追加されます。 複数の .npmrc
ファイルに対して認証が必要な場合は、.npmrc
ファイルごとに 1 回、タスクを複数回実行できます。 または、プロジェクトで使用されるすべてのレジストリを指定する .npmrc
ファイルを作成し、この .npmrc
ファイルで npmAuthenticate
を実行し、この .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 プロキシの背後にあります。 プロキシ npmAuthenticate
使用するように npm/gulp/Grunt
を設定しますか?
答えはノーです。 このタスク自体は、エージェントが を使用するように構成されている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 レジストリのみである場合は、npmAuthenticate
タスクへの .npmrc
ファイルへのパスのみを指定する必要があります。
.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 サービス接続 の名前です。