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
11 changes: 9 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# On a semver tag: build each image for amd64 and arm64, push both tags, move the
# floating major tag. Mirrors pin v<major> in the include URL and the image name, so
# moving it is the rollout.
# floating major tag, then publish the GitHub release. Mirrors pin v<major> in the
# include URL and the image name, so moving it is the rollout; the release comes last,
# so a published one names a version that is live.
name: release
on:
push:
Expand Down Expand Up @@ -51,3 +52,9 @@ jobs:
major="${GITHUB_REF_NAME%%.*}"
git tag -f "$major" "$GITHUB_SHA"
git push -f origin "refs/tags/$major"
# Notes list the pull requests merged since the last release. A re-run finds the
# release already published and leaves it.
- name: Publish the release
env:
GH_TOKEN: ${{ github.token }}
run: gh release view "$GITHUB_REF_NAME" > /dev/null 2>&1 || gh release create "$GITHUB_REF_NAME" --verify-tag --generate-notes
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,7 @@ flowchart LR
df --> rel["release.yml, on a tag vX.Y.Z"]
rel --> ghcr["ghcr.io/katoptra/toolbox:variant-vX.Y.Z<br/>and :variant-vX, amd64 and arm64"]
rel --> tag["the git tag vX, moved"]
tag --> gr["the GitHub release vX.Y.Z"]
tag --> inc["mirrors include toolbox.yml and an engine at v2"]
ghcr --> img["mirrors name IMAGE at -v2"]
```
Expand Down Expand Up @@ -942,8 +943,9 @@ Proton mirror.
### Releasing

Tag a commit `vX.Y.Z` and push the tag. The release workflow builds both images for
amd64 and arm64, pushes `<variant>-vX.Y.Z` and `<variant>-vX`, and moves the `vX` git
tag. Every mirror pinned to `vX` picks the change up on its next run; the workflow
amd64 and arm64, pushes `<variant>-vX.Y.Z` and `<variant>-vX`, moves the `vX` git
tag, and last publishes the GitHub release `vX.Y.Z`, its notes the pull requests merged
since the one before. Every mirror pinned to `vX` picks the change up on its next run; the workflow
callers follow through Dependabot. A breaking change to a verb's name or contract is a
new major, and every mirror moves its two `v2` strings by hand.

Expand Down
Loading