Skip to content

[CI] Automate binary builds and prerelease publishing#489

Merged
CaseyLabs merged 15 commits intoGoMudEngine:masterfrom
clabs-public-forks:test/release-prerelease-automation-upstream
Apr 17, 2026
Merged

[CI] Automate binary builds and prerelease publishing#489
CaseyLabs merged 15 commits intoGoMudEngine:masterfrom
clabs-public-forks:test/release-prerelease-automation-upstream

Conversation

@CaseyLabs
Copy link
Copy Markdown
Collaborator

@CaseyLabs CaseyLabs commented Apr 17, 2026

Summary

  • publish release binaries only after changes land on master
  • allow manual test releases through workflow_dispatch
  • publish workflow-created releases as prereleases, never as Latest
  • upload per-platform binaries, a _datafiles archive, and a checksum manifest
  • document the downstream prerelease flow and ignore generated bin/ output

Example

image

Why

  • release binaries should not be produced during PR iteration
  • downstream still needs a way to test the release path without merging to master
  • separate assets are easier for end users than a single all-in-one bundle
  • manual test releases need safe, predictable generated tags
  • release publishing should avoid a third-party action in the write-token step

Trigger Model

  • PRs do not run the release workflow
  • pushes to non-master branches do not run the release workflow
  • pushes to master do run the release workflow
  • workflow_dispatch can run the same release flow manually for downstream testing
  • each release gets a generated prerelease tag using UTC time plus the commit SHA
  • optional manual release_label values are validated as [A-Za-z0-9._-]+
  • manually generated release tags are pinned to the dispatched commit SHA

Implementation

  • switch the release workflow trigger from tag pushes to pushes on master
  • add workflow_dispatch with an optional safe release_label suffix
  • compute generated prerelease metadata in a prep job
  • keep the binary's embedded version tied to the semver in main.go
  • publish releases with GitHub CLI gh release create
  • keep releases marked as prereleases and not Latest
  • use GitHub-generated release notes
  • update .github/RELEASING.md for the new downstream prerelease process
  • ignore generated bin/ build output
  • upload these assets:
    • gomud-ALL-datafiles-<generated-tag>.zip
    • gomud-windows_x64.exe
    • gomud-darwin_arm64
    • gomud-darwin_x64
    • gomud-linux_x64
    • gomud-linux_arm5
    • gomud-<generated-tag>-SHA256SUMS.txt

Validation

  • actionlint .github/workflows/build-and-release.yml
  • yamllint .github/workflows/build-and-release.yml
  • make ci-local
  • make js-lint
  • focused bash and zsh checks for the release_label validation pattern

Stacking

  • upstream-ready branch replays the downstream stacked release commits onto upstream/master

Upstream Move

@CaseyLabs CaseyLabs changed the title Feature: Automate prerelease publishing and binary builds Feature: [CI] Automate prerelease and binary builds Apr 17, 2026
@CaseyLabs CaseyLabs changed the title Feature: [CI] Automate prerelease and binary builds Fix: [CI] Automate prerelease and binary builds Apr 17, 2026
@CaseyLabs CaseyLabs marked this pull request as ready for review April 17, 2026 14:06
@CaseyLabs CaseyLabs requested a review from Volte6 as a code owner April 17, 2026 14:07
@CaseyLabs CaseyLabs changed the title Fix: [CI] Automate prerelease and binary builds [CI] Automate binary builds and prerelease publishing Apr 17, 2026
Copy link
Copy Markdown
Member

@Volte6 Volte6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small request for change in the README.md language

Comment thread .github/RELEASING.md Outdated
Copy link
Copy Markdown
Member

@Volte6 Volte6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@CaseyLabs CaseyLabs merged commit ea50806 into GoMudEngine:master Apr 17, 2026
3 checks passed
@CaseyLabs CaseyLabs deleted the test/release-prerelease-automation-upstream branch April 17, 2026 18:50
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.

2 participants