From 8584308abaf2b3abe596dc78da2425cd37ed1f6a Mon Sep 17 00:00:00 2001 From: SimpleTest Date: Mon, 3 Aug 2026 21:17:30 +0300 Subject: [PATCH] Model fixture image identity in release drill --- scripts/production-release-drill.sh | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/scripts/production-release-drill.sh b/scripts/production-release-drill.sh index 5678ebd..07d6e79 100755 --- a/scripts/production-release-drill.sh +++ b/scripts/production-release-drill.sh @@ -60,9 +60,17 @@ printf '%s %s\n' "$bundle_hash" "$(basename -- "$bundle")" >"$bundle.sha256" image_archive="$fixture/output/releases/incoming/who_need_help-$target_commit-images-linux-amd64.tar.gz" printf 'isolated release drill image archive\n' | gzip -n >"$image_archive" image_hash=$(sha256sum "$image_archive" | awk '{print $1}') -fixture_candidate_id="sha256:$image_hash" printf '%s %s\n' "$image_hash" "$(basename -- "$image_archive")" \ >"$image_archive.sha256" +fixture_image_config="$run_dir/fixture-image-config.json" +printf '%s\n' \ + '{"architecture":"amd64","os":"linux","rootfs":{"type":"layers","diff_ids":[]}}' \ + >"$fixture_image_config" +fixture_image_id="sha256:$(sha256sum "$fixture_image_config" | awk '{print $1}')" +[[ "$fixture_image_id" =~ ^sha256:[0-9a-f]{64}$ ]] || { + echo "Release drill generated an invalid fixture image ID." >&2 + exit 1 +} image_manifest="$fixture/output/releases/incoming/who_need_help-$target_commit-images.manifest" printf '%s\n' \ 'format=1' \ @@ -70,7 +78,7 @@ printf '%s\n' \ 'platform=linux/amd64' \ 'topology=compact' \ 'image_count=1' \ - "image=who-need-help:production-${target_commit:0:12}|$fixture_candidate_id" \ + "image=who-need-help:production-${target_commit:0:12}|$fixture_image_id" \ >"$image_manifest" backup="$fixture/output/backups/production/pre-release.dump" printf 'isolated release drill backup\n' >"$backup" @@ -194,7 +202,7 @@ if [ "$1" = inspect ]; then "$MOCK_ENV_FILE" fi ;; - '{{.Image}}') printf '%s\n' "$FIXTURE_CANDIDATE_ID" ;; + '{{.Image}}') printf '%s\n' "$FIXTURE_IMAGE_ID" ;; *) exit 1 ;; esac exit 0 @@ -202,7 +210,7 @@ fi if [ "$1" = image ] && [ "$2" = inspect ] && [ "$3" = --format ]; then case "$4" in - '{{.Id}}') printf '%s\n' "$FIXTURE_CANDIDATE_ID" ;; + '{{.Id}}') printf '%s\n' "$FIXTURE_IMAGE_ID" ;; '{{.Os}}/{{.Architecture}}') printf 'linux/amd64\n' ;; *) exit 1 ;; esac @@ -230,7 +238,7 @@ container_env=( --env "MOCK_GIT_STATE=$remote_root/git-state" --env "MOCK_COMMAND_LOG=$remote_root/mock-commands.log" --env "MOCK_ENV_FILE=$remote_root/.env" - --env "FIXTURE_CANDIDATE_ID=$fixture_candidate_id" + --env "FIXTURE_IMAGE_ID=$fixture_image_id" --env "PATH=/mock-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ) container_mounts=( @@ -267,6 +275,9 @@ run_release() { } run_release forward_only >"$run_dir/forward-success.out" +grep -Fx \ + "image=who-need-help:production-${target_commit:0:12}|$fixture_image_id" \ + "$image_manifest" >/dev/null grep -Fx "APP_IMAGE=who-need-help:production-${target_commit:0:12}" \ "$fixture/.env" >/dev/null grep -Fx "CADDY_IMAGE=who-need-help:caddy-production-${current_commit:0:12}" \