ci(release): wire release-please + publish flow#15
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds release automation for usp, wiring release-please to maintain release PRs and adding a tag-triggered publish workflow aligned with the shared hop-top/.github pipeline.
Changes:
- Adds a release-please workflow for
mainpushes and manual dispatch. - Adds a publish workflow for component-shaped version tags.
- Seeds release-please configuration and manifest for prerelease Go releases under the
uspcomponent.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.github/workflows/release-please.yml |
Runs release-please with the repo-specific config and manifest. |
.github/workflows/publish.yml |
Calls the shared publish-on-tag workflow for usp/v* tags. |
.github/release-please-config.json |
Defines Go prerelease behavior, tag shape, component name, and changelog sections. |
.github/.release-please-manifest.json |
Seeds the initial prerelease manifest version. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Adopt hop-top/.github's release pipeline: - release-please.yml: opens standing release PR on push to main; uses workflow_dispatch for manual retriggers (SKILL: 'Retriggering release-please after sibling-PR conflicts'). - publish.yml: dispatches hop-top/.github's publish-on-tag.yml on '*/v*' tag pushes. Single 'usp' ecosystem entry (Go-only); no registry publish step, only canonical tag-shape + proxy.golang.org pickup. - release-please-config.json: prerelease channel four-piece combo (prerelease + prerelease-type 'alpha.0' + versioning 'prerelease' + bump-minor-pre-major), component 'usp' (single segment per tag-shape glob trap), release-type 'go'. - .release-please-manifest.json: seed at 0.1.0-alpha.0 (prerelease-shaped, avoids the '0.0.0' trap and stable-bump surprises). Three-name alignment (config.component == publish.ecosystems key == mirror basename) is satisfied: 'usp' == 'usp' == 'hop-top/usp'.
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.
Summary
Adopt
hop-top/.github's release pipeline for usp, perhop-top-dotgithubSKILL.release-please.yml— opens standing release PR onpush: main;workflow_dispatchenabled for manual retriggers.publish.yml— callshop-top/.github/.github/workflows/publish-on-tag.yml@v0on*/v*tag pushes. Single Go-only ecosystem entry; no registry publish step (Go ships viaproxy.golang.orgpulling tags). Wired anyway for canonical tag-shape convention and so any future TS/Py/Rs SDK additions just need an extraecosystems:entry.release-please-config.json— prerelease channel four-piece combo:prerelease: true+prerelease-type: \"alpha.0\"+versioning: \"prerelease\"+bump-minor-pre-major: true.component: usp(single segment, dodges the tag-shape glob trap).release-type: go..release-please-manifest.json— seed0.1.0-alpha.0.Three-name alignment (config.component == publish.ecosystems key == mirror basename):
usp==usp==hop-top/usp. ✓Dry-run
The first cut comes out as
usp/v0.1.0-alpha.1rather thanalpha.0. Reason: release-please treats the manifest seed as "the last released version" and the next bump increments the counter. To actually shipusp/v0.1.0-alpha.0as the literal first tag, add aRelease-As: 0.1.0-alpha.0footer on the first qualifying commit (kit did this — its first tag waskit/v0.2.0-alpha.0). Otherwise the first published tag isalpha.1, which is consistent with the SKILL's stated behavior but worth being explicit about.Pre-merge checklist
Before this can actually ship a release, the
hop-top/usprepo needs these secrets (per SKILL §"Secrets reference"):GH_RELEASE_PLEASE_PAT— fine-grained PAT,Contents: RW+Pull Requests: RW+Workflows: RWonhop-top/usp. (Required: defaultGITHUB_TOKENPRs don't trigger downstream workflows.)GH_MIRROR_PAT— fine-grained PAT,Administration: RW+Contents: RWonhop-top/usp. (Required bymirror-subtree, even though usp is its own canonical Go repo — the workflow still expects the secret.)No
NPM_REGISTRY_TOKEN/CARGO_REGISTRY_TOKEN/ PyPI setup needed (Go-only).Test plan
release-pleaseworkflow runs and opens a standing release PR.chore(release): usp 0.1.0-alpha.1(or whatever counter).alpha.0first cut, or acceptalpha.1.Stacked on