Skip to content

ci: automate releases with release-please#5

Merged
rblaine95 merged 2 commits into
masterfrom
ci/release-please
Jul 1, 2026
Merged

ci: automate releases with release-please#5
rblaine95 merged 2 commits into
masterfrom
ci/release-please

Conversation

@rblaine95

@rblaine95 rblaine95 commented Jul 1, 2026

Copy link
Copy Markdown
Owner

What

Wire up automated versioning + releases for the plugin suite via release-please, and enforce the Conventional Commits it depends on.

  • ​.github/workflows/release-please.yaml — runs on push to master. Top-level permissions: {}; the release job alone gets contents/issues/pull-requests: write. Action SHA-pinned (@45996ed…, v5.0.0), matching the repo's hardening convention.
  • release-please-config.json + .release-please-manifest.json — single root package ., release-type: node, include-component-in-tag: false (clean vX.Y.Z tags). Manifest seeds 1.0.0 to match root package.json.
  • hk.pkl — new commit-msg hook (check_conventional_commit, hk's native util — no new tool dep) rejects non-conforming messages locally.
  • extensions/rules-guard/package.json — member version pinned to 0.0.0 (members aren't versioned independently; OMP never reads a member version on a git install).
  • README.md / AGENTS.md — document the release flow, the single-root-version model, and the enforced convention (incl. PR titles).
  • Folds in the already-queued @oh-my-pi/pi-coding-agent dev-dep bump to ^16.2.9 + reconciled bun.lock, kept consistent in one commit.

How versioning works now

Root package.json version is the single suite version OMP records in omp-plugins.lock.json and shows in omp plugin list. Merges to master as Conventional Commits (fix: → patch, feat: → minor, feat!: → major) accrue into a release PR; merging it bumps the version, writes CHANGELOG.md, and tags vX.Y.Z.

Notes

  • Conventional Commits are now required — enforced by the commit-msg hook and load-bearing for release computation. PR titles must conform too, since a squash-merge uses the title as the commit subject.
  • v1.0.0 tag now exists on master, so the README's #vX.Y.Z pin path resolves today.
  • The release PR runs on the default GITHUB_TOKEN, so it will not re-trigger CI (diff is version + changelog only). A PAT would be needed if CI-on-release-PR is ever wanted.

Verification

  • All config/workflow files parse (Bun native JSON + Bun.YAML).
  • release-please-config.json validated against release-please's published JSON schema — no invalid keys.
  • commit-msg hook proven: rejects non-conventional (exit 1), accepts conventional (exit 0).
  • hk check --all and bun check both pass; bun install --dry-run confirms lock ↔ manifest in sync.

Summary by CodeRabbit

  • New Features

    • Added automated release publishing on pushes to the main branch.
    • Established a single project version for releases, starting at 1.0.0.
  • Documentation

    • Updated release and extension setup guidance to reflect the new versioning model.
    • Clarified how plugin versions and install tags should be referenced.
  • Chores

    • Updated a project dependency to a newer patch version.

Add release-please to derive the suite version from Conventional
Commits instead of hand-bumping. The root `package.json` `version` is
the single suite version OMP records and shows; `extensions/*` members
are pinned to `0.0.0` since a git install never reads them.

Enforce the convention locally with an `hk` `commit-msg` hook
(`check_conventional_commit`) so a non-conforming message is rejected
before it reaches `master`, where release-please parses it.

The release job scopes `contents`/`issues`/`pull-requests` writes to
itself, leaving the workflow default at `permissions: {}`.

Also bump the `@oh-my-pi/pi-coding-agent` dev type dependency to
`^16.2.9` and reconcile `bun.lock`, keeping the manifest and lockfile
consistent in one change.

Ave Deus Mechanicus
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@rblaine95, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 48 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 21f42aa7-57ae-4829-89cc-a8bca225482e

📥 Commits

Reviewing files that changed from the base of the PR and between eb26d0b and 87d3207.

📒 Files selected for processing (1)
  • .github/workflows/release-please.yaml

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.

@coderabbitai

This comment was marked as outdated.

coderabbitai[bot]

This comment was marked as resolved.

Add a `concurrency` group keyed on workflow + ref so overlapping
pushes to `master` cannot reconcile the same release PR and tags at
once.

Use `cancel-in-progress: false` to queue rather than cancel: the
release path runs sequential, non-atomic API calls (update PR, create
tag, create release), and cancelling mid-run could leave a tag with
no release. Serializing avoids that partial state.

By the will of the Machine God
@rblaine95 rblaine95 merged commit d5fb179 into master Jul 1, 2026
2 checks passed
@rblaine95 rblaine95 deleted the ci/release-please branch July 1, 2026 17:03
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.

1 participant