fix(release): ship workflow changes by releasing ci/build/refactor#268
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s semantic-release configuration so that workflow-impacting conventional commit types (ci:, build:, refactor:) produce a patch release, ensuring reusable workflow changes are actually shipped to tag-pinned consumers.
Changes:
- Configure
@semantic-release/commit-analyzerwithreleaseRulesto releasepatchforci,build, andrefactorcommit types. - Update
AGENTS.mdto document which conventional commit types trigger releases.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
.releaserc |
Adds releaseRules so workflow-changing commit types cut patch releases. |
AGENTS.md |
Updates contributor guidance to reflect release-triggering commit types. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address Copilot review thread: the ! breaking-change indicator applies to any commit type (refactor!:, ci!:, …), not only feat!:/fix!:. > 🤖 Generated by the Daily AI Assistant
Contributor
|
🎉 This PR is included in version 5.3.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
This repo's reusable workflows are its product, but the release config only ships a subset of the changes consumers depend on.
.releasercuses@semantic-release/commit-analyzerwith default (angular) rules, under which onlyfeat:(minor) andfix:/perf:(patch) cut a release. Workflow-changing commit types —ci:,build:,refactor:— produce no release, so the change lands onmainbut is never tagged, and consumers pinned to a tag (e.g.@v5.3.0) never inherit it.Concrete evidence — govulncheck is stranded right now
#266 (
ci(security): add govulncheck supply-chain scanning to validate-go-project) was promoted and merged tomain(aead873) specifically to give every Go consumer supply-chain scanning. But the🎉 Create Releaserun on that commit reported:No
v5.4.0was cut — latest release is stillv5.3.0(2026-05-29, pre-merge). Sovalidate-go-project.yaml's newgovulncheckjob exists onmainbut no consumer will ever run it (ksail pins@v5.3.0, go-template inherits the same way). The promoted PR's value is silently lost.Fix
Add
releaseRulestocommit-analyzerso the workflow-changing types trigger a patch release:{ "type": "ci", "release": "patch" } { "type": "build", "release": "patch" } { "type": "refactor", "release": "patch" }Custom
releaseRulesare evaluated before the defaults and are purely additive —feat:→minor,fix:/perf:→patch,revert:→patch all still apply, andchore:/docs:/test:/style:still correctly don't release. Rationale: in this repo, aci:/build:/refactor:change is a change to the shipped product, so it must reach consumers; an occasional no-op patch (consumer renovate bumps the pin) is far cheaper than silently stranding a feature.Self-completing: once merged, the next
Create Releaserun analyses all commits sincev5.3.0— including the strandedci(security)govulncheck commit — and (with these rules) cuts the patch release that finally ships govulncheck. The PR title isfix(...)so the release fires regardless.Also updates
AGENTS.mdrule 6 to document exactly which commit types release (was ambiguous — it listedchore:/ci:"for semantic-release" though neither released).Validation
.releasercis valid JSON (python3 -m json.tool).releaseRulessemantics confirmed against semantic-release docs (custom rules first, then defaults; additive).Trade-offs / notes
ci:also covers this repo's own meta-CI (e.g.sync-labels); those will now cut a harmless patch. Acceptable — under-releasing strands consumer-facing features (the bug above); over-releasing only adds a no-op tag.ci:stay non-releasing and instead wants workflow changes authored asfeat:/fix:, that's an alternative — but it relies on author discipline and wouldn't recover the already-merged govulncheck commit.