ようへいの日々精進XP

よかろうもん

2021 年 12 月 06 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

朝、エアロバイクを一時間。

夕方は走ろうと思ったけど、バタバタしていて走ることもエアロバイクを漕ぐことが出来なかった。

レアジョブ

さすがに一週間も休むのはヤバいので、明日、新しい先生で予約を入れてみた。お気に入りの先生は、なかなか予約を取れず...

夕飯

奥さん特製のおろしハンバーグ。美味しゅうございました。

疲れたー

今日は、午前中からお昼過ぎにかけて、慣れないこと (面談や議事録作成) やったので、午後はヘトヘトだった(汗 おまけに、夕方からは、頭痛もしたりして、やりたい作業を思ったように進めることが出来なかった。たまには面談やら議事録作成等はやるべきだなーって反省。

さよならと残念

ギョームで長年お世話になっていた Elasticsearch + Kibana 環境を撤去した。ありがとうございました。そして、プライベートでも、とても残念なことが一件。人生って色々とありますなあ。

2021 年 12 月 05 日 (日)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

エアロバイクをダブルヘッダー

レアジョブ

更に今日もお休み。やる気が無くなってきた。

夕飯

今夜も鍋。

2021 年 12 月 04 日 (土)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

完全休養。

レアジョブ

更に今日もお休み。

夕飯

今日も鍋。SUNNY のプライベートブランドである「皆様のお墨付き」シリーズの豆乳鍋の素で作った。牡蠣を入れたりして美味しゅうございました。

AWS CodeArtifact を使ってみた (2) 〜 特定のパッケージだけ CodeArtifact 経由でパッケージをインストールしたい 〜

これは

YAMAP エンジニア Advent Calendar 2021 の第四日目の記事になる予定です。

qiita.com

経緯

特定のパッケージだけ、AWS CodeArtifact (以後、CodeArtifact) からインストールして、他のパブリックなパッケージは既存のパッケージレジストリからインストールしたい場合、どうしたらいいんだろうなあと試行錯誤したのでメモしておきます。

前回に引き続き、オレオレ npm パッケージを用意して試行錯誤します。

inokara.hateblo.jp

パッケージを登録する

スコープ

npm パッケージの場合、以下のようにパッケージ名を指定することで、スコープを定義出来るとのことです。

@somescope/somepackagename

ドキュメント によると、以下のように書かれています。

docs.npmjs.com

スコープは、パッケージ名の通常のルール(URLセーフな文字、先頭にドットやアンダースコアを付けない)に従います。パッケージ名に使用する場合、スコープの前に@マークを付け、その後にスラッシュを付けます。

前回の記事では、サンプルで作ったオレオレパッケージは、以下のような名前でした。

oreno-sample

ここに、@oreno-repo というスコープを設定します。(本当は @oreno-pkg が良かったかな)

@oreno-repo/oreno-sample

パッケージの登録

スコープを付与した名前で CodeArtifact に Publish してみたいと思います。

$ cat package.json
{
  "name": "@oreno-repo/oreno-sample",
  "version": "0.0.2",
  "description": "sample",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "inokappa",
  "license": "ISC"
}

$ npm publish
npm notice
npm notice 📦  @oreno-repo/oreno-sample@0.0.2
npm notice === Tarball Contents ===
npm notice 63B  index.js
npm notice 234B package.json
npm notice === Tarball Details ===
npm notice name:          @oreno-repo/oreno-sample
npm notice version:       0.0.2
npm notice filename:      @oreno-repo/oreno-sample-0.0.2.tgz
npm notice package size:  326 B
npm notice unpacked size: 297 B
npm notice shasum:        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
npm notice integrity:     sha512-kDGgkiOmOcvvL[...]nXPlCFy/YAKlw==
npm notice total files:   2
npm notice
+ @oreno-repo/oreno-sample@0.0.2

ちゃんと、登録されているでしょうか。

$ aws codeartifact list-packages --domain=oreno-codeartifact --repository=oreno-repo
{
    "packages": [
        {
            "format": "npm",
            "package": "oreno-sample"
        },
        {
            "format": "npm",
            "namespace": "oreno-repo",
            "package": "oreno-sample"
        }
    ]
}

ちゃんと、namepace として oreno-repo が登録されていて、パッケージは oreno-sample が登録されています。

パッケージを利用する

package.json を修正

前の記事で、サンプルプロジェクトで利用していた package.json は以下のような内容でした。オレオレパッケージ (oreno-sample) と aws-sdkmocha に依存したプロジェクトです。

{
  "name": "sample-project",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "oreno-sample": "^0.0.1",
    "aws-sdk": "^2.1041.0",
    "mocha": "^9.1.3"
  }
}

