Skip to content

ci: tag-driven GitHub Releases - #10

Merged
ryanlitalien merged 1 commit into
mainfrom
ci/tag-driven-releases
Sep 13, 2026
Merged

ryanlitalien merged 1 commit into
mainfrom
ci/tag-driven-releases

Conversation

@ryanlitalien

Copy link
Copy Markdown
Member

Summary

Gives this repo the same tag-driven release strategy that ButterStack/butterstack-connector already uses.

  • New .github/workflows/release.yml, triggered only by pushing a v* tag. Merging to main publishes nothing.
  • The tag run first re-runs the exact same validation lint.yml runs (same steps, same action versions, copied verbatim), so a broken marketplace manifest can never be tagged into a release.
  • It then cuts the GitHub Release with the same invocation the connector uses: gh release create "$GITHUB_REF_NAME" --title "$GITHUB_REF_NAME" --generate-notes --verify-tag.
  • This repo has no build artifact and nothing to publish to a registry (it's a Claude Code plugin marketplace manifest, not a binary), so cutting the release is the workflow's only job.

What this deliberately does not touch

Per-plugin versions are independent and already out of step with each other on purpose (perforce/unity at 0.2.0, unreal/lore/godot/jenkins at 0.1.0). This PR does not add a guard forcing plugin versions to match the repo tag, and does not bump any plugin.json. The repo tag versions the collection, not any individual plugin.

Also added a short ## Releases section to the README documenting this in plain terms.

Verify

  • python3 -c "import yaml;yaml.safe_load(open('.github/workflows/release.yml'))" parses clean.
  • actions/checkout@v6 and actions/setup-node@v4 (copied from lint.yml) both confirmed to exist.
  • No plugin, agent markdown, plugin.json, or lint.yml was changed.

Test plan

  • After merge, push a test tag (e.g. v0.3.0) and confirm the workflow runs lint, then cuts a GitHub Release with generated notes.
  • Confirm a push to main alone triggers no release.

Add a release workflow triggered only by pushing a v* tag, matching the
house pattern already used in butterstack-connector. The tag run re-runs
the same marketplace lint as lint.yml (so a release can never be cut from
a broken manifest) and then cuts a GitHub Release with generated notes.

This repo has no build artifact, so the release step is the whole job.
Per-plugin versions in each plugin.json are untouched and keep moving on
their own independent cadence; the tag only versions the collection.

Also documents the strategy in a short README Releases section.
@ryanlitalien
ryanlitalien merged commit 882ff7c into main Sep 13, 2026
1 check passed
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