Reorganised deployment scripts and added rollback functionality. Updated documentation and workflow for container image builds.
Test and publish container images / test (push) Successful in 2m50s
Test and publish container images / publish (push) Failing after 54s

This commit is contained in:
BuTzZ
2026-07-25 12:36:35 +02:00
parent 12eee8d211
commit c9a20aacd7
17 changed files with 642 additions and 73 deletions
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
set -Eeuo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
TEST_DIR="$(mktemp -d)"
trap 'rm -rf "$TEST_DIR"' EXIT
# shellcheck source=../common.sh
source "$ROOT_DIR/deploy/scripts/common.sh"
revision="0123456789abcdef0123456789abcdef01234567"
valid_env="$TEST_DIR/valid.env"
cat >"$valid_env" <<EOF
WATERMAPS_DEPLOY_REVISION=$revision
WATERMAPS_APP_IMAGE=registry.example:5000/team/watermaps:$revision
WATERMAPS_ROUTE_DATA_IMAGE=registry.example:5000/team/watermaps-route-data:$revision
EOF
wm_validate_images_env "$valid_env"
invalid_env="$TEST_DIR/invalid.env"
cat >"$invalid_env" <<EOF
WATERMAPS_DEPLOY_REVISION=$revision
WATERMAPS_APP_IMAGE=registry.example/team/watermaps:latest
WATERMAPS_ROUTE_DATA_IMAGE=registry.example/team/watermaps-route-data:$revision
EOF
if (wm_validate_images_env "$invalid_env" >/dev/null 2>&1); then
printf 'Beweglicher latest-Tag wurde als Release akzeptiert.\n' >&2
exit 1
fi
fake_bin="$TEST_DIR/bin"
mkdir -p "$fake_bin"
cat >"$fake_bin/docker" <<'SH'
#!/usr/bin/env bash
set -Eeuo pipefail
if [[ "${1:-}" == "image" && "${2:-}" == "inspect" ]]; then
printf '%s\n' \
'mirror.example/team/watermaps@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' \
'registry.example:5000/team/watermaps@sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
exit 0
fi
exit 1
SH
chmod +x "$fake_bin/docker"
PATH="$fake_bin:$PATH"
resolved="$(
wm_resolve_image_digest \
"registry.example:5000/team/watermaps:$revision"
)"
[[ "$resolved" == \
"registry.example:5000/team/watermaps@sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" ]]
printf 'Commit-Tag- und Digest-Prüfungen: OK\n'
@@ -10,6 +10,7 @@ FAKE_BIN="$TEST_DIR/bin"
DATA_DIR="$TEST_DIR/data"
RUNTIME_DIR="$TEST_DIR/runtime"
ENV_FILE="$TEST_DIR/production.env"
IMAGES_ENV_FILE="$TEST_DIR/images.env"
mkdir -p "$FAKE_BIN" "$DATA_DIR/local" "$RUNTIME_DIR"
cat >"$ENV_FILE" <<EOF
@@ -17,6 +18,12 @@ WATERMAPS_DATA_DIR=$DATA_DIR
WATERMAPS_RUNTIME_DIR=$RUNTIME_DIR
EOF
cat >"$IMAGES_ENV_FILE" <<'EOF'
WATERMAPS_DEPLOY_REVISION=0123456789abcdef0123456789abcdef01234567
WATERMAPS_APP_IMAGE=registry.example/watermaps:0123456789abcdef0123456789abcdef01234567
WATERMAPS_ROUTE_DATA_IMAGE=registry.example/watermaps-route-data:0123456789abcdef0123456789abcdef01234567
EOF
cat >"$FAKE_BIN/id" <<'SH'
#!/usr/bin/env bash
if [[ "${1:-}" == "-u" ]]; then
@@ -95,6 +102,7 @@ chmod +x "$FAKE_BIN/id" "$FAKE_BIN/mountpoint" "$FAKE_BIN/docker"
export PATH="$FAKE_BIN:$PATH"
export WATERMAPS_ENV_FILE="$ENV_FILE"
export WATERMAPS_IMAGES_ENV_FILE="$IMAGES_ENV_FILE"
export WM_TEST_ROOT="$ROOT_DIR"
# A first successful activation creates an active index and a validated marker.