この package.json を以下のように修正します。

{
  "name": "sample-project",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@oreno-repo/oreno-sample": "^0.0.1",
    "aws-sdk": "^2.1041.0",
    "mocha": "^9.1.3"
  }
}

$HOME/.npmrc を修正

前回の記事では、CodeArtifact を利用する為に、以下のような AWS CLI コマンドを実行しました。

$ aws codeartifact login \
  --tool npm \
  --repository oreno-repo \
  --domain oreno-codeartifact \
  --domain-owner ${AWS_ACCOUNT_ID}

このコマンドを実行すると、$HOME/.npmrc は、以下のような内容で上書きされます。

$ cat $HOME/.npmrc
registry=https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:_authToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

この状態で、npm i を実行すると、以下のようなエラーとなります。

$ npm i
npm ERR! code E404
npm ERR! 404 Not Found - GET https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/aws-sdk - Package, 'aws-sdk', not found.
npm ERR! 404
npm ERR! 404  'aws-sdk@^2.1041.0' is not in this registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in:
npm ERR!     /path/to/.npm/_logs/2021-12-04T02_13_47_618Z-debug.log

この問題を回避する為に、手動で $HOME/.npmrc をセットアップします。尚、セットアップ手順は、マネジメントコンソールから確認することが出来ます。

f:id:inokara:20211204115430p:plain

見切れてしまっているので、以下にも転載します。

以下のコマンドを実行して、環境変数に CodeArtifact の認証トークンをセットします。

export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain oreno-codeartifact --domain-owner ${AWS_ACCOUNT_ID} --query authorizationToken --output text`

そして、$HOME/.npmrc に以下を追記するようです。

registry=https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:always-auth=true
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:_authToken=${CODEARTIFACT_AUTH_TOKEN}

ただ、このままをセットすると、全てのパッケージの取得は、CodeArtifact から行おうとしてしまいます。

これを回避する為、以下のように修正します。

@oreno-repo:registry=https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:always-auth=true
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:_authToken=${CODEARTIFACT_AUTH_TOKEN}

パッケージをインストール

CodeArtifact の認証トークンを環境変数にセットして、npm i でパッケージをインストールします。

$ export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain oreno-codeartifact --domain-owner ${AWS_ACCOUNT_ID} --query authorizationToken --output text`
$ npm i

以下のように出力され、全てのパッケージのインストールが完了しました。

$ npm i
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated uuid@3.3.2: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.

added 95 packages, and audited 96 packages in 4s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

$ npm list
sample-project@0.0.1 /path/to/project
├── @oreno-repo/oreno-sample@0.0.1
├── aws-sdk@2.1043.0
└── mocha@9.1.3

オレオレパッケージのバージョンは 0.0.2 にアップグレードしていたので、package.json を書き換えて、上書きインストールなんかしちゃいます。

{
  "name": "sample-project",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@oreno-repo/oreno-sample": "^0.0.2",
    "aws-sdk": "^2.1041.0",
    "mocha": "^9.1.3"
  }
}

インストール、パッケージの確認。

$ npm i

changed 1 package, and audited 96 packages in 2s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

$  npm list
sample-project@0.0.1 /path/to/project
├── @oreno-repo/oreno-sample@0.0.2
├── aws-sdk@2.1043.0
└── mocha@9.1.3

いい感じです。

今回は、特定のパッケージだけを CodeArtifact 経由でインストールする方法を確認しました。CodeArtifact はあまり関係なくて、CodeArtifact がサポートしているパッケージレジストリの使い方を調べるような感じになってしまいましたが、やりたいことが 実現出来て良かったです。

ということで、引き続き、CI/CD サービスを利用した、オレオレパッケージを CodeArtifact に登録するオペレーションの自動化等をやっていきたいとお見ます。

引き続き、よろしくお願い致します。

2021 年 12 月 03 日 (金)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

久しぶりに走ってみた。

超久しぶりに、足の痛みとか気にせずに走れた。

レアジョブ

今日もお休み。ホントに予約が取れない...

夕飯

鍋を作った。我が家では、鍋の時は、昆布から出汁を取ってスープを作るので、きっと美味しいはず。奥さんも美味い、美味いと、よく食べていたので嬉しかった。

2021 年 12 月 02 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

お尻が痛い。

レアジョブ

今日もお休み。予約が取れない...

夕飯

