Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 8 additions & 16 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,23 +117,15 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
run: |
# Mark the newest MAINLINE version as GitHub "Latest" so the stable
# .../releases/latest/download/<asset> URL tracks it (no separate
# rolling "latest" release — GitHub's built-in Latest is the single
# source of truth). A release/* back-port must NOT steal Latest from a
# newer mainline release, so it publishes with --latest=false.
if [ "${GITHUB_REF_NAME}" = master ]; then mk=--latest; else mk='--latest=false'; fi
gh release create "${{ steps.version.outputs.tag }}" \
"${{ steps.archive.outputs.asset }}" \
--title "${{ steps.version.outputs.tag }}" \
--notes "Repo snapshot of ${GITHUB_SHA}" \
--target "${GITHUB_SHA}"

- name: Update rolling "latest" release
# Only mainline moves "latest"; a release/* back-patch must not hijack
# the stable URL away from the newest master build.
if: steps.version.outputs.skip != 'true' && github.ref_name == 'master'
env:
GH_TOKEN: ${{ github.token }}
run: |
# Move the rolling "latest" tag/release to this commit so the
# stable .../releases/latest/download/ URL tracks the newest build.
gh release delete latest --yes --cleanup-tag || true
gh release create latest "${{ steps.archive.outputs.asset }}" \
--title "latest" \
--notes "Repo snapshot of ${GITHUB_SHA} (${{ steps.version.outputs.tag }})" \
--target "${GITHUB_SHA}"
--target "${GITHUB_SHA}" \
"$mk"
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ make sync-toolchain TOOLCHAIN_TAG=v0.8.0 # one rebase-mergeable commit; ope

## Releasing

Every push to `master` publishes a versioned snapshot release and moves the
rolling **`latest`** release (so `.../releases/latest/download/` always tracks
the newest build). Versions are semver `vMAJOR.MINOR.PATCH`; CI picks the bump
Every push to `master` publishes a versioned snapshot release and marks it
GitHub **"Latest"**, so `.../releases/latest/download/<asset>` always tracks the
newest build (no separate rolling tag — GitHub's built-in Latest is the single
source of truth). Versions are semver `vMAJOR.MINOR.PATCH`; CI picks the bump
from a `[bump:LEVEL]` marker in the commit **subject** (the body is free prose —
put the marker on the subject line, like `[skip ci]`; for squash merges that's
the PR title):
Expand Down
Loading