feat(ci): ISO releases by a Steamify release or by hand (not every push), Dutch time in the name, tag and label, annotated tags (their own date: the mirror sorts releases on the same commit in order)

This commit is contained in:
theupriser committed 2026-09-29 22:09:33 +02:00
1 parent 1ca1a71ed2
commit fc4c3ec95d
4 files changed
+20 -15

No files matched your search

+13 -8
View File
@@ -3,13 +3,13 @@
# builds the ISO on that tag and attaches it to its own release for it (steamify-iso.yml). The ISO lives there: # builds the ISO on that tag and attaches it to its own release for it (steamify-iso.yml). The ISO lives there:
# GitHub releases take at most 2 GB per file, the ISO is bigger, and a release on the mirror only survives its # GitHub releases take at most 2 GB per file, the ISO is bigger, and a release on the mirror only survives its
# syncs when its tag comes from here. # syncs when its tag comes from here.
# Name: the Steamify version the ISO gets (its newest release) plus the time: master releases # Name: the Steamify version the ISO gets (its newest release) plus the time (Dutch time, Europe/Amsterdam):
# v<steamify>-<YYYY.MM.DD>-<HHMM> (UTC), feat/steamify a pre-release v<steamify>-dev.<YYYY.MM.DD>-<HHMM>. # master releases v<steamify>-<YYYY.MM.DD>-<HHMM>, feat/steamify a pre-release v<steamify>-dev.<...>.
name: Steamify ISO release (tag) name: Steamify ISO release (tag)
# Started by a new Steamify release (its bundle.yml, secret ISO_DISPATCH_TOKEN) or by hand (Run workflow,
# on master for a release, on feat/steamify for a test build); not by every push.
on: on:
push:
branches: [master, feat/steamify]
workflow_dispatch: workflow_dispatch:
permissions: permissions:
@@ -32,11 +32,11 @@ jobs:
run: | run: |
steamify="$(gh release view -R theupriser/steamify-cachyos --json tagName -q .tagName)" steamify="$(gh release view -R theupriser/steamify-cachyos --json tagName -q .tagName)"
steamify="${steamify#v}" steamify="${steamify#v}"
stamp="$(date -u +%Y.%m.%d-%H%M)" stamp="$(TZ=Europe/Amsterdam date +%Y.%m.%d-%H%M)"
if [ "${{ github.ref }}" = refs/heads/master ]; then if [ "${{ github.ref }}" = refs/heads/master ]; then
tag="v$steamify-$stamp" pre="" name="CachyOS with Steamify Live ISO $steamify ($stamp UTC)" tag="v$steamify-$stamp" pre="" name="CachyOS with Steamify Live ISO $steamify ($stamp)"
else else
tag="v$steamify-dev.$stamp" pre="--prerelease" name="CachyOS with Steamify Live ISO $steamify (test build $stamp UTC)" tag="v$steamify-dev.$stamp" pre="--prerelease" name="CachyOS with Steamify Live ISO $steamify (test build $stamp)"
fi fi
# The Steamify section of CHANGELOG.md ("## CachyOS with Steamify Live ISO"), without its heading. # The Steamify section of CHANGELOG.md ("## CachyOS with Steamify Live ISO"), without its heading.
section="$(awk '/^## CachyOS with Steamify Live ISO/ {found = 1; next} found && /^#/ {exit} found' CHANGELOG.md)" section="$(awk '/^## CachyOS with Steamify Live ISO/ {found = 1; next} found && /^#/ {exit} found' CHANGELOG.md)"
@@ -47,7 +47,12 @@ jobs:
Sources: [Steamify](https://github.com/theupriser/steamify-cachyos/tree/v$steamify), this repository at this tag, and the packages' sources at [CachyOS](https://github.com/CachyOS) and [Arch Linux](https://archlinux.org/packages/). Sources: [Steamify](https://github.com/theupriser/steamify-cachyos/tree/v$steamify), this repository at this tag, and the packages' sources at [CachyOS](https://github.com/CachyOS) and [Arch Linux](https://archlinux.org/packages/).
$section" $section"
gh release create "$tag" --target "$GITHUB_SHA" $pre --title "$name" --notes "$notes" # An annotated tag: its own date, so the mirror sorts releases on the same commit in order (a
# lightweight tag only has its commit's date).
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag -a "$tag" -m "$name" "$GITHUB_SHA" && git push origin "refs/tags/$tag"
gh release create "$tag" --verify-tag $pre --title "$name" --notes "$notes"
echo "Released $tag" echo "Released $tag"
# Optional: sync the mirror at once instead of at its interval (a Gitea token with repository write # Optional: sync the mirror at once instead of at its interval (a Gitea token with repository write
+3 -3
View File
@@ -46,7 +46,7 @@ jobs:
m=("${BASH_REMATCH[@]}") m=("${BASH_REMATCH[@]}")
{ {
echo "STEAMIFY_VERSION=${m[1]}" echo "STEAMIFY_VERSION=${m[1]}"
# One moment for the ISO's label (profiledef.sh) and the release's name: the tag's. # One moment for the ISO's label (profiledef.sh) and the release's name: the tag's (Dutch time).
echo "STEAMIFY_BUILD_STAMP=${m[3]}${m[4]}${m[5]}_${m[6]}" echo "STEAMIFY_BUILD_STAMP=${m[3]}${m[4]}${m[5]}_${m[6]}"
echo "ISO_PRERELEASE=$([ -n "${m[2]}" ] && echo true || echo false)" echo "ISO_PRERELEASE=$([ -n "${m[2]}" ] && echo true || echo false)"
} >> "$GITHUB_ENV" } >> "$GITHUB_ENV"
@@ -70,9 +70,9 @@ jobs:
tag="${{ github.ref_name }}" b="$STEAMIFY_BUILD_STAMP" tag="${{ github.ref_name }}" b="$STEAMIFY_BUILD_STAMP"
stamp="${b:0:4}.${b:4:2}.${b:6:2}-${b:9:4}" stamp="${b:0:4}.${b:4:2}.${b:6:2}-${b:9:4}"
if [ "$ISO_PRERELEASE" = true ]; then if [ "$ISO_PRERELEASE" = true ]; then
name="CachyOS with Steamify Live ISO $STEAMIFY_VERSION (test build $stamp UTC)" name="CachyOS with Steamify Live ISO $STEAMIFY_VERSION (test build $stamp)"
else else
name="CachyOS with Steamify Live ISO $STEAMIFY_VERSION ($stamp UTC)" name="CachyOS with Steamify Live ISO $STEAMIFY_VERSION ($stamp)"
fi fi
# Never overwritten: a release for this tag that already has the ISO is left alone. # Never overwritten: a release for this tag that already has the ISO is left alone.
api="${{ github.server_url }}/api/v1/repos/${{ github.repository }}" api="${{ github.server_url }}/api/v1/repos/${{ github.repository }}"
+1 -1
View File
@@ -28,7 +28,7 @@
## CachyOS with Steamify Live ISO ## CachyOS with Steamify Live ISO
CachyOS 26.08 with Steamify built in: install CachyOS and turn the PC into a Steam Machine in one go. CachyOS 26.08 with Steamify built in: install CachyOS and turn the PC into a Steam Machine in one go.
Its version is the Steamify version on it plus the build date and time (a release on `master` is `v<Steamify version>-<date>-<HHMM UTC>`, e.g. `v2.9.1-2026.09.29-1432`). Its version is the Steamify version on it plus the build date and time (Dutch time; a release on `master` is `v<Steamify version>-<date>-<HHMM>`, e.g. `v2.9.3-2026.09.29-2205`). A new Steamify release starts one (a test build for now); by hand: Run workflow on "Steamify ISO release (tag)".
Releases: GitHub creates the tag and a release with the notes; the ISO itself (over GitHub's 2 GB limit) is built on the Gitea mirror and attached to its release for that tag (git.upriser.nl). Releases: GitHub creates the tag and a release with the notes; the ISO itself (over GitHub's 2 GB limit) is built on the Gitea mirror and attached to its release for that tag (git.upriser.nl).
**Features:** **Features:**
+3 -3
View File
@@ -4,10 +4,10 @@
iso_name="steamify-cachyos" iso_name="steamify-cachyos"
# The label follows the release name: the Steamify version on the ISO (steamify-prepare.sh put it there) # The label follows the release name: the Steamify version on the ISO (steamify-prepare.sh put it there)
# plus the build date and time, e.g. STEAMIFY_2_9_1_20260929_1432 (ISO 9660: at most 32 characters, # plus the build date and time, e.g. STEAMIFY_2_9_1_20260929_1432 (ISO 9660: at most 32 characters,
# A-Z 0-9 _). STEAMIFY_BUILD_STAMP (YYYYMMDD_HHMM, UTC) from the release workflow, so both name the same # A-Z 0-9 _). STEAMIFY_BUILD_STAMP (YYYYMMDD_HHMM, Dutch time) from the release workflow, so both name the
# moment; built by hand, the time now. # same moment; built by hand, the time now (Europe/Amsterdam).
_steamify="$(sed -n 's/^VERSION=//p' "${BASH_SOURCE[0]%/*}/airootfs/usr/local/share/steamify/steamify.sh" 2>/dev/null | head -n 1)" _steamify="$(sed -n 's/^VERSION=//p' "${BASH_SOURCE[0]%/*}/airootfs/usr/local/share/steamify/steamify.sh" 2>/dev/null | head -n 1)"
_stamp="${STEAMIFY_BUILD_STAMP:-$(date -u --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d_%H%M)}" _stamp="${STEAMIFY_BUILD_STAMP:-$(TZ=Europe/Amsterdam date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d_%H%M)}"
iso_label="STEAMIFY_${_steamify:+${_steamify//./_}_}${_stamp}" iso_label="STEAMIFY_${_steamify:+${_steamify//./_}_}${_stamp}"
iso_label="${iso_label:0:32}" iso_label="${iso_label:0:32}"
iso_publisher="CachyOS <https://cachyos.org>" iso_publisher="CachyOS <https://cachyos.org>"