ブリカマに鶏ハム。炊きたてのご飯に納豆が最高だった。

JAWS-UG 福岡もくもく会

今日は三名。

jaws-ug-kyushu.doorkeeper.jp

AWS CodeArtifact をいじったというよりも、npm の挙動について確認していた。

2021 年 12 月 01 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

完全休養。

もう少し我慢。

レアジョブ

お休み。

夕飯

2021 年 11 月 30 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

もう少し我慢。

レアジョブ

今朝は、7 時から正蔵先生だった。

夕飯

2021 年 11 月 29 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

レアジョブ

明日、久しぶりに正蔵先生。7 時から。

夕飯

久しぶりのオフィス出社

リモートでは、何度も顔をあわせているのに、リアルで会うのは初めてなんじゃないかって方がほとんどで笑えた。

AWS CodeArtifact を使ってみた

これは

YAMAP エンジニア Advent Calendar 2021 の第一日目の記事になる予定です。

qiita.com

経緯

社内で GitHub Package Registry を利用して、プライベートな npm パッケージをセットアップしています。

GitHub Package Registry を利用する為の GitHub アクセストークンが必要になりますが、誰の Github アクセストークンを使うのか問題にぶち当たりました。

Github Organization メンバー誰かの Github アカウントのアクセストークンを使うの論外、また、専用のアカウントを設けるのは、コストの観点から無し... ということで、AWS の CodeArtifact (以後、CodeArtifact) を試してみることにしました。

AWS 環境への CI/CD パイプライン用の IAM ユーザーは既に設定済みという状況なので、CodeArtifact との相性は良さそうです。

AWS CodeArtifact とは

ざっくり言うと、Python の pip や Node.js の npm 等の各種ソフトウェアパッケージのプライベートリポジトリサービスで、AWS の Code N 兄弟のうちの一つです。2020 年の 6 月にリリースされました。

aws.amazon.com

類似のサービスとしては、上述の GitHub Package Registry 等が挙げられます。

docs.aws.amazon.com

CodeArtifact は、プライベートな独自パッケージのリポジトリ以外にも、既存の各種言語に提供されているパッケージマネージャーのプロキシとして動作します。サポートされているパッケージマネージャーは以下の通りです。

AWS CodeArtifact を理解する

概念図

以下、ドキュメントより引用。

AWS CodeArtifact の主な構成要素として、ドメインリポジトリがあります。

ドメイン (Domain)

ドメインは、AWS CodeArtifact の最上位のエンティティで、ドメインの配下に複数のリポジトリを持つことが出来ます。ドメイン内のアセット (パッケージ) は KMS の暗号化キーで暗号化されます。すべてのアセットとメタデータドメインに保存される為、複数のリポジトリに同じアセットが存在する場合、アセットはドメインに 1 つだけ保存されます。

リポジトリ (Repository)

リポジトリには、各アセットのバージョンセットが保存されます。1 つのリポジトリには、サポートされる全てのタイプのパッケージのエンドポイントを提供します。

AWS CodeArtifact をセットアップする

リポジトリの作成

とりあえず、手動で作ってみたいと思います。作り方はとっても簡単。

まずは、リポジトリを作成します。

f:id:inokara:20211128232407p:plain

パプリックアップストリームリポジトリには、maven や gradle や npm 等の主要な言語のパッケージマネージャを選択することが出来ます。これを設定すると、これらのリポジトリから取得したパッケージがドメイン内にキャッシュされます (ように振る舞う) 。

パプリックアップストリームリポジトリについては、今回は、何も設定せずに次のステップに進みます。

ドメインの作成

そして、始めて CodeArtifact をセットアップする際には、ドメインが設定されていないので、ドメインも設定します(※ なぜ、トップエンティティのドメインを最初に作らせないのか、モヤッとした感じはある。)

f:id:inokara:20211128232422p:plain

追加設定で AWS KMS キーを指定可能。特に設定しない場合には、AWS マネージドキーが設定されます。

f:id:inokara:20211128232436p:plain

セットアップ完了。

f:id:inokara:20211128232453p:plain

接続手順の確認

「接続手順の表示」をクリックすると、各パッケージマネージャ毎に CodeArtifact へのアクセス方法が表示されます。

f:id:inokara:20211128232507p:plain

今回は、npm を選択。

f:id:inokara:20211128232524p:plain

推奨設定では、AWS CLI を利用した手順が紹介されており、手動での設定手順も確認することが出来ます。npm の場合には、.npmrc ファイルを生成する手順が表示されます。

