#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PLAN_SCRIPT="${SCRIPT_DIR}/build-plan.sh" IMAGE="git.dsit.me/sandrodach/mindsift" COMMIT_SHA="$(git rev-parse --short=8 HEAD)" COMMIT_TREE="$(git rev-parse --short=12 HEAD^{tree})" # Helper mock check script MOCK_BIN="${SCRIPT_DIR}/.mock_check.sh" cat << 'EOF' > "${MOCK_BIN}" #!/usr/bin/env bash TARGET="$1" if [ "${MOCK_MODE}" = "tree_only" ] && [[ "${TARGET}" == *":tree-"* ]]; then exit 0 fi if [ "${MOCK_MODE}" = "sha_only" ] && [[ "${TARGET}" == *":sha-"* ]]; then exit 0 fi if [ "${MOCK_MODE}" = "all" ]; then exit 0 fi exit 1 EOF chmod +x "${MOCK_BIN}" trap 'rm -f "${MOCK_BIN}"' EXIT echo "============================================================" echo "TEST 1: Push to dev" echo "============================================================" export MOCK_MODE="none" REF="refs/heads/dev" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 2: Push/Merge to main (Tree ALREADY tested on dev)" echo "============================================================" export MOCK_MODE="tree_only" REF="refs/heads/main" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 3: Push to main (Tree NOT yet tested)" echo "============================================================" export MOCK_MODE="none" REF="refs/heads/main" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 4: Release Tag v0.10.0 (Main sha image ALREADY exists)" echo "============================================================" export MOCK_MODE="sha_only" REF="refs/tags/v0.10.0" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 5: Release Tag v0.10.0 (Sha NOT found, but Tree exists)" echo "============================================================" export MOCK_MODE="tree_only" REF="refs/tags/v0.10.0" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 6: Release Tag v0.10.0 (Sha NOT found, Tree NOT found)" echo "============================================================" export MOCK_MODE="none" REF="refs/tags/v0.10.0" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}" echo "" echo "============================================================" echo "TEST 7: Pre-release Tag v0.10.0-rc.1 (Sha image exists)" echo "============================================================" export MOCK_MODE="sha_only" REF="refs/tags/v0.10.0-rc.1" COMMIT="HEAD" IMAGE="${IMAGE}" CHECK_IMAGE_CMD="${MOCK_BIN}" "${PLAN_SCRIPT}"