Point main at the production RadiantWave channel and guard it in CI
build-prod-android.yml / build-android (push) Successful in 5m3s
build-prod-commercial.yml / build-commercial (push) Failing after 4m3s
build-prod-kiosk.yml / build-kiosk (push) Failing after 3m23s

The dev->main merge left the channel block in flake.nix pointing at
radiantwave-dev, so prod ISOs built from main shipped the dev app (which
versions itself by short git hash) and the updater polled the dev Attic
manifest. Restore the channel block to main values, re-pin flake.lock to
the latest radiantwave main revision, and expose channelName so the prod
build workflows can fail fast if main ever resolves to the dev channel.
This commit is contained in:
NeilClack
2026-09-01 09:25:03 -05:00
parent 0860dea6c7
commit 6e446893f3
6 changed files with 61 additions and 7 deletions
+11
View File
@@ -17,6 +17,17 @@ jobs:
- name: Checkout - name: Checkout
run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git . run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git .
- name: Guard main branch is on the production channel
run: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
NAME=$(nix eval --impure --raw .#channelName)
if [ "$NAME" != "radiantwave" ]; then
echo "ERROR: main branch resolves to the '$NAME' channel, expected 'radiantwave'."
echo " A dev->main merge brought a dev-pointing channel block into flake.nix."
echo " Set channel.appInput/atticRepo/gitRef back to main values before building prod ISOs."
exit 1
fi
- name: Prepare output directory - name: Prepare output directory
run: mkdir -p /home/user/radiantwave run: mkdir -p /home/user/radiantwave
@@ -17,6 +17,17 @@ jobs:
- name: Checkout - name: Checkout
run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git . run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git .
- name: Guard main branch is on the production channel
run: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
NAME=$(nix eval --impure --raw .#channelName)
if [ "$NAME" != "radiantwave" ]; then
echo "ERROR: main branch resolves to the '$NAME' channel, expected 'radiantwave'."
echo " A dev->main merge brought a dev-pointing channel block into flake.nix."
echo " Set channel.appInput/atticRepo/gitRef back to main values before building prod ISOs."
exit 1
fi
- name: Prepare output directory - name: Prepare output directory
run: mkdir -p /home/user/radiantwave run: mkdir -p /home/user/radiantwave
+11
View File
@@ -17,6 +17,17 @@ jobs:
- name: Checkout - name: Checkout
run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git . run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git .
- name: Guard main branch is on the production channel
run: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
NAME=$(nix eval --impure --raw .#channelName)
if [ "$NAME" != "radiantwave" ]; then
echo "ERROR: main branch resolves to the '$NAME' channel, expected 'radiantwave'."
echo " A dev->main merge brought a dev-pointing channel block into flake.nix."
echo " Set channel.appInput/atticRepo/gitRef back to main values before building prod ISOs."
exit 1
fi
- name: Prepare output directory - name: Prepare output directory
run: mkdir -p /home/user/radiantwave run: mkdir -p /home/user/radiantwave
+11
View File
@@ -14,6 +14,17 @@ jobs:
- name: Checkout - name: Checkout
run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git . run: git clone --depth 1 ssh://git@gitea.radiantwavetech.com:2222/RadiantWaveTech/KioskConfig.git .
- name: Guard main branch is on the production channel
run: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
NAME=$(nix eval --impure --raw .#channelName)
if [ "$NAME" != "radiantwave" ]; then
echo "ERROR: main branch resolves to the '$NAME' channel, expected 'radiantwave'."
echo " A dev->main merge brought a dev-pointing channel block into flake.nix."
echo " Set channel.appInput/atticRepo/gitRef back to main values before building prod images."
exit 1
fi
- name: Prepare output directory - name: Prepare output directory
run: mkdir -p /home/user/radiantwave run: mkdir -p /home/user/radiantwave
Generated
+4 -4
View File
@@ -220,11 +220,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1787675420, "lastModified": 1787953913,
"narHash": "sha256-2Hq9IcgdDXQc2uQ4yC/5NZVjcZaFCcVS78vj+ee+y/Q=", "narHash": "sha256-6M0xyNIwhGiOiOyS+URYzhKdV69fRgifXYqoGmHrmaY=",
"ref": "main", "ref": "main",
"rev": "43cd93bbd7dde69c55c00a28c1691e1a192eda39", "rev": "fee31c87b8ece4bb025e7ec10aed03c9794e2143",
"revCount": 47, "revCount": 56,
"type": "git", "type": "git",
"url": "https://gitea.radiantwavetech.com/RadiantWaveTech/radiantwave.git" "url": "https://gitea.radiantwavetech.com/RadiantWaveTech/radiantwave.git"
}, },
+13 -3
View File
@@ -68,11 +68,19 @@
# #
# To flip branches, change ONLY these three values (then push/merge). # To flip branches, change ONLY these three values (then push/merge).
channel = { channel = {
appInput = radiantwave-dev; # dev appInput = radiantwave; # main
atticRepo = "radiantwave-dev"; # dev atticRepo = "radiantwave"; # main
gitRef = "?ref=dev"; # dev gitRef = ""; # main
}; };
# Exposed so CI (see .gitea/workflows/build-prod-*.yml) and humans can
# verify which channel this checkout resolves to. On `main` this must be
# "radiantwave"; on `dev` it must be "radiantwave-dev". The prod
# workflows fail fast if this isn't the production channel, so a merge
# that brings a dev-pointing channel block into `main` breaks the build
# instead of silently shipping dev builds as prod ISOs.
channelName = if channel.appInput == radiantwave then "radiantwave" else "radiantwave-dev";
# Live app-update side channel. The manifest is served by the # Live app-update side channel. The manifest is served by the
# fileserver; closures are fetched (never built) from the channel's # fileserver; closures are fetched (never built) from the channel's
# Attic cache. `repo` selects the channel — "radiantwave" (main) or # Attic cache. `repo` selects the channel — "radiantwave" (main) or
@@ -200,6 +208,8 @@
}; };
in in
{ {
inherit channelName;
packages.x86_64-linux.radiantwavekiosk = self.nixosConfigurations.radiantwavekiosk.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk = self.nixosConfigurations.radiantwavekiosk.config.system.build.toplevel;
packages.x86_64-linux.radiantwavekiosk-commercial = self.nixosConfigurations.radiantwavekiosk-commercial.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk-commercial = self.nixosConfigurations.radiantwavekiosk-commercial.config.system.build.toplevel;
packages.x86_64-linux.radiantwavekiosk-android = self.nixosConfigurations.radiantwavekiosk-android.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk-android = self.nixosConfigurations.radiantwavekiosk-android.config.system.build.toplevel;