mirror of
https://github.com/theupriser/steamify-cachyos-live-iso.git
synced 2026-10-02 15:10:26 +02:00
Merge pull request #8 from theupriser/bugfix/iso-step-name
feat(ci): ISO releases: not on every push, Dutch time, annotated tags
This commit is contained in:
5 files changed
+37
-22
No files matched your search
@@ -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,22 +32,30 @@ 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 ISO's file on the mirror is named after the tag (steamify-iso.yml, profiledef.sh), so its
|
||||||
|
# download link is known now.
|
||||||
|
file="steamify-cachyos-${tag#v}-x86_64.iso" dl="$GITEA_URL/$GITEA_REPO/releases/download/$tag"
|
||||||
# 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)"
|
||||||
notes="The ISO is built from \`$(git rev-parse --short HEAD)\` (${{ github.ref_name }}) with Steamify $steamify and published on the mirror (GitHub releases take at most 2 GB per file); it appears there within minutes of the mirror's sync:
|
notes="The ISO is built from \`$(git rev-parse --short HEAD)\` (${{ github.ref_name }}) with Steamify $steamify and published on the mirror (GitHub releases take at most 2 GB per file), about half an hour after this release (the mirror's sync, then the build):
|
||||||
|
|
||||||
**Download: $GITEA_URL/$GITEA_REPO/releases/tag/$tag**
|
**Download: [$file]($dl/$file)** ([SHA-256]($dl/$file.sha256), [release page]($GITEA_URL/$GITEA_REPO/releases/tag/$tag))
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -46,12 +46,14 @@ 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)"
|
||||||
|
# The ISO's file name: the tag without its v (profiledef.sh).
|
||||||
|
echo "STEAMIFY_ISO_VERSION=${tag#v}"
|
||||||
} >> "$GITHUB_ENV"
|
} >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Steamify ${{ env.STEAMIFY_VERSION }} on the ISO
|
- name: Steamify on the ISO (the version the tag names)
|
||||||
run: ./steamify-prepare.sh
|
run: ./steamify-prepare.sh
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
@@ -70,9 +72,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 }}"
|
||||||
|
|||||||
+3
-3
@@ -28,13 +28,13 @@
|
|||||||
|
|
||||||
## 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:**
|
||||||
|
|
||||||
* **ISO:** called `steamify-cachyos-<date>-x86_64.iso`, labelled after the Steamify version on it and the build time (`STEAMIFY_2_9_1_20260929_1432`, was CachyOS's `COS_<year><month>`); CachyOS Hello installs it like CachyOS's own
|
* **ISO:** named after its release tag (`steamify-cachyos-2.9.3-2026.09.29-2230-x86_64.iso`; built by hand, the date), labelled after the Steamify version on it and the build time (`STEAMIFY_2_9_1_20260929_1432`, was CachyOS's `COS_<year><month>`); CachyOS Hello installs it like CachyOS's own
|
||||||
release (the build date is kept in `/etc/steammachine-iso-build`)
|
release (the ISO's own release, its tag without the v, is in `/etc/steammachine-iso-build` and the boot menu)
|
||||||
* **Installer (CachyOS - Steamify Installer):**
|
* **Installer (CachyOS - Steamify Installer):**
|
||||||
* A Steamify page after the packages page: which Steam Machine parts to set up (rows from
|
* A Steamify page after the packages page: which Steam Machine parts to set up (rows from
|
||||||
`steamify.sh --defaults --list`, the newest Steamify fetched before Calamares starts) and where
|
`steamify.sh --defaults --list`, the newest Steamify fetched before Calamares starts) and where
|
||||||
|
|||||||
@@ -4,15 +4,18 @@
|
|||||||
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>"
|
||||||
iso_application="Steamify CachyOS Live (based on CachyOS)"
|
iso_application="Steamify CachyOS Live (based on CachyOS)"
|
||||||
iso_version="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)"
|
# The file name (<iso_name>-<iso_version>-x86_64.iso) follows the release tag without its v
|
||||||
|
# (STEAMIFY_ISO_VERSION from the release workflow: steamify-cachyos-2.9.3-dev.2026.09.29-2230-x86_64.iso);
|
||||||
|
# built by hand, the date.
|
||||||
|
iso_version="${STEAMIFY_ISO_VERSION:-$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)}"
|
||||||
install_dir="arch"
|
install_dir="arch"
|
||||||
buildmodes=('iso')
|
buildmodes=('iso')
|
||||||
## GRUB
|
## GRUB
|
||||||
|
|||||||
+3
-1
@@ -140,7 +140,9 @@ prepare_profile(){
|
|||||||
|
|
||||||
info "Profile: [%s]" "${profile}"
|
info "Profile: [%s]" "${profile}"
|
||||||
|
|
||||||
local _iso_version="$(date +%y%m%d)"
|
# The release tag without its v when the release workflow builds (STEAMIFY_ISO_VERSION): the boot menu
|
||||||
|
# and /etc/steammachine-iso-build name the same release as the file, label and tag. By hand: the date.
|
||||||
|
local _iso_version="${STEAMIFY_ISO_VERSION:-$(date +%y%m%d)}"
|
||||||
change_grub_version "${_iso_version}"
|
change_grub_version "${_iso_version}"
|
||||||
|
|
||||||
# Fetch up-to-date version of CachyOS repo mirrorlist
|
# Fetch up-to-date version of CachyOS repo mirrorlist
|
||||||
|
|||||||
Reference in new issue
Block a user