AWS CodeArtifact を npm で使ってみる

CodeArtifact に接続する為の初期設定

接続手順の確認にて確認した、AWS CLI のコマンドを実行します。

$ aws codeartifact login \
  --tool npm \
  --repository oreno-repo \
  --domain oreno-codeartifact \
  --domain-owner ${AWS_ACCOUNT_ID}

コマンドを実行して、正常にコマンドが終了すると、以下のように出力されます。

Successfully configured npm to use AWS CodeArtifact repository https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/
Login expires in 12 hours at 2021-11-26 11:55:23+09:00

このコマンドが正常に終了すると、$HOME/.npmrc ファイルが生成されます。

$ cat $HOME/.npmrc
registry=https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/
//oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/:_authToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

試しに npm search を実行してみる

パッケージを検索出来る npm search xxxxx を実行してみます。

$ npm search aws

以下のようにエラーとなります。どうやら、npm search 相当の機能は提供されていないようです。

$ npm search aws
npm ERR! code E404
npm ERR! 404 Not Found - GET https://oreno-codeartifact-${AWS_ACCOUNT_ID}.d.codeartifact.ap-northeast-1.amazonaws.com/npm/oreno-repo/-/v1/search?text=aws&size=20&from=0&quality=0.65&popularity=0.98&maintenance=0.5 - Not Found
npm ERR! 404
npm ERR! 404  'search' is not in this registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in:
npm ERR!     /path/to/.npm/_logs/2021-11-25T14_56_38_526Z-debug.log

マイ npm パッケージを登録する

適当にディレクトリを作成し、npm init して、適当なコード (index.js) と適当な package.json を用意します。

$ mkdir sample
$ cd sample
$ npm init
$ cat index.js
module.exports = function() {
  console.log('Hello World!!')
}
$ cat package.json
{
  "name": "oreno-sample",
  "version": "0.0.1",
  "description": "sample",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "inokappa",
  "license": "ISC"
}

尚、事前に aws codeartifact login を済ませておきましょう。

$ npm publish

以下のように出力されます。

$ npm publish
npm notice
npm notice 📦  oreno-sample@0.0.1
npm notice === Tarball Contents ===
npm notice 63B  index.js
npm notice 222B package.json
npm notice === Tarball Details ===
npm notice name:          oreno-sample
npm notice version:       0.0.1
npm notice filename:      oreno-sample-0.0.1.tgz
npm notice package size:  319 B
npm notice unpacked size: 285 B
npm notice shasum:        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
npm notice integrity:     sha512-oCZdKOIqjF0nC[...]OJdspBxFwxXKA==
npm notice total files:   2
npm notice
+ oreno-sample@0.0.1

あら、簡単。念の為、パッケージがリポジトリに登録されているかを確認。以下のように出力されます。

$ aws codeartifact list-packages \
  --domain oreno-codeartifact \
  --repository oreno-repo
{
    "packages": [
        {
            "format": "npm",
            "package": "oreno-sample"
        }
    ]
}

いい感じです。CodeArtifact にマイ npm パッケージが登録されていることを確認しました。

マイ npm パッケージを使ってみる

別のディレクトリをこさえて、npm init します。こちらも、事前に aws codeartifact login を済ませておきましょう。ドキュメントによると、このコマンドによって取得出来るトークンの期限は 12 時間とのことです。

$ npm init

先程、CodeArtifact に登録した oreno-sample パッケージをインストールします。

$ npm install oreno-sample@0.0.1

added 1 package in 967ms # インストール成功

# package.json に登録されている
$ cat package.json
{
  "name": "sample-project",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "oreno-sample": "^0.0.1"
  }
}

oreno-sample パッケージを利用したコードを書いてみます。

$ vim index.js
const oreno = require('oreno-sample');
oreno();

実行してみます。

$ node index.js

以下のように出力され、oreno-sample パッケージが利用されているようです。

$ node index.js
Hello World!!

いい感じです。意図した通り、マイ npm パッケージを利用することが出来ました。

ということで

今回は、AWS CodeArtifact を使って、オリジナルの npm パッケージを登録して、そのパッケージをプロジェクトで利用する流れを書きました。

AWS CodeArtifact は、思ったよりも簡単に利用出来るし、IAM を利用したアクセス制限等、AWS の各種サービスと協調して利用することを考えると、Github Packages よりも使いやすいのでは... と考えています。

次回は、CircleCI や Github Actions の CI/CD 環境で利用したり、既存パッケージリポジトリのプロキシとして利用する方法等について書いてみようと思います。