ci: simplify release pipeline — single runner, Linux binaries only#20
Merged
Conversation
The original release workflow used `goreleaser release --split`, which
is a GoReleaser Pro feature. The OSS goreleaser we use rejects the flag
("unknown flag: --split"). The workflow has been broken since v0.1.0
(which was published manually). v0.2.0 hit the same wall.
Two simplifications:
1. .goreleaser.yml — limit goos to [linux] only. macOS and Windows
users `go install` the binary; CGO + sqlite-vec cross-compile for
those targets needs heavier infra (zig / osxcross / mingw-w64
cross-tools) than a solo hobby project should be carrying. Re-add
when there's demand.
2. release.yml — drop the matrix, drop --split, drop the separate
"Merge & Publish" job. One ubuntu-latest runner builds Linux
amd64 + arm64 (the latter via gcc-aarch64-linux-gnu cross-compile)
and goreleaser publishes the GitHub Release with archives, checksums,
and a generated changelog.
Also added workflow_dispatch trigger so this workflow can be re-run
against an existing tag from the Actions UI without having to
delete-and-re-push the tag.
The CC=aarch64-linux-gnu-gcc env override sits inside the goreleaser
build template (only set when arch=arm64) so the workflow file stays
minimal.
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
Fixes the v0.2.0 release-workflow failure. Two simplifications:
1. `.goreleaser.yml` — Linux only
The original config built for linux / darwin / windows × amd64 / arm64. CGO + sqlite-vec cross-compile for darwin and windows from a Linux runner needs heavier infra (zig / osxcross / mingw-w64 cross-tools) than this hobby project should carry. Limit to linux amd64 + linux arm64 for v0.2.x; macOS and Windows users `go install` the source.
Re-add macOS and Windows when there's actual demand.
2. `release.yml` — drop the matrix, drop the broken Pro flag
The original used `goreleaser release --split` — a GoReleaser Pro feature. OSS goreleaser rejects it: `unknown flag: --split`. The workflow has been silently broken since v0.1.0 (which was almost certainly published by hand).
New shape: one `ubuntu-latest` runner. `apt install gcc-aarch64-linux-gnu` for arm64 cross-compile. `goreleaser release --clean` for the actual release. No matrix, no Merge & Publish job, no Pro flags.
Also added `workflow_dispatch` so we can re-run against an existing tag from the Actions UI without delete-and-re-push.
After this lands
To complete the v0.2.0 story:
```bash
either: workflow_dispatch the v0.2.0 tag from the Actions UI
or: delete + re-push v0.2.0
```
The release workflow runs, GitHub Releases page gets v0.2.0 with Linux binaries.
`go install github.com/shahid-io/inode@latest` already works for everyone — this PR only adds the Releases-page artifacts.
Test plan