-
Notifications
You must be signed in to change notification settings - Fork 7
docs(ci): document workflow buckets and history #253
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # GitHub Workflows | ||
|
|
||
| Guidance for the 11 workflows in this directory, grouped into five buckets. The root `CLAUDE.md` has the canonical release pipeline details — this file is a map and a source of intent. | ||
|
|
||
| ## Buckets | ||
|
|
||
| | Bucket | Files | Trigger | Purpose | | ||
| |---|---|---|---| | ||
| | CI | `ci.yml` | `push: main`, `pull_request` | Build/test/lint with `dorny/paths-filter` so each tool only runs when its paths (or `shared/`) change. | | ||
| | Auto-release | `auto-release-{cfl,jtk}.yml` | `push: main` | Dual-gate tag creation: path gate (Go code only) + commit gate (`feat:`/`fix:`). Creates `{tool}-v{base}.{run}` tags that trigger the release workflow. | | ||
| | Release | `release-{cfl,jtk}.yml` | Tag push (`cfl-v*`, `jtk-v*`) | GoReleaser matrix build (darwin/linux/windows × amd64/arm64), GitHub release, Homebrew cask push. Uses the tag-rename trick (see Pitfalls). | | ||
| | Packaging publish | `chocolatey-publish-{cfl,jtk}.yml`, `winget-publish-{cfl,jtk}.yml` | `workflow_dispatch` only | Publish to Chocolatey / submit to winget-pkgs. Called manually after a release; depends on release artifacts existing at the expected tag. | | ||
| | Packaging validation | `test-chocolatey.yml`, `test-winget.yml` | `push: main` with path filter on `tools/*/packaging/{chocolatey,winget}/**` | Post-merge dry-run validation (nuspec XML, PowerShell syntax, `choco pack`, winget manifest schema). These files aren't covered by `go test` or lint, so this is the only gate on them. | | ||
|
|
||
| ## History | ||
|
|
||
|
monit-reviewer marked this conversation as resolved.
|
||
| The packaging test workflows originally fired on `pull_request` (since Jan 2026, PR #11), spinning up `windows-latest` on every PR that touched packaging files. Issue #223 / PR #224 (Apr 2026) stripped that trigger — validation now runs only on `push: main`. PR #100 simplified the Chocolatey packaging itself (removed the custom uninstall script and `.ignore` file) per reviewer feedback from the Chocolatey community maintainer. The release workflow's tag-rename dance is a GoReleaser-Free constraint from the monorepo split — GoReleaser needs a semver tag (`v1.0.150`) but the project ships tool-prefixed tags (`cfl-v1.0.150`), so a temporary semver tag is created, consumed, then renamed. | ||
|
|
||
| ## Pitfalls | ||
|
|
||
| - **Don't re-add `pull_request` to `test-chocolatey.yml` / `test-winget.yml`.** That undoes PR #224 and burns `windows-latest` runners on every packaging-touching PR. | ||
| - **New packaging integrations must account for the tag rename.** GoReleaser runs *before* the tag is renamed from `v1.0.150` to `{tool}-v1.0.150`. Any download URLs generated by GoReleaser must use `url.template` to pin the final tool-prefixed tag, otherwise they reference the deleted temporary tag and 404. See `homebrew_casks` in `.goreleaser-{tool}.yml`. | ||
| - **`jira-ticket-cli.rb` is auto-generated from `jtk.rb`** via `sed` in `release-jtk.yml` because GoReleaser Free doesn't support `alternative_names` for casks. | ||
| - **Publish workflows are manual.** They don't fire automatically after a release — run them via `gh workflow run` once the release assets are in place. | ||
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.