この記事は、過去に投稿した記事 AZ-400:Azure Artifacts フィードへの npm パッケージ公開の続編となります。
Azure Pipelines を使ったパッケージの公開
過去の記事ではローカル PC との連携のみ試しましたが、今回は、Azure Pipelines を利用し、パッケージのソースがリモートのリポジトリに push されたことをトリガに、最新バージョンをフィードに公開するようにします。
また、別プロジェクトからフィードをインストールできることを確認します。
プロジェクトの構成
Azure DevOps の組織に下記 2 個のプロジェクトを作成します。
- MakeKonamon: パッケージ make-konamon をビルドし、フィードを公開するプロジェクト。
フィード FeedMakeKonamon が存在(過去に投稿した記事で作成済)。フィードのスコープは(組織ではなく)プロジェクトとしています。 - HelloKonamon: フィードから make-konamon をインポートするプロジェクト。
それぞれのプロジェクトは下記のようなファイル構成となっています。
(後の手順でパイプラインを作成することにより、azure-pipelines.yml が追加されます)
make-konamon
.npmrc
index.js
package.json
hello-konamon
.npmrc
index.js
package-lock.json
package.json
これらを各プロジェクトの Repo に push します。
パッケージのビルド Pipeline
MakeKonamon プロジェクトの Pipelines から Pipeline を作成し、Node.js のテンプレートを選択します。
下記のような npm タスク(Npm@1)を追加し、command に publish、publishFeed に MakeKonamon のフィードを指定後、Pipeline を保存します。
- task: Npm@1
inputs:
command: publish
publishRegistry: useFeed
publishFeed: MakeKonamon/FeedMakeKonamon
パッケージをインストールするビルド Pipeline
HelloKonamon プロジェクトの Pipelines から Pipeline を作成し、Node.js のテンプレートを選択します。
下記のような npm タスク(Npm@1)を追加し、command に install、customFeed に MakeKonamon のフィードを指定します。
- task: Npm@1
inputs:
command: install
customRegistry: useFeed
customFeed: MakeKonamon/FeedMakeKonamon
動作確認用に下記実行スクリプトを追加後、Pipeline を保存します。
- script: |
node index.js
displayName: 'run'
フィードのアクセス権限の設定
ローカル PC からの接続では、ホームディレクトリの .npmrc に資格情報を格納し、認証に使用しましたが、今回は .npmrc は使用せず、プロジェクトの設定を変更します。
MakeKonamon プロジェクトのプロジェクト設定で Permissions を開き、Contributor に HelloKonamon プロジェクトのビルドサービスを追加します。
また、Artifacts のフィード FeedMakeKonamon の 設定から Permissions タブを開き、MakeKonamon のビルドサービスに Contributor 権限、HelloKonamon のビルドサービスに Collaborator 権限を付与します。
パッケージのインストールをする側で Contributor 権限が必要となるのは不思議な気もしますが、MS Learnのドキュメントにある通りで、試しにプロジェクト設定で HelloKonamon のビルドサービスを Reader 権限にしたところ、フィードのアクセス時にエラーとなりました。
パッケージの更新
MakeKonamon のパッケージに下記変更を行い、リポジトリに push します。
- index.js で返す文字列を「takoyaki」->「akashiyaki」に変更
- package.json の version を「1.1.0」->「1.2.0」に変更
MakeKonamon で Azure Pipelines が実行され、フィードに 1.2.0 が公開されます。
HelloKonamon の package.json で参照するバージョンを 1.2.0 に変更し、リポジトリに push します。
"dependencies": {
"make-konamon": "1.2.0"
}
MakeKonamon で Azure Pipelines が実行されます。
ログ出力から1.2.0 の変更が反映されていることが確認できました。