Skip to content

Commit 77180c3

Browse files
committed
ci: verify canonical and compatibility image tags resolve to the same digest
1 parent 62e56bd commit 77180c3

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

.github/workflows/build-publish-dev-images.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,27 @@ jobs:
8989
build-args: |
9090
CPU_ARCHITECTURE=${{ matrix.arch }}
9191
DOCKER_PLATFORM=${{ steps.meta.outputs.platform }}
92+
93+
- name: Verify Tag Aliases
94+
run: |
95+
CANONICAL_IMAGE="${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.tag }}"
96+
COMPAT_IMAGE="${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.compat_tag }}"
97+
98+
CANONICAL_DIGEST=$(docker manifest inspect "$CANONICAL_IMAGE" | python -c "import json,sys; print(json.load(sys.stdin).get('config', {}).get('digest', ''))")
99+
COMPAT_DIGEST=$(docker manifest inspect "$COMPAT_IMAGE" | python -c "import json,sys; print(json.load(sys.stdin).get('config', {}).get('digest', ''))")
100+
101+
if [ -z "$CANONICAL_DIGEST" ] || [ -z "$COMPAT_DIGEST" ]; then
102+
echo "[FAIL] Unable to resolve digest for tag aliases"
103+
echo "canonical=$CANONICAL_IMAGE digest=$CANONICAL_DIGEST"
104+
echo "compat=$COMPAT_IMAGE digest=$COMPAT_DIGEST"
105+
exit 1
106+
fi
107+
108+
if [ "$CANONICAL_DIGEST" != "$COMPAT_DIGEST" ]; then
109+
echo "[FAIL] Tag aliases point to different images"
110+
echo "canonical=$CANONICAL_IMAGE digest=$CANONICAL_DIGEST"
111+
echo "compat=$COMPAT_IMAGE digest=$COMPAT_DIGEST"
112+
exit 1
113+
fi
114+
115+
echo "[OK] Tag aliases are in sync: $CANONICAL_DIGEST"

.github/workflows/build-publish-tag-images.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,30 @@ jobs:
8888
CPU_ARCHITECTURE=${{ matrix.arch }}
8989
DOCKER_PLATFORM=${{ steps.meta.outputs.platform }}
9090
91+
- name: Verify Tag Aliases
92+
run: |
93+
CANONICAL_IMAGE="${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.tag }}"
94+
COMPAT_IMAGE="${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.compat_tag }}"
95+
96+
CANONICAL_DIGEST=$(docker manifest inspect "$CANONICAL_IMAGE" | python -c "import json,sys; print(json.load(sys.stdin).get('config', {}).get('digest', ''))")
97+
COMPAT_DIGEST=$(docker manifest inspect "$COMPAT_IMAGE" | python -c "import json,sys; print(json.load(sys.stdin).get('config', {}).get('digest', ''))")
98+
99+
if [ -z "$CANONICAL_DIGEST" ] || [ -z "$COMPAT_DIGEST" ]; then
100+
echo "[FAIL] Unable to resolve digest for tag aliases"
101+
echo "canonical=$CANONICAL_IMAGE digest=$CANONICAL_DIGEST"
102+
echo "compat=$COMPAT_IMAGE digest=$COMPAT_DIGEST"
103+
exit 1
104+
fi
105+
106+
if [ "$CANONICAL_DIGEST" != "$COMPAT_DIGEST" ]; then
107+
echo "[FAIL] Tag aliases point to different images"
108+
echo "canonical=$CANONICAL_IMAGE digest=$CANONICAL_DIGEST"
109+
echo "compat=$COMPAT_IMAGE digest=$COMPAT_DIGEST"
110+
exit 1
111+
fi
112+
113+
echo "[OK] Tag aliases are in sync: $CANONICAL_DIGEST"
114+
91115
- name: Export Layer ZIP
92116
run: |
93117
mkdir -p build

0 commit comments

Comments
 (0)