Skip to content

Commit 387a4b7

Browse files
authored
fix(release): accept normalized PostgreSQL digest refs (#536)
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
1 parent 0e3f473 commit 387a4b7

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

‎release/scripts/check_postgresql_advisory_policy.py‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,15 @@ def image_evidence(report: Any, report_name: str, target_key: str) -> tuple[str,
7171
if SHA256_DIGEST.fullmatch(digest) is None:
7272
fail(f"{report_name} image target must use a sha256 digest")
7373
repo_digests = target.get("repoDigests")
74-
if not isinstance(repo_digests, list) or user_input not in repo_digests:
74+
if (
75+
not isinstance(repo_digests, list)
76+
or not any(
77+
isinstance(repo_digest, str)
78+
and "@" in repo_digest
79+
and repo_digest.rsplit("@", 1)[1] == digest
80+
for repo_digest in repo_digests
81+
)
82+
):
7583
fail(f"{report_name} image target digest must appear in repoDigests")
7684
if target.get("architecture") != "amd64" or target.get("os") != "linux":
7785
fail(f"{report_name} image target must be linux/amd64")

‎release/scripts/test_registry_release.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,31 @@ def run_checker(
874874
)
875875
self.assertEqual(0, extra_metadata_result.returncode, extra_metadata_result.stderr)
876876

877+
target["repoDigests"] = [
878+
f"index.docker.io/library/postgres@{digest}"
879+
]
880+
normalized_repository_result = run_checker(
881+
"Low", {"versions": [], "state": "not-fixed"}
882+
)
883+
self.assertEqual(
884+
0,
885+
normalized_repository_result.returncode,
886+
normalized_repository_result.stderr,
887+
)
888+
889+
target["repoDigests"] = [
890+
"index.docker.io/library/postgres@sha256:" + "d" * 64
891+
]
892+
wrong_digest_result = run_checker(
893+
"Low", {"versions": [], "state": "not-fixed"}
894+
)
895+
self.assertEqual(1, wrong_digest_result.returncode)
896+
self.assertIn(
897+
"image target digest must appear in repoDigests",
898+
wrong_digest_result.stderr,
899+
)
900+
target["repoDigests"] = [image_ref]
901+
877902
mismatch_result = run_checker(
878903
"Low",
879904
{"versions": [], "state": "not-fixed"},

0 commit comments

Comments
 (0)