#!/usr/bin/env bash # Build the image and run `archduino install --no-tui --no-sudo` end-to-end. # Exits non-zero on any failure. Intended for local dev + Plan 4 CI. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" IMAGE=archduino-integration:latest echo "--- building image" docker build -f "$SCRIPT_DIR/Dockerfile" -t "$IMAGE" "$REPO_ROOT" echo "--- run 1: fresh install" docker run --rm "$IMAGE" install --no-tui --no-sudo echo "--- run 2: idempotent (marker already present)" # Persist home across runs via a named volume. Clean up on any exit so a # failed assertion doesn't leak the volume to the next run. VOL=archduino-integration-home trap 'docker volume rm "$VOL" >/dev/null 2>&1 || true' EXIT docker volume create "$VOL" >/dev/null docker run --rm -v "$VOL":/home/tester "$IMAGE" install --no-tui --no-sudo docker run --rm -v "$VOL":/home/tester "$IMAGE" install --no-tui --no-sudo echo "--- assert marker exists in volume" docker run --rm -v "$VOL":/home/tester --entrypoint test "$IMAGE" -f /home/tester/.cache/archduino/hello.ok echo "--- integration test PASSED"