From c6345e4061641b88bd8e46b6371f4f4cf2a78065 Mon Sep 17 00:00:00 2001 From: Bastien Orivel Date: Thu, 26 Jun 2025 18:21:25 +0200 Subject: [PATCH] Actually retag images when a tag is passed to `taskgraph load-image` Fixes #712 --- src/taskgraph/docker.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/taskgraph/docker.py b/src/taskgraph/docker.py index bdd67f92f..7eed5e10b 100644 --- a/src/taskgraph/docker.py +++ b/src/taskgraph/docker.py @@ -194,6 +194,21 @@ def download_and_modify_image(): # Open stream reader for the member reader = tarin.extractfile(member) + # If the member is `manifest.json` and we're retagging the image, + # override RepoTags. + if member.name == "manifest.json" and imageName: + manifest = json.loads(reader.read()) # type: ignore + reader.close() # type: ignore + + if len(manifest) > 1: + raise Exception("file contains more than one manifest") + + manifest[0]["RepoTags"] = [f"{imageName}:{imageTag}"] + + data = json.dumps(manifest) + reader = BytesIO(data.encode("utf-8")) + member.size = len(data) + # If member is `repositories`, we parse and possibly rewrite the # image tags. if member.name == "repositories":