Skip to content

ci(release): honest dispatch, drop chore-release rule, explicit version bump - #1235

Merged
chhoumann merged 1 commit into
masterfrom
ci/release-pipeline-rework
May 29, 2026
Merged

ci(release): honest dispatch, drop chore-release rule, explicit version bump#1235
chhoumann merged 1 commit into
masterfrom
ci/release-pipeline-rework

Conversation

@chhoumann

@chhoumann chhoumann commented May 29, 2026

Copy link
Copy Markdown
Owner

Reworks the release pipeline per the agreed decisions (round 2).

Changes

  • Honest dispatch: removed the inert releaseType/preRelease inputs + the invalid --release-as/--prerelease flags (semantic-release v24 has neither — the 'pre-release' path silently cut a normal release). Kept dryRun. Removed the dead repository_dispatch trigger and the tautological validate step.
  • Robust release detection: released is now true only when HEAD advances (the @semantic-release/git commit), fixing the prior $?-of-echo bug and the 'notify on no-op' case.
  • Drop chore -> patch rule: only feat/fix/perf trigger releases now.
  • Explicit version bump: replaced the implicit @semantic-release/npm version lifecycle hook with an explicit @semantic-release/exec step (node version-bump.mjs \${nextRelease.version}). version-bump.mjs now takes the version as an arg; the version npm script is removed. Manifest/versions bumping is now legible in config.

Validation

node version-bump.mjs 2.99.99 writes manifest+versions correctly (reverted) · build OK · 1083 tests pass · config loads. A dry-run dispatch on this branch validates plugin resolution; the exec prepare path only fully runs on a real release (dry-run skips prepare), so the first post-merge release is the final check.


Open in Devin Review

Summary by CodeRabbit

  • Chores
    • Simplified release workflow configuration by removing manual dispatch parameters.
    • Updated version management process to streamline automation of release versioning.
    • Enhanced release detection mechanism to better track version changes during the release process.

Review Change Stack

…t version bump

- release.yml: remove the inert `releaseType`/`preRelease` dispatch inputs and the
  invalid `--release-as`/`--prerelease` flags (not real semantic-release v24 flags);
  remove the dead `repository_dispatch` trigger and the now-tautological validate
  step. Detect a real release by HEAD advancing (fixes the prior exit-code-of-echo bug).
- Drop the `chore -> patch` releaseRule: only feat/fix/perf trigger releases now.
- Replace the implicit @semantic-release/npm version lifecycle hook with an explicit
  @semantic-release/exec step (`node version-bump.mjs <version>`) so the manifest.json /
  versions.json bump is legible in config instead of spooky-action-at-a-distance.
  version-bump.mjs now reads the version arg; the `version` npm script is removed.

Validated: version-bump.mjs <v> writes manifest/versions; build + 1083 tests pass.
The exec prepare path only fully runs on a real release (dry-run skips prepare), so
the first post-merge release is the final validation.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying quickadd with  Cloudflare Pages  Cloudflare Pages

Latest commit: 650026a
Status:⚡️  Build in progress...

View logs

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

Release automation is refactored to remove manual dispatch parameters and validation gates. The workflow now detects releases by comparing git HEAD before and after semantic-release execution, and version bumping is migrated from an npm lifecycle script to a semantic-release exec plugin that passes the version as a CLI argument.

Changes

Release Automation Refactoring

Layer / File(s) Summary
Release workflow restructuring
.github/workflows/release.yml
Workflow dispatch dryRun input description updated. The separate "Validate release" gating step and conditional if: statements are removed, making Build and Run tests execute unconditionally. Release step simplified: semantic-release invocation no longer handles RELEASE_TYPE/PRE_RELEASE logic; instead, released is determined by comparing git rev-parse HEAD before and after execution, with released=true only when not in dry-run and HEAD has changed.
Semantic-release exec integration for version bumping
package.json, version-bump.mjs
@semantic-release/exec dependency added and configured as a plugin with prepareCmd calling node version-bump.mjs ${nextRelease.version}. The scripts.version entry is removed since that npm lifecycle hook is no longer used. version-bump.mjs updated to prefer CLI argument (process.argv[2]) from the exec plugin while falling back to npm_package_version environment variable for manual invocations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • chhoumann/quickadd#1218: Modifies the same release workflow logic, particularly release gating/conditional flow and release detection (released=true/false determination).

Suggested labels

released

Poem

🐰 The release pipeline hops along,
With git's HEAD now sharp and strong,
No gates to guard, no exit codes to parse,
Just exec and version-bump—a cleaner class!
Semantic waves, a smoother song.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and accurately reflects the main changes: removal of dispatch inputs ('honest dispatch'), dropping the chore release rule, and making version bump explicit.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/release-pipeline-rework

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chhoumann
chhoumann merged commit addd581 into master May 29, 2026
7 of 9 checks passed
@chhoumann
chhoumann deleted the ci/release-pipeline-rework branch May 29, 2026 08:15

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional findings.

Open in Devin Review

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.13.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant