2026-04-18 13:04:22 +02:00
|
|
|
name: Smoke latest ISO
|
|
|
|
|
|
|
|
|
|
# Manual-trigger smoke test against the last ISO `build-iso.yml` produced.
|
|
|
|
|
# Use this when you've changed something that only affects smoke-vm.sh,
|
|
|
|
|
# the PVE setup, or the secrets — skips the 25-min ISO rebuild and only
|
|
|
|
|
# runs the ~2-min VM boot + /:5000 check.
|
|
|
|
|
#
|
|
|
|
|
# The ISO lives at /data/smoke-cache/latest.iso on the runner, populated
|
|
|
|
|
# by build-iso.yml's "Cache ISO for smoke-latest" step. That path is
|
|
|
|
|
# inside the runner's already-mounted /data volume, so no extra bind
|
|
|
|
|
# mounts needed.
|
|
|
|
|
on:
|
|
|
|
|
workflow_dispatch:
|
|
|
|
|
|
|
|
|
|
concurrency:
|
|
|
|
|
group: smoke-latest
|
|
|
|
|
cancel-in-progress: false
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
smoke:
|
|
|
|
|
runs-on: self-hosted
|
|
|
|
|
timeout-minutes: 10
|
|
|
|
|
steps:
|
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
|
|
|
|
|
|
- name: Check cached ISO exists
|
|
|
|
|
run: |
|
|
|
|
|
iso=/data/smoke-cache/latest.iso
|
|
|
|
|
if [ ! -f "$iso" ]; then
|
|
|
|
|
echo "::error::$iso not found — trigger build-iso.yml first to populate the cache."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
echo "Will smoke: $iso"
|
|
|
|
|
ls -lh "$iso"
|
|
|
|
|
|
2026-04-18 13:17:51 +02:00
|
|
|
- name: Install smoke prerequisites
|
|
|
|
|
# Runner container is Alpine with a near-empty base; smoke-vm.sh
|
|
|
|
|
# needs curl, python3, arp-scan, and sudo (kept so the script
|
|
|
|
|
# also works when invoked from a dev laptop as a non-root user).
|
|
|
|
|
run: apk add --no-cache curl python3 arp-scan sudo
|
|
|
|
|
|
2026-04-18 13:04:22 +02:00
|
|
|
- name: Smoke-test ISO on Proxmox test host
|
|
|
|
|
env:
|
|
|
|
|
PVE_TEST_HOST: ${{ secrets.PVE_TEST_HOST }}
|
|
|
|
|
PVE_TEST_TOKEN: ${{ secrets.PVE_TEST_TOKEN }}
|
|
|
|
|
SMOKE_SHA: ${{ github.sha }}
|
|
|
|
|
run: ./scripts/smoke-vm.sh /data/smoke-cache/latest.iso
|