11#! /usr/bin/env bash
22set -euo pipefail
33
4- if [ " $# " -ne 5 ]; then
5- echo " usage: $0 <name> <source-ref> <target-ref> <expected-index-digest> <required-arches>" >&2
4+ if [ " $# " -ne 6 ]; then
5+ echo " usage: $0 <name> <source-ref> <target-ref> <expected-source- index-digest> <expected-target-index-digest|auto > <required-arches>" >&2
66 exit 2
77fi
88
99name=" $1 "
1010source_ref=" $2 "
1111target_ref=" $3 "
12- expected_digest=" $4 "
13- required_arches_csv=" $5 "
12+ expected_source_digest=" $4 "
13+ expected_target_digest=" $5 "
14+ required_arches_csv=" $6 "
1415
1516tmpdir=" $( mktemp -d) "
1617trap ' rm -rf "$tmpdir"' EXIT
@@ -25,8 +26,8 @@ target_raw="$tmpdir/target.json"
2526echo " ::group::inspect source ${name} "
2627skopeo inspect --raw " docker://${source_ref} " > " $source_raw "
2728source_digest=" $( digest_file " $source_raw " ) "
28- if [ " $source_digest " != " $expected_digest " ]; then
29- echo " source digest mismatch for ${name} : expected ${expected_digest } , got ${source_digest} " >&2
29+ if [ " $source_digest " != " $expected_source_digest " ]; then
30+ echo " source digest mismatch for ${name} : expected ${expected_source_digest } , got ${source_digest} " >&2
3031 exit 1
3132fi
3233
@@ -46,14 +47,15 @@ echo "source ${name} digest ${source_digest} contains ${required_arches_csv}"
4647echo " ::endgroup::"
4748
4849echo " ::group::copy ${name} "
49- skopeo copy --retry-times 3 --all --preserve-digests " docker://${source_ref} " " docker://${target_ref} "
50+ skopeo copy --retry-times 3 --all " docker://${source_ref} " " docker://${target_ref} "
5051echo " ::endgroup::"
5152
5253echo " ::group::verify target ${name} "
5354skopeo inspect --raw " docker://${target_ref} " > " $target_raw "
5455target_digest=" $( digest_file " $target_raw " ) "
55- if [ " $target_digest " != " $expected_digest " ]; then
56- echo " target digest mismatch for ${name} : expected ${expected_digest} , got ${target_digest} " >&2
56+ echo " target ${name} index digest ${target_digest} "
57+ if [ " $expected_target_digest " != " auto" ] && [ " $target_digest " != " $expected_target_digest " ]; then
58+ echo " target digest mismatch for ${name} : expected ${expected_target_digest} , got ${target_digest} " >&2
5759 exit 1
5860fi
5961
0 commit comments