LoginSignup
2
0

More than 1 year has passed since last update.

GCP ArtifactRegistry で Private NPM Registry を使う

Last updated at Posted at 2020-06-30

GCP ArtifactRegistry で Private NPM Registry を運用してみよう

  • 2020/06/30現在、npmの利用はAlpha版のみ
    • Alpha版参加のためにはアンケート記入を求められる
    • 記入した翌日には、メールが届いて、npmが選択可能になった
  • とてもお手軽に使えたよ
  • AWS CodeArtifact とは違い、 UserScope (~/.npmrc) を汚染せずに使えたよ

以下のパッケージを publish / install してみます

package.json
{
  "name": "@mycompany/great-project",
  "version": "0.4.11",
  ...
}

リポジトリを作る

  • 名前:仮に myrepositry としよう。

プロジェクトへの設定

  • 作成したリポジトリを選択し、「設定の手順」にしたがう

.npmrc の追記

.npmrc
@SCOPE=https://asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/
//asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:_password=""
//asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:username=oauth2accesstoken
//asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:email=not.valid@email.com
//asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:always-auth=true
  • @SCOPE: ここでは、 @mycompany となりますね
  • <YOUR_PROJECT> : GCP Project 名
  • <YOUR_REPOSITRY> : 作成したリポジトリ名 (myrepositry)

npm scripts の追記

package.json
scripts: {
  "artifactregistry-login": "npx google-artifactregistry-auth .npmrc"
}
  • "prepublish" に入れればいいんじゃないのと思って試したけど、上記のように別コマンドにしないと動きません
  • (prepublish に入る前の .npmrc が参照されるみたい)

publish

$ npm run artifactregistry-login
# ここで .npmrc を見ると、 _password が更新されていることがわかる
$ npm publish
> ...
> + @mycompany/great-project@1.0.0

:tada::tada::tada:

install

(install先へも .npmrc / scripts 設定を行ったうえで)

$ npm run artifactregistry-login
$ npm install
> ...
> + @mycompany/great-project@0.4.11

:tada::tada::tada:

CI/CD 環境で npm install する方法

サービスアカウントを使う方法が公式に書いてあった

  • ServiceAccount を作る
    • 「Artifact Registry 読み取り」 ロールを付与
  • JSONキーをダウンロードして環境に配置
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
npm run artifactregistry-login
npm i
2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0