The first two pieces of the installer, and deliberately the two that change nothing: what this machine is, and what would happen to it. The survey is the floor under every later choice -- a component can only offer a container shape if Docker answers for this user, or a host shape on a systemd machine with what that shape needs. It reports what it could not establish as unknown rather than guessing: an unprivileged probe of port 25 means "I may not bind this", not "something is listening", and reporting the first as the second is a lie an operator would act on. The plan is one list, and it will have three readers: --dry-run prints it, the interface will show it before anything happens, and apply will walk it. What you are shown is what runs. Tested on a fresh Debian 13 in qemu, which has neither Docker nor Node and so exercises every unavailable shape: 23 checks, including that nothing was created by any of it. The lab that machine runs in is in e2e/vm.
35 lines
1.4 KiB
Bash
Executable File
35 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-FileCopyrightText: 2026 Coffey Labs
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# Build the installer, copy it into the lab machine, and run a case there.
|
|
#
|
|
# e2e/vm/run.sh e2e/cases/containers.sh rewind, then run that case
|
|
# KEEP=1 e2e/vm/run.sh e2e/cases/hosts.sh run it on the machine as it is
|
|
#
|
|
# The rewind is the point: every case starts on an identical machine, so a
|
|
# failure is the installer's and not the last run's leftovers.
|
|
set -euo pipefail
|
|
CASE="${1:?usage: run.sh e2e/cases/<case>.sh}"
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
LAB="${LAB:-$HOME/.cache/inbuxa-lab}"
|
|
MEM="${MEM:-4096}"; VCPUS="${VCPUS:-2}"; SSH_PORT="${SSH_PORT:-2222}"
|
|
DISK="$LAB/lab.qcow2"; CLEAN="$LAB/lab-clean.qcow2"; SEED="$LAB/seed.iso"
|
|
LOG="$LAB/console.log"; PIDFILE="$LAB/qemu.pid"
|
|
. "$(dirname "$0")/lib.sh"
|
|
|
|
[ -f "$ROOT/$CASE" ] || { echo "no such case: $CASE" >&2; exit 1; }
|
|
[ "${KEEP:-}" = 1 ] || "$(dirname "$0")/reset.sh"
|
|
vm_running || { echo "the lab is not up -- run e2e/vm/up.sh" >&2; exit 1; }
|
|
|
|
echo "==> building the installer"
|
|
(cd "$ROOT" && GOOS=linux GOARCH=amd64 go build -o "$LAB/inbuxa" ./cmd/inbuxa)
|
|
|
|
echo "==> copying it in"
|
|
vm_scp "$LAB/inbuxa" [email protected]:/tmp/inbuxa >/dev/null
|
|
vm_scp "$ROOT/$CASE" [email protected]:/tmp/case.sh >/dev/null
|
|
vm_ssh 'chmod +x /tmp/inbuxa /tmp/case.sh'
|
|
|
|
echo "==> running $(basename "$CASE")"
|
|
vm_ssh 'sudo -E bash /tmp/case.sh'
|