9393 echo "source_sha must be reachable from main at workflow commit $WORKFLOW_SHA" >&2
9494 exit 1
9595 fi
96+ mapfile -t base_images < <(
97+ awk '
98+ toupper($1) == "FROM" {
99+ for (i = 2; i <= NF; i++) {
100+ if ($i !~ /^--/) {
101+ print $i
102+ break
103+ }
104+ }
105+ }
106+ ' source/docker/Dockerfile
107+ )
108+ if [[ "${#base_images[@]}" -ne 2 ]]; then
109+ echo "Dockerfile must contain exactly one builder and one runtime FROM image" >&2
110+ exit 1
111+ fi
112+ if [[ ! "${base_images[0]}" =~ ^([^@[:space:]]+)@(sha256:[0-9a-f]{64})$ ]]; then
113+ echo "builder image must include a readable tag and full sha256 manifest digest" >&2
114+ exit 1
115+ fi
116+ builder_image="${BASH_REMATCH[1]}"
117+ builder_image_digest="${BASH_REMATCH[2]}"
118+ if [[ ! "${base_images[1]}" =~ ^([^@[:space:]]+)@(sha256:[0-9a-f]{64})$ ]]; then
119+ echo "runtime image must include a readable tag and full sha256 manifest digest" >&2
120+ exit 1
121+ fi
122+ runtime_image="${BASH_REMATCH[1]}"
123+ runtime_image_digest="${BASH_REMATCH[2]}"
96124 short_sha="${SOURCE_SHA:0:8}"
97- echo "sha_tag=sha-$short_sha" >> "$GITHUB_OUTPUT"
98- echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_OUTPUT"
125+ {
126+ echo "sha_tag=sha-$short_sha"
127+ echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
128+ echo "builder_image=$builder_image"
129+ echo "builder_image_digest=$builder_image_digest"
130+ echo "runtime_image=$runtime_image"
131+ echo "runtime_image_digest=$runtime_image_digest"
132+ } >> "$GITHUB_OUTPUT"
99133
100134 - name : Set up QEMU
101135 uses : docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
@@ -166,6 +200,10 @@ jobs:
166200 BUILD_TIME : ${{ steps.metadata.outputs.build_time }}
167201 BUILD_DIGEST : ${{ steps.build.outputs.digest }}
168202 WORKFLOW_SHA : ${{ github.sha }}
203+ BUILDER_IMAGE : ${{ steps.metadata.outputs.builder_image }}
204+ BUILDER_IMAGE_DIGEST : ${{ steps.metadata.outputs.builder_image_digest }}
205+ RUNTIME_IMAGE : ${{ steps.metadata.outputs.runtime_image }}
206+ RUNTIME_IMAGE_DIGEST : ${{ steps.metadata.outputs.runtime_image_digest }}
169207 run : |
170208 set -euo pipefail
171209 source release-tools/.github/scripts/dockerhub-manifest.sh
@@ -242,6 +280,10 @@ jobs:
242280 --arg amd64_digest "$amd64_digest" \
243281 --arg arm64_digest "$arm64_digest" \
244282 --arg build_time "$BUILD_TIME" \
283+ --arg builder_image "$BUILDER_IMAGE" \
284+ --arg builder_image_digest "$BUILDER_IMAGE_DIGEST" \
285+ --arg runtime_image "$RUNTIME_IMAGE" \
286+ --arg runtime_image_digest "$RUNTIME_IMAGE_DIGEST" \
245287 '{
246288 image: $image,
247289 source_sha: $source_sha,
@@ -255,6 +297,16 @@ jobs:
255297 "linux/amd64": $amd64_digest,
256298 "linux/arm64": $arm64_digest
257299 },
300+ base_images: {
301+ builder: {
302+ image: $builder_image,
303+ digest: $builder_image_digest
304+ },
305+ runtime: {
306+ image: $runtime_image,
307+ digest: $runtime_image_digest
308+ }
309+ },
258310 build_time: $build_time
259311 }' > release-metadata.json
260312
@@ -265,6 +317,8 @@ jobs:
265317 echo "- Version tag: \`$IMAGE:$VERSION\`"
266318 echo "- Commit tag: \`$IMAGE:$SHA_TAG\`"
267319 echo "- Digest: \`$BUILD_DIGEST\`"
320+ echo "- Builder: \`$BUILDER_IMAGE@$BUILDER_IMAGE_DIGEST\`"
321+ echo "- Runtime: \`$RUNTIME_IMAGE@$RUNTIME_IMAGE_DIGEST\`"
268322 } >> "$GITHUB_STEP_SUMMARY"
269323
270324 - name : Upload release evidence
0 commit comments