Skip to content

ci: add rolling latest release workflow - #18

Merged
hmziqrs merged 1 commit into
mainfrom
ci/rolling-latest-release
Jul 29, 2026
Merged

ci: add rolling latest release workflow#18
hmziqrs merged 1 commit into
mainfrom
ci/rolling-latest-release

Conversation

@hmziqagent

Copy link
Copy Markdown
Collaborator

What

On every push to main, build the 6 cross-compiled release targets and overwrite the assets on the latest GitHub Release — a rolling snapshot refreshed every commit. Same pattern as hmziqrs/flutter-starter's releases/tag/latest.

How

A single softprops/action-gh-release step with tag_name: latest, prerelease: true, make_latest: false:

  • latest is resolved by tag name; same-named assets are replaced each run (the "overwrite"), so the release stays a single object — no duplicates.
  • prerelease + make_latest: false keep stable v* releases holding the green Latest badge; this snapshot lives at /releases/download/latest/....

Jobs (mirror release.yml, no new patterns):

  • build — the same 6-target matrix (linux musl x86_64/aarch64, macOS x86_64/aarch64, windows msvc x86_64/aarch64).
  • supply-chaincargo-deny + cargo-audit gate.
  • lint-scripts / lint-scripts-windows — parse-check install.sh / install.ps1 before they ship.
  • publish — assemble SHA256SUMS, then action-gh-release to the latest tag.

release.yml (tagged v* releases) is untouched.

Branch note

Trigger is main — this repo's default branch (no master exists on freeoxide/tunnel). flutter-starter uses master because its default branch is master; same pattern, different branch name.

Verified

  • YAML parses; 16/16 structural checks pass (job graph, permissions tiering, override inputs, action SHAs match release.yml).
  • Passed a 3-lens adversarial review (action-semantics, race/state-safety, drift-vs-release.yml); matrix/SHAs/packaging confirmed byte-identical to release.yml.

After merge

First push to main (or a manual workflow_dispatch) creates the latest release with the 6 archives + installers + SHA256SUMS. A subsequent push replaces (not duplicates) the assets.

On every push to `main`, build the 6 cross-compiled release targets and overwrite the assets on the `latest` GitHub Release — a rolling snapshot (prerelease, make_latest:false) using the flutter-starter releases/tag/latest pattern (single softprops/action-gh-release step, tag_name: latest).

Mirrors release.yml: same 6-target build matrix, the cargo-deny/cargo-audit supply-chain gate, and the install.sh/install.ps1 lint gates, all blocking publish. The tagged v* release flow (release.yml) is untouched.
@hmziqrs
hmziqrs merged commit 217158a into main Jul 29, 2026
8 checks passed
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