#!/usr/bin/env bash # Signage inside Ekklesia, end to end: builds the deployment image from the assembled workspace with # the platform's own Dockerfile, then runs the platform's split-topology deployment smoke against it # with the display-device scenarios listed in ci/display-scenarios. A disposable PostgreSQL and object # store, generated secrets, and an explicit migration apply against that fresh database only; nothing # is pushed, published, or logged in to. The image is removed afterwards. # # bash ci/integration.sh # # NOT RUN: the integration job is disabled (.gitea/workflows/ci.yml says why). This script still # expects Ekklesia's deployment tree at build/workspace, which the removed ci/assemble.sh used to # build; it is rewritten when Signage is installed into the generic image as a Module Package. set -Eeuo pipefail root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" workspace="$root/build/workspace" [[ -f "$workspace/deploy/Dockerfile" ]] || { echo "integration: Ekklesia's deployment tree is not at build/workspace." >&2 exit 1 } # Named and labeled as a CI stack of this run and job (the platform's scripts/lib/ci-project.sh), so # the workflow's final `ci-sweep.sh --job` removes it even if this script is killed before its trap. # shellcheck source=/dev/null source "$workspace/scripts/lib/ci-project.sh" project="$(ci_project_name signage-image)" image="${project}:latest" trap 'docker image rm --force "$image" >/dev/null 2>&1 || true' EXIT scenarios="$(sed -e 's/#.*//' -e '/^[[:space:]]*$/d' "$root/ci/display-scenarios" | tr '\n' ' ')" [[ -n "${scenarios// /}" ]] || { echo "integration: ci/display-scenarios lists no scenario." >&2 exit 1 } DOCKER_BUILDKIT=1 docker build --quiet --file "$workspace/deploy/Dockerfile" --tag "$image" \ --label "${EKKLESIA_CI_LABEL}=${project}" --label "${EKKLESIA_CI_CREATED_LABEL}=$(date +%s)" \ "$workspace" >/dev/null echo "integration: built the deployment image with Signage; scenarios: ${scenarios}" cd "$workspace" EKKLESIA_SMOKE_TOPOLOGY=split \ EKKLESIA_SMOKE_IMAGE="$image" \ EKKLESIA_SMOKE_DISPLAY_DEVICE=1 \ EKKLESIA_SMOKE_DISPLAY_SCENARIOS="$scenarios" \ EKKLESIA_SMOKE_WATCH_MS=120000 \ EKKLESIA_SMOKE_RECYCLE_WATCH_MS=120000 \ bash scripts/smoke-deploy.sh