This repository publishes release-cli and reusable GitHub Actions workflows
for releasing static Go binaries from one repository. A release can produce
GitHub Release assets, a multi-architecture image in GHCR, Homebrew and Scoop
update pull requests, and signed DEB, RPM, and APK repositories in Cloudflare
R2.
The supported application contract is intentionally narrow:
- one Go repository, one unscoped tag stream, and one GHCR image;
- Linux
amd64andarm64must publish the same nonempty set of static binary names; - stable, unscoped
vMAJOR.MINOR.PATCHtags; - static Darwin, Linux, and Windows binaries for
amd64andarm64; - Linux
amd64andarm64images atghcr.io/<owner>/<repository>; - DEB, RPM, and APK packages;
- cask-only Homebrew taps; and
- root-layout Scoop buckets.
Each consumer pins every reusable workflow and signer identity to one reviewed,
full meigma/release commit SHA. The workflows, setup action, and
release-cli at that commit form one release unit.
Release Please pull request
-> stable tag and draft GitHub Release
-> build, sign, and verify release assets
-> build and verify the OCI image
-> publish and attest the image
-> attest assets and publish the GitHub Release
-> open reviewed Homebrew and Scoop pull requests
-> optionally request central native-package publication
Publication controls are disabled in the copyable Go example. Rehearse the complete build and inspect its draft and workflow artifacts before enabling destinations.
- Release your first Go application
- Prepare your GitHub organization
- Adopt the release workflows
- Add Homebrew and Scoop
- Operate a native package repository
- Operate and recover releases
- Install
release-cli - Release system reference
release-clireference- Architecture and trust
Licensed under either the Apache License 2.0 or the MIT License, at your option.