From d50d74b49fb45f5ecde3320a6cf0cb3d9820f8a1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 11 Oct 2026 01:37:59 +0000 Subject: [PATCH 1/5] ci: publish to npm with Trusted Publishing The v4.0.1 PublishNpm job failed with E404 on PUT, and npm still lists 3.0.4 as latest. Drop NPM_TOKEN and let npm authenticate through the job's GitHub OIDC token (id-token: write is already granted). Refs #452 Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_019BJENnU8SXcDH2Tcx5EWE4 --- .github/workflows/release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cbcf16dc..e2744823 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,9 +16,8 @@ jobs: registry-url: https://registry.npmjs.org - run: npm ci - run: npm run build + # Authenticates with npm Trusted Publishing (OIDC); no NPM_TOKEN needed. - run: npm publish --provenance - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} PublishJsr: runs-on: ubuntu-latest permissions: From c686f64ca5a2b9beecdf199e660e028864a0b0ae Mon Sep 17 00:00:00 2001 From: Kei Ito <7359068+gjbkz@users.noreply.github.com> Date: Sun, 11 Oct 2026 16:55:36 +0900 Subject: [PATCH 2/5] ci: disable dependency caching for npm trusted publishing --- .github/workflows/release.yml | 2 +- .../t001-npm-trusted-publishing/record.md | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 docs/tasks/t001-npm-trusted-publishing/record.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e2744823..28833865 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/setup-node@v7 with: node-version: 26.x - cache: npm + package-manager-cache: false registry-url: https://registry.npmjs.org - run: npm ci - run: npm run build diff --git a/docs/tasks/t001-npm-trusted-publishing/record.md b/docs/tasks/t001-npm-trusted-publishing/record.md new file mode 100644 index 00000000..175c95c6 --- /dev/null +++ b/docs/tasks/t001-npm-trusted-publishing/record.md @@ -0,0 +1,35 @@ +# npm Trusted Publishing + +## 依頼 +GitHub Actionsでnpmトークンを使わず公開できるよう、修正PRを作成する。npm側はユーザーが操作する。 + +## 計画 +release.ymlの既存処理を確認し、OIDC権限・対応Node/npm・トークン参照を修正する。公開を伴わない検証後にPRを作成する。 + +## 進捗 +- release.yml、package.json、test.yml、規約と設定ファイルを確認。 +- repositoryはnlibjs/typingと一致。Environmentはなし。 + +## 判断 +- release publishedのトリガーとビルド・公開対象を維持。 +- npm公開ジョブの依存キャッシュを無効化し、NODE_AUTH_TOKENを除去。 +- npm公開にid-token: writeとcontents: readを使用。 +- 実際のpublish・リリース・タグ作成・npm設定変更は行わない。 + +## 検証 +未実施。 + +## 既存PRの継続 +- 同目的の既存PR https://github.com/nlibjs/typing/pull/457 を確認。追加修正としてnpm公開ジョブのキャッシュを無効化。既存の公開方式・Environment・JSR処理を維持する。 +- lint-commitはCI修正PR #711を土台とする既存の依存関係を維持。 + +## 検証結果 +- actionlint、YAML構文、git diff --check: 成功。 +- npm ci、npm test: 成功(7344 + 1 + 12テスト)。Node 24.21.0、typingはNode 26.5.0。 +- ビルド・npm pack --dry-run --ignore-scripts: 成功。公開前のpackage.json整理処理とrepository/public設定も確認。 +- changelogの初回テストは浅いGit履歴とローカル署名設定で失敗。履歴を取得し、テストプロセス限定で署名を無効にして成功。 +- cleanup-package-jsonはキャッシュ保存先と旧生成物の混在で失敗。作業用キャッシュと生成物の再ビルドで成功。 +- 実際のOIDC認証・publishは未実行。npmの登録後に初回公開で検証する必要がある。 + +## npm側の設定 +GitHub Actions / Organization nlibjs / Repository typing / Workflow release.yml。Environmentは既存の指定を維持。npm publishの許可を選ぶ。ソース反映後、初回公開が可能になってから登録し、48時間以内に初回publishを成功させる。 From 654ebe5b106a3896421d1fa75e557897bcab1da7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 11 Oct 2026 07:58:27 +0000 Subject: [PATCH 3/5] chore: drop the Codex task log from the repository docs/tasks/t001-npm-trusted-publishing/record.md is Codex's working log for this change, not project documentation, and it describes other repositories too. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01TzMPpMo8a7i9VCdJXWrKVb --- .../t001-npm-trusted-publishing/record.md | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 docs/tasks/t001-npm-trusted-publishing/record.md diff --git a/docs/tasks/t001-npm-trusted-publishing/record.md b/docs/tasks/t001-npm-trusted-publishing/record.md deleted file mode 100644 index 175c95c6..00000000 --- a/docs/tasks/t001-npm-trusted-publishing/record.md +++ /dev/null @@ -1,35 +0,0 @@ -# npm Trusted Publishing - -## 依頼 -GitHub Actionsでnpmトークンを使わず公開できるよう、修正PRを作成する。npm側はユーザーが操作する。 - -## 計画 -release.ymlの既存処理を確認し、OIDC権限・対応Node/npm・トークン参照を修正する。公開を伴わない検証後にPRを作成する。 - -## 進捗 -- release.yml、package.json、test.yml、規約と設定ファイルを確認。 -- repositoryはnlibjs/typingと一致。Environmentはなし。 - -## 判断 -- release publishedのトリガーとビルド・公開対象を維持。 -- npm公開ジョブの依存キャッシュを無効化し、NODE_AUTH_TOKENを除去。 -- npm公開にid-token: writeとcontents: readを使用。 -- 実際のpublish・リリース・タグ作成・npm設定変更は行わない。 - -## 検証 -未実施。 - -## 既存PRの継続 -- 同目的の既存PR https://github.com/nlibjs/typing/pull/457 を確認。追加修正としてnpm公開ジョブのキャッシュを無効化。既存の公開方式・Environment・JSR処理を維持する。 -- lint-commitはCI修正PR #711を土台とする既存の依存関係を維持。 - -## 検証結果 -- actionlint、YAML構文、git diff --check: 成功。 -- npm ci、npm test: 成功(7344 + 1 + 12テスト)。Node 24.21.0、typingはNode 26.5.0。 -- ビルド・npm pack --dry-run --ignore-scripts: 成功。公開前のpackage.json整理処理とrepository/public設定も確認。 -- changelogの初回テストは浅いGit履歴とローカル署名設定で失敗。履歴を取得し、テストプロセス限定で署名を無効にして成功。 -- cleanup-package-jsonはキャッシュ保存先と旧生成物の混在で失敗。作業用キャッシュと生成物の再ビルドで成功。 -- 実際のOIDC認証・publishは未実行。npmの登録後に初回公開で検証する必要がある。 - -## npm側の設定 -GitHub Actions / Organization nlibjs / Repository typing / Workflow release.yml。Environmentは既存の指定を維持。npm publishの許可を選ぶ。ソース反映後、初回公開が可能になってから登録し、48時間以内に初回publishを成功させる。 From c1443c4b2886458cbd67229a4f42afa73a764be9 Mon Sep 17 00:00:00 2001 From: Kei Ito <7359068+gjbkz@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:36:32 +0900 Subject: [PATCH 4/5] ci: stage npm releases for maintainer approval --- .github/workflows/release.yml | 3 ++- .../t001-npm-trusted-publishing/record.md | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 docs/tasks/t001-npm-trusted-publishing/record.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 28833865..8d2b91b6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,10 +14,11 @@ jobs: node-version: 26.x package-manager-cache: false registry-url: https://registry.npmjs.org + - run: npm install --global npm@11.21.0 - run: npm ci - run: npm run build # Authenticates with npm Trusted Publishing (OIDC); no NPM_TOKEN needed. - - run: npm publish --provenance + - run: npm stage publish --provenance PublishJsr: runs-on: ubuntu-latest permissions: diff --git a/docs/tasks/t001-npm-trusted-publishing/record.md b/docs/tasks/t001-npm-trusted-publishing/record.md new file mode 100644 index 00000000..aabfe4f3 --- /dev/null +++ b/docs/tasks/t001-npm-trusted-publishing/record.md @@ -0,0 +1,19 @@ +# npm Staged Publishing + +## 依頼と計画 +GitHub Actionsで承認待ちのnpmパッケージを作成し、maintainerが2FAで承認して公開する方式へ既存PRを更新する。 + +## 進捗・判断 +- npm公式のStaged publishing/npm-stageの現行仕様を確認。 +- npm公開ジョブをnpm stage publishへ変更し、npm 11.21.0を明示導入(必須条件はnpm >=11.15.0)。 +- Environment、JSR処理、ビルド、package.json整理処理を維持する。 +- npm側ではAllow npm publish/Allow npm dist-tagをオフにする。登録・承認はユーザーが操作する。 + +## 検証結果 +- 5ワークフローのactionlint: 成功。 +- npm 11.21.0でstageコマンドを確認し、5パッケージのstage publish --dry-runを検証。実際のアップロード・公開は行っていない。 +- changelog、negotiate、lint-commitの既存バージョンは公開済みのためdry-runでも拒否された。検証用コピーだけに未公開のプレリリースバージョンとstage-checkタグを設定して再検証。リポジトリのバージョン・タグは変更していない。 +- 検証ではprovenance生成を無効にした。実際のOIDC認証とprovenanceはGitHub Actions実行時に確認が必要。 + +## 利用手順 +GitHub release後、npmのStaged Packagesで内容を確認してApproveを選択し、2FAで承認すると公開される。Actionsの成功だけではnpmへの一般公開は完了しない。 From cd252979b840dda76349fca50d412955fb9a1c3f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 11 Oct 2026 08:37:35 +0000 Subject: [PATCH 5/5] chore: drop the Codex task log from the repository again The staged-publishing commit re-added docs/tasks/t001-npm-trusted-publishing/record.md, Codex's working log. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01TzMPpMo8a7i9VCdJXWrKVb --- .../t001-npm-trusted-publishing/record.md | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 docs/tasks/t001-npm-trusted-publishing/record.md diff --git a/docs/tasks/t001-npm-trusted-publishing/record.md b/docs/tasks/t001-npm-trusted-publishing/record.md deleted file mode 100644 index aabfe4f3..00000000 --- a/docs/tasks/t001-npm-trusted-publishing/record.md +++ /dev/null @@ -1,19 +0,0 @@ -# npm Staged Publishing - -## 依頼と計画 -GitHub Actionsで承認待ちのnpmパッケージを作成し、maintainerが2FAで承認して公開する方式へ既存PRを更新する。 - -## 進捗・判断 -- npm公式のStaged publishing/npm-stageの現行仕様を確認。 -- npm公開ジョブをnpm stage publishへ変更し、npm 11.21.0を明示導入(必須条件はnpm >=11.15.0)。 -- Environment、JSR処理、ビルド、package.json整理処理を維持する。 -- npm側ではAllow npm publish/Allow npm dist-tagをオフにする。登録・承認はユーザーが操作する。 - -## 検証結果 -- 5ワークフローのactionlint: 成功。 -- npm 11.21.0でstageコマンドを確認し、5パッケージのstage publish --dry-runを検証。実際のアップロード・公開は行っていない。 -- changelog、negotiate、lint-commitの既存バージョンは公開済みのためdry-runでも拒否された。検証用コピーだけに未公開のプレリリースバージョンとstage-checkタグを設定して再検証。リポジトリのバージョン・タグは変更していない。 -- 検証ではprovenance生成を無効にした。実際のOIDC認証とprovenanceはGitHub Actions実行時に確認が必要。 - -## 利用手順 -GitHub release後、npmのStaged Packagesで内容を確認してApproveを選択し、2FAで承認すると公開される。Actionsの成功だけではnpmへの一般公開は完了しない。