#!/usr/bin/env bash # Run all molecule scenarios on all supported OS platforms. # Used by `make molecule-all`. Sequential — CI uses parallel matrix instead. # Platform list is sourced from scripts/distribute_molecule.py to avoid duplication. set -euo pipefail MOLECULE_BIN="$(realpath "${BIN:-.venv/bin}/molecule")" ROLE_DIR="$(cd "$(dirname "$0")/.." && pwd)/ansible/roles/gitea-runner" SCRIPTS_DIR="$(cd "$(dirname "$0")" && pwd)" # Read platforms from distribute_molecule.py (single source of truth) PLATFORMS_OUTPUT="$("$MOLECULE_BIN" python "${SCRIPTS_DIR}/distribute_molecule.py" --list-platforms 2>/dev/null || \ python3 "${SCRIPTS_DIR}/distribute_molecule.py" --list-platforms)" for p in $PLATFORMS_OUTPUT; do IFS="|" read -r name image command <<< "$p" export MOLECULE_PLATFORM_NAME="$name" MOLECULE_PLATFORM_IMAGE="$image" if [ -n "$command" ]; then export MOLECULE_PLATFORM_COMMAND="$command" else unset MOLECULE_PLATFORM_COMMAND fi echo "=== Platform: $name ===" for s in default multi-instance lifecycle template-content deregister update; do echo "--- Scenario: $s on $name ---" ( cd "$ROLE_DIR" if [ "$s" = "default" ]; then ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true ANSIBLE_INJECT_INVOCATION=1 "$MOLECULE_BIN" test else ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true ANSIBLE_INJECT_INVOCATION=1 "$MOLECULE_BIN" test -s "$s" fi ) done done