Skip to content

ci(release): adopt verified release PR pipeline#255

Merged
chhoumann merged 5 commits into
masterfrom
ci/release-pr-pipeline
Jul 10, 2026
Merged

ci(release): adopt verified release PR pipeline#255
chhoumann merged 5 commits into
masterfrom
ci/release-pr-pipeline

Conversation

@chhoumann

Copy link
Copy Markdown
Owner

Summary

  • replace the direct-to-master semantic-release mutation with a tested, machine-generated draft release PR
  • validate exact PR, commit, tree, version-file, tag, artifact, and human-merge provenance before publishing
  • isolate read-only build work from minimal tag, attestation, and publication jobs
  • attest main.js and manifest.json, re-download and hash the uploaded assets, and publish the draft release only after verification
  • add deterministic local release planning and version contracts with recovery coverage
  • remove the obsolete npm version path and @semantic-release/git

Security model

  • workflows default to no permissions and grant each job only its required scopes
  • write-capable jobs never check out or execute repository or artifact code
  • the publisher accepts only a bot-created same-repository release PR merged by the repository owner
  • attestations are bound to this workflow, the exact source ref, and the exact release commit
  • retry paths validate generated commit provenance, recover orphan branches and stale PR metadata, and fail closed on incomplete prior releases

Validation

  • npm ci
  • npm run lint
  • npm run format:check
  • npm run typecheck
  • npm run build
  • npm run test - 71 files, 909 tests
  • focused release tests - 28 tests
  • uv run --with-requirements docs/requirements.txt mkdocs build -f docs/mkdocs.yml -d site
  • actionlint 1.7.7
  • npm audit --audit-level=high - 0 vulnerabilities
  • real planner result - patch release 2.17.4
  • two independent security and operability reviews - no remaining code blockers
  • production bundle unchanged - 410,805 bytes, SHA-256 6f593e89c049bc84a8a9b3da90a5f002ccc5b8e1066ae05aef671dbc12cd5ebc

Canary prerequisite

Keep this PR draft until release-PR authentication is selected. The repository currently blocks GITHUB_TOKEN from creating or approving PRs. Before merge, either enable that repository switch, provide a narrowly scoped GitHub App token, or change release PR opening to a manual maintainer step.

Comment thread .github/workflows/release-prepare.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
Comment thread .github/workflows/release.yml Fixed
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 10, 2026

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 0afd870
Status: ✅  Deploy successful!
Preview URL: https://f18dc747.podnotes.pages.dev
Branch Preview URL: https://ci-release-pr-pipeline.podnotes.pages.dev

View logs

@chhoumann
chhoumann marked this pull request as ready for review July 10, 2026 08:04
@chhoumann
chhoumann merged commit 28c4e9a into master Jul 10, 2026
5 checks passed
@chhoumann
chhoumann deleted the ci/release-pr-pipeline branch July 10, 2026 08:05

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0afd8709bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +278 to +283
const openPulls = await github.paginate(github.rest.pulls.list, {
owner,
repo,
state: 'open',
head: `${owner}:${branch}`,
per_page: 100,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Close superseded release PRs before opening a new one

When a release PR is already open and a later master commit changes the planned bump (for example, patch to minor), this only searches for the new release/${version} branch, leaving the older bot-generated release/* PR open with its previously dispatched Test check. If that stale PR is merged, release-trigger.yml rejects it because the squash parent no longer matches the recorded base, but the stale version bump has already landed on master; close or invalidate other generated release PRs when a new plan supersedes them.

Useful? React with 👍 / 👎.

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