Release 0.1.37 deployment prep
This commit is contained in:
Executable
+99
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if [[ $# -lt 1 || $# -gt 2 ]]; then
|
||||
echo "Usage: $0 CANDIDATE.deb [PREVIOUS.deb]" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
candidate="$(realpath "$1")"
|
||||
previous=""
|
||||
|
||||
[[ -f "$candidate" ]] || { echo "Package not found: $candidate" >&2; exit 1; }
|
||||
|
||||
if [[ $# -eq 2 ]]; then
|
||||
previous="$(realpath "$2")"
|
||||
[[ -f "$previous" ]] || { echo "Package not found: $previous" >&2; exit 1; }
|
||||
fi
|
||||
|
||||
echo "Validating $(basename "$candidate") on Debian Trixie"
|
||||
|
||||
docker_args=(
|
||||
run --rm -i
|
||||
-v "$candidate:/packages/candidate.deb:ro"
|
||||
)
|
||||
|
||||
if [[ -n "$previous" ]]; then
|
||||
docker_args+=( -v "$previous:/packages/previous.deb:ro" )
|
||||
fi
|
||||
|
||||
docker "${docker_args[@]}" debian:trixie-slim \
|
||||
bash -s -- "${previous:+/packages/previous.deb}" <<'CONTAINER'
|
||||
set -euo pipefail
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update -qq
|
||||
|
||||
previous="${1:-}"
|
||||
|
||||
if [[ -n "$previous" ]]; then
|
||||
apt-get install -y -qq "$previous" >/tmp/previous-install.log
|
||||
|
||||
cat > /etc/ekklesia-classroom/device.conf <<'CONFIG'
|
||||
# Configuration carried forward from 0.1.36
|
||||
UPDATE_URL=https://updates.riverofglorymn.org
|
||||
CHANNEL=canary
|
||||
DVD_ENABLED=true
|
||||
UI_SCALE=1.25
|
||||
MQTT_ENABLED=true
|
||||
MQTT_HOST=broker.example.test
|
||||
MQTT_PORT=1884
|
||||
MQTT_USERNAME=classroom
|
||||
MQTT_PASSWORD=preserve-me
|
||||
CUSTOM_SETTING=preserve-me-too
|
||||
CONFIG
|
||||
fi
|
||||
|
||||
apt-get install -y -qq /packages/candidate.deb >/tmp/candidate-install.log
|
||||
|
||||
command -v nmtui >/dev/null
|
||||
command -v lpadmin >/dev/null
|
||||
command -v lpinfo >/dev/null
|
||||
|
||||
systemctl is-enabled NetworkManager.service >/dev/null
|
||||
systemctl is-enabled cups.service >/dev/null
|
||||
! systemctl is-enabled NetworkManager-wait-online.service >/dev/null 2>&1
|
||||
|
||||
grep -q '^managed=false$' /etc/NetworkManager/NetworkManager.conf
|
||||
|
||||
# A normal Docker container has Ethernet and no Wi-Fi adapter. Reaching this
|
||||
# point proves package configuration did not require Wi-Fi hardware.
|
||||
! find /sys/class/net -mindepth 2 -maxdepth 2 -type d -name wireless | grep -q .
|
||||
|
||||
/usr/sbin/cupsd
|
||||
sleep 1
|
||||
|
||||
driver='foomatic-db-compressed-ppds:0/ppd/foomatic-ppd/Generic-PCL_6_PCL_XL_Printer-pxlcolor.ppd'
|
||||
lpinfo -m | grep -q "^${driver} "
|
||||
|
||||
classroom-printer-setup 192.0.2.10 >/tmp/printer-first.log
|
||||
classroom-printer-setup 192.0.2.10 >/tmp/printer-second.log
|
||||
lpstat -p Classroom_Color -d -v | grep -q 'socket://192.0.2.10:9100'
|
||||
|
||||
if [[ -n "$previous" ]]; then
|
||||
grep -q '^CHANNEL=canary$' /etc/ekklesia-classroom/device.conf
|
||||
grep -q '^DVD_ENABLED=true$' /etc/ekklesia-classroom/device.conf
|
||||
grep -q '^UI_SCALE=1.25$' /etc/ekklesia-classroom/device.conf
|
||||
grep -q '^MQTT_PASSWORD=preserve-me$' /etc/ekklesia-classroom/device.conf
|
||||
grep -q '^CUSTOM_SETTING=preserve-me-too$' /etc/ekklesia-classroom/device.conf
|
||||
[[ "$(grep -c '^LIVE_ENABLED=' /etc/ekklesia-classroom/device.conf)" -eq 1 ]]
|
||||
|
||||
apt-get install --reinstall -y -qq /packages/candidate.deb \
|
||||
>/tmp/candidate-reinstall.log
|
||||
[[ "$(grep -c '^LIVE_ENABLED=' /etc/ekklesia-classroom/device.conf)" -eq 1 ]]
|
||||
fi
|
||||
|
||||
echo "Trixie package, upgrade, networking, printing and reinstall checks passed."
|
||||
CONTAINER
|
||||
Reference in New Issue
Block a user