Skip to content

ci: simplify release pipeline — single runner, Linux binaries only#20

Merged
shahid-io merged 1 commit into
mainfrom
ci/simplify-release-pipeline
May 10, 2026
Merged

ci: simplify release pipeline — single runner, Linux binaries only#20
shahid-io merged 1 commit into
mainfrom
ci/simplify-release-pipeline

Conversation

@shahid-io

Copy link
Copy Markdown
Owner

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

  • `.goreleaser.yml` parses
  • `release.yml` syntax valid
  • CI green on this PR (only checks the test/lint suite — release.yml is not exercised on a non-tag push)
  • After merge: workflow_dispatch v0.2.0, verify binaries land

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.
@shahid-io
shahid-io merged commit 198f460 into main May 10, 2026
4 checks passed
@shahid-io
shahid-io deleted the ci/simplify-release-pipeline branch May 10, 2026 17:29
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