Skip to content

ci: stage release tarballs from verified builds - #146

Merged
binjospookie merged 10 commits into
mainfrom
ci/secure-staged-publishing
Oct 5, 2026
Merged

binjospookie merged 10 commits into
mainfrom
ci/secure-staged-publishing

Conversation

@binjospookie

@binjospookie binjospookie commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

I cleaned up the CI/CD pipeline following Andrey Sitnik’s guide.

Changes:

  • Added zizmor to check GitHub Actions workflows.
  • Moved dependency setup into a shared action and added --ignore-scripts to installation.
  • Moved npm dist-tag calculation from the publish job to the build job.
  • Separated building from publishing. In the release workflow, only the publish job has id-token: write, and it installs no dependencies.
  • The build job creates three tarballs with pnpm pack and uploads them as an artifact. The publish job downloads that artifact and stages the tarballs.
  • Switched from direct publishing to npm stage publish, which requires manual approval.
  • The publish job uses npm bundled with Node.js, so it does not need to install pnpm.
  • Enabled organization-wide 2FA for everyone with access to grlt-hub.
  • Enabled immutable GitHub Releases for future releases.

The main thing to verify is the first end-to-end release run, especially the clean install with --ignore-scripts.

Prepared by Codex, an AI agent, at the user request. Human review pending.
@binjospookie
binjospookie requested review from a team and kireevmp September 30, 2026 20:45
Written by an AI agent on behalf of the repository operator; human review is unconfirmed.
@binjospookie binjospookie self-assigned this Sep 30, 2026
Codex AI Agent and others added 5 commits October 1, 2026 04:18
Prepared by an AI agent for the repository operator; human review has not been confirmed.
Prepared by an AI agent on behalf of the repository operator, who reviewed the changes.
Prepared by an AI agent on behalf of the repository operator, who reviewed the changes.
Written by an AI agent for the repository operator, who reviewed the change.
Written by an AI agent for the repository operator, who reviewed the change.
@binjospookie

binjospookie commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

I propose updating the release workflow in a separate PR to follow Vitest’s approach:

  • We manually run the release workflow, selecting the branch and version.
  • A bot runs bumpp and opens a release PR.
  • Merging the release PR triggers checks, packaging, and npm stage publish.
  • Once staging succeeds, the bot tags the release commit.

The benefits are:

  • The tag is created only after npm stage publish succeeds.
  • Releases are initiated explicitly through a workflow and reviewed in a dedicated PR.

Flow
Example

kireevmp
kireevmp previously approved these changes Oct 5, 2026
Comment thread .github/scripts/resolve-publish-tag.sh Outdated
Comment thread .github/scripts/stage-packages.sh Outdated
Co-authored-by: Mikhail Kireev <29187880+kireevmp@users.noreply.github.com>
Co-authored-by: Mikhail Kireev <29187880+kireevmp@users.noreply.github.com>
@binjospookie
binjospookie merged commit 6e751d8 into main Oct 5, 2026
4 checks passed
@binjospookie
binjospookie deleted the ci/secure-staged-publishing branch October 5, 2026 18:13
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