Files
EvoFirewall/scripts/ci/resolve-upgrade-baseline.test.sh
T
Denozordec 4db34f94f2
quality / commitlint (push) Skipped
quality / changes (push) Successful in 7s
quality / openapi (push) Successful in 30s
quality / web (push) Successful in 1m1s
quality / api (push) Successful in 1m35s
quality / linux-agent-smoke (push) Failing after 18s
quality / docker-check (push) Failing after 3m28s
CD / quality (push) Failing after 7m1s
CD / publish (push) Skipped
fix(ci): resolve published upgrade baseline by digest
2026-10-26 13:26:53 +07:00

49 lines
2.2 KiB
Bash

#!/usr/bin/env sh
# No registry/network access: exercise the actual resolver with a fake Docker CLI.
set -eu
resolver="$(pwd)/scripts/ci/resolve-upgrade-baseline.sh"
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT HUP INT TERM
mkdir "$tmp/bin"
cat >"$tmp/bin/docker" <<'DOCKER'
#!/usr/bin/env sh
set -eu
printf '%s\n' "$*" >>"$FAKE_LOG"
case "$1" in
pull) exit "$FAKE_PULL_EXIT" ;;
image) printf '%s\n' "$FAKE_DIGESTS" ;;
*) exit 98 ;;
esac
DOCKER
chmod +x "$tmp/bin/docker"
export PATH="$tmp/bin:$PATH" FAKE_LOG="$tmp/docker.log" FAKE_PULL_EXIT=0
export IMAGE_REPOSITORY=git.shx.one/team/evofw REQUIRE_UPGRADE=true FIRST_RELEASE=false
digest="sha256:$(printf '%064d' 0)"
export FAKE_DIGESTS="$IMAGE_REPOSITORY@$digest" PREVIOUS_IMAGE="another.registry/deployed/app@$digest"
sh "$resolver" >"$tmp/result"
[ "$(cat "$tmp/result")" = "$PREVIOUS_IMAGE" ]
[ ! -s "$FAKE_LOG" ] || { echo 'Explicit pinned override must not resolve latest' >&2; exit 1; }
export PREVIOUS_IMAGE=''
sh "$resolver" >"$tmp/result"
[ "$(cat "$tmp/result")" = "$IMAGE_REPOSITORY@$digest" ]
grep -F "pull $IMAGE_REPOSITORY:latest" "$FAKE_LOG" >/dev/null
grep -F " $IMAGE_REPOSITORY:latest" "$FAKE_LOG" >/dev/null
export FAKE_PULL_EXIT=27
if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Missing published image must fail' >&2; exit 1; fi
[ ! -s "$tmp/result" ]
export FAKE_PULL_EXIT=0 FAKE_DIGESTS="wrong.registry/team/evofw@$digest"
if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Unrelated RepoDigest must fail' >&2; exit 1; fi
export FAKE_DIGESTS="$IMAGE_REPOSITORY@$digest
$IMAGE_REPOSITORY@sha256:$(printf '%064d' 1)"
if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Ambiguous RepoDigests must fail' >&2; exit 1; fi
export PREVIOUS_IMAGE="$IMAGE_REPOSITORY:latest"
if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Mutable override must fail rather than fall back' >&2; exit 1; fi
export PREVIOUS_IMAGE='' REQUIRE_UPGRADE=false
: >"$FAKE_LOG"
sh "$resolver" >"$tmp/result"
[ ! -s "$tmp/result" ] && [ ! -s "$FAKE_LOG" ]
export REQUIRE_UPGRADE=true FIRST_RELEASE=true
sh "$resolver" >"$tmp/result"
[ ! -s "$tmp/result" ] && [ ! -s "$FAKE_LOG" ]
echo 'Upgrade baseline resolver passed (override, latest digest, failure, wrong/ambiguous repo, PR and explicit first release)'