Skip to content

chore(ci): split release.yml into build/publish/release-notes/notify jobs#11

Merged
mscolnick merged 2 commits into
mainfrom
myles/release-artifact-handoff
May 12, 2026
Merged

chore(ci): split release.yml into build/publish/release-notes/notify jobs#11
mscolnick merged 2 commits into
mainfrom
myles/release-artifact-handoff

Conversation

@mscolnick
Copy link
Copy Markdown
Contributor

Splits the single release job into 4 jobs so the id-token: write scope is held only by a publish job that runs npm publish exclusively (no install/test/build/exec).

  • build (no id-token): install, typecheck, test, build, validate, upload dist/ + package metadata as artifact.
  • publish (id-token: write): download artifact, npm publish --ignore-scripts.
  • release-notes (contents: write, no id-token): npx changelogithub.
  • notify (if: always()): slack notification, aggregates needs.*.result.

Resolves the supply-chain audit oidc-publish-fused finding. Motivated by the TanStack npm supply-chain compromise (May 2026).

Copilot AI review requested due to automatic review settings May 12, 2026 17:29
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 12, 2026

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 88.3% 2468 / 2795
🔵 Statements 88.3% 2468 / 2795
🔵 Functions 83.58% 56 / 67
🔵 Branches 89.94% 358 / 398
File CoverageNo changed files found.
Generated in workflow #46 for commit b82628a by the Vitest Coverage Report Action

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restructures the release GitHub Actions workflow to minimize privileged token exposure during npm publishing, addressing the oidc-publish-fused supply-chain audit finding by isolating id-token: write to a dedicated publish job.

Changes:

  • Split the previous single release job into build, publish, release-notes, and notify jobs with tighter per-job permissions.
  • Publish via a downloaded build artifact and run npm publish --ignore-scripts under the only job granted id-token: write.
  • Add a final notify job that always runs and aggregates needs.*.result for Slack notifications.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 109 to 112
- name: 📝 Update Changelog
run: npx changelogithub
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
Comment thread .github/workflows/release.yml Outdated
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.



- name: 📥 Install dependencies
run: pnpm install --frozen-lockfile
Comment thread .github/workflows/release.yml Outdated
Comment on lines +83 to +87
- name: ⎔ Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
registry-url: 'https://registry.npmjs.org'
- name: ⎔ Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
@mscolnick mscolnick closed this May 12, 2026
@mscolnick mscolnick force-pushed the myles/release-artifact-handoff branch from 9ed60c7 to 62c2694 Compare May 12, 2026 17:52
@mscolnick mscolnick reopened this May 12, 2026
@mscolnick
Copy link
Copy Markdown
Contributor Author

Intentional: only the publish and release-notes jobs need node 24 (bundled npm 11+ for npm OIDC trusted publishing). The build job stays on the repo's existing version to match what test.yml/ci.yml validates — bumping it would change the CI matrix and is a separate decision from the supply-chain fix.

@mscolnick mscolnick merged commit b82628a into main May 12, 2026
4 checks passed
@mscolnick mscolnick deleted the myles/release-artifact-handoff branch May 12, 2026 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants