背景
GitHub ActionsからNPMパッケージを発行していました。
Trusted Publisher というものが登場(いつからだろう?)し、かつてより簡単かつセキュアに実現できるようになりました。
かつてのやりかた
NPMJS でシークレットキーを作成します。
それをGitHubレポジトリの設定に格納します。
GitHub Actionsから、設定したシークレットキーを参照します。
Trusted Publisher 以降のやり方
NPMJSに信頼するGitHubレポジトリをセットします。
以上。
ちょーかんたん。
実際のやりかた
こちらにあるドキュメントに従います。
手順詳細
Step 1.
NPMJSのパッケージ画面にある Settings を開きます。
Step 2.
Trusted Publisher欄にある GitHub Actions をクリックします。
Step 3.
必要な項目を入力します。
- Organization or user
- GitHubレポジトリのオーナーとなるユーザー名か組織名です。
- Repository
- レポジトリの名前です。
- Workflow filename
- `.gighub/workflows` 以下に置いてあるYAMLのファイル名です。
- Environment name
- GitHub environments を使っている場合、入力するみたいですk。
入力したら、Set up connectionをクリックします。
Step 4.
場合によってはMFA通ります。
Step 5.
こんなんできました。
Step 6.
GitHub action yamlファイルを変更します。
id-token と contents を加え、参照していたシークレットキーを消しました。
diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index f0c192e..826adaa 100644
--- a/.github/workflows/npm-publish.yml
+++ b/.github/workflows/npm-publish.yml
@@ -11,15 +11,19 @@ on:
- "v*"
workflow_dispatch:
+permissions:
+ id-token: write # Required for OIDC
+ contents: read
+
@@ -30,13 +34,11 @@ jobs:
- run: npm ci
- run: npm publish
- env:
- NODE_AUTH_TOKEN: ${{secrets.npm_token}}
これでうまくいくはずでした……
アクションを実行すると、NPMJS の認証通っていないのか、404 Not Found
ちなみに Node のバージョンは 22 です。
どうも不具合っぽい
こんなイシューがあがっていました。
【解決策】Node のバージョンは 24 にしよう
Trusted Publisherを使う前提として、以下が必要なようです。
- npm CLI 11.5.1 以降
- Node.js 24以降
Yamlファイルを修正し、使用するNodeのバージョンを22→24にすることで、アクション動きました。
ちなみに、Node 22 のまま、npm CLI を最新(11.7)に上げてもダメでした。





