Skip to content

fix(ci): publish release binaries again - #1760

Merged
fclairamb merged 1 commit into
mainfrom
fix/release-binaries
Aug 9, 2026
Merged

fix(ci): publish release binaries again#1760
fclairamb merged 1 commit into
mainfrom
fix/release-binaries

Conversation

@fclairamb

Copy link
Copy Markdown
Owner

Problem

Fixes #1738 — the last four releases (v0.15.2 → v0.16.2) shipped with no downloadable binaries.

Two compounding causes:

  1. The release workflow never ran. Since release-please was introduced (chore(ci): add release-please, semantic-pr, and fix CI issues #1578), tags and releases are created with the default GITHUB_TOKEN. GitHub deliberately does not fire workflows for events produced by that token, so goreleaser.yml's push: tags trigger has been dead ever since. There are only 3 goreleaser runs in the repo's entire history, the last one on 2026-01-11 for v0.15.1.
  2. When it did run, it failed anyway. All three runs ended with goreleaser exiting 1. The GOTOOLCHAIN: auto fix from fix(ci): build release binaries again by allowing Go toolchain download #1717 was never actually exercised, because of cause 1.

Fix

Replace goreleaser with a matrix build using wangyoucao577/go-release-action, and — the important part — call it from the release-please workflow directly instead of relying on a tag event that can never fire.

  • .github/workflows/release-artifacts.yml (new) — reusable matrix build. Triggers: workflow_call (from release-please), workflow_dispatch (to backfill already-published releases), and push: tags (hand-pushed tags).
  • .github/workflows/release-please.yml — exposes release_created / tag_name and chains the build job when a release is cut.
  • .github/workflows/goreleaser.yml and .goreleaser.yaml — removed.
  • README.md — the download link was a broken relative /releases; now points at the releases page and lists the available platforms.

goversion: go.mod keeps the build toolchain tracking go.mod, so it cannot drift out of sync the way it did before.

Artifacts produced

GOOS GOARCH
linux amd64, arm64, armv6, armv7
darwin amd64, arm64
windows amd64, arm64

Each archive contains the ftpserver binary plus LICENSE and README.md, and is published with a .sha256 sum.

Verification

  • All 8 matrix targets cross-compile locally with the release ldflags.
  • actionlint passes on both workflows.

Follow-up

Once merged, the already-published releases can be backfilled with:

gh workflow run release-artifacts.yml -f tag=v0.16.2

🤖 Generated with Claude Code

Releases are cut by release-please, which creates the tag and the GitHub
release with the default GITHUB_TOKEN. Events produced by that token never
trigger another workflow, so the goreleaser job — triggered by `push: tags`
— stopped running entirely after release-please was introduced. That is why
v0.15.2 through v0.16.2 shipped with no downloadable binaries. On the three
occasions it did run (v0.15.0, v0.15.1) goreleaser failed anyway.

Replace it with a matrix build using wangyoucao577/go-release-action, and
call it directly from the release-please workflow so it no longer depends on
a tag event firing. A `workflow_dispatch` trigger is kept to backfill
binaries on releases that are already published, and `push: tags` still
covers hand-pushed tags.

Binaries are published for linux, darwin and windows on amd64/arm64, plus
linux armv6 and armv7.

Fixes #1738

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@fclairamb
fclairamb force-pushed the fix/release-binaries branch from 2266167 to 93793ba Compare August 9, 2026 15:08
@fclairamb
fclairamb merged commit 4fc7783 into main Aug 9, 2026
4 checks passed
@fclairamb
fclairamb deleted the fix/release-binaries branch August 9, 2026 15:11
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