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":