次の方法で共有


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 タスク ランナーもプライベート レジストリで認証できます。

このタスクのしくみ

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

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

必要条件

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