npmAuthenticate@0 - npm 認証 (タスク ランナーの場合) v0 タスク

このタスクを使用して、ビルドの.npmrcスコープのリポジトリ内のファイルに資格情報を指定npmします。 これにより、 npmnpm だけでなく、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.
# YAML Syntax is not supported in TFS 2018.
# Use the classic designer to add and configure tasks.
# See the following Inputs section for details on the inputs that this task supports.

入力

workingFile - 認証する .npmrc ファイル
string. 必須です。

操作する .npmrc レジストリを指定するファイルへのパス。 フォルダーではなく、ファイルを選択します (例: /packages/mypackage.npmrc)。


workingFile - 認証する .npmrc ファイル
string.

操作する .npmrc レジストリを指定するファイルへのパス。 フォルダーではなく、ファイルを選択します (例: /packages/mypackage.npmrc)。


customEndpoint - この組織またはコレクション以外のレジストリの資格情報
string.

この組織またはコレクションの外部のレジストリの npm サービス接続 名のコンマ区切りの一覧。 指定した .npmrc ファイルには、サービス接続に対応するレジストリ エントリが含まれている必要があります。 この組織またはコレクションにレジストリのみが必要な場合は、この空白のままにします。 ビルドの資格情報が自動的に使用されます。


customEndpoint - このアカウント/コレクション以外のレジストリの資格情報
string.

この組織またはコレクションの外部のレジストリの npm サービス接続 名のコンマ区切りの一覧。 指定した .npmrc ファイルには、サービス接続に対応するレジストリ エントリが含まれている必要があります。 この組織またはコレクションにレジストリのみが必要な場合は、この空白のままにします。 ビルドの資格情報が自動的に使用されます。


タスク コントロールのオプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

このタスクを使用して、ビルドの.npmrcスコープのリポジトリ内のファイルに資格情報を指定npmします。 これにより、 npmnpm だけでなく、gulp や Grunt などのタスク ランナーもプライベート レジストリで認証できます。

このタスクはどのように機能しますか?

このタスクでは、指定した .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/

OtherOrganizationNpmConnectionThirdPartyRepositoryNpmConnection は、パイプラインで使用するように構成および承認され、指定された.npmrcファイル内のものと一致する URL を持つ npm サービス接続の名前です。

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.115.0 以上
タスクのカテゴリ パッケージ