Skip to content

Commit e37ecb7

Browse files
docker: fix missing image_id when using containerd-snapshotter (#20533)
fixes: #20520
1 parent ce66d9b commit e37ecb7

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

src/python/pants/backend/docker/goals/package_image.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,8 @@ def parse_image_id_from_docker_build_output(docker: DockerBinary, *outputs: byte
521521
(
522522
# BuildKit output.
523523
r"(writing image (?P<digest>sha256:\S+) done)",
524+
# BuildKit with containerd-snapshotter output.
525+
r"(exporting manifest list (?P<manifest_list>sha256:\S+) done)",
524526
# Docker output.
525527
r"(Successfully built (?P<short_id>\S+))",
526528
),
@@ -539,7 +541,11 @@ def parse_image_id_from_docker_build_output(docker: DockerBinary, *outputs: byte
539541
None,
540542
)
541543
if image_id_match:
542-
image_id = image_id_match.group("digest") or image_id_match.group("short_id")
544+
image_id = (
545+
image_id_match.group("digest")
546+
or image_id_match.group("short_id")
547+
or image_id_match.group("manifest_list")
548+
)
543549
return image_id
544550

545551
return "<unknown>"

src/python/pants/backend/docker/goals/package_image_test.py

+41
Original file line numberDiff line numberDiff line change
@@ -1636,6 +1636,47 @@ def test_get_context_root(
16361636
),
16371637
"",
16381638
),
1639+
# Buildkit with containerd-snapshotter
1640+
(
1641+
DockerBinary("/bin/docker", "1234", is_podman=False),
1642+
"sha256:b2b51838586286a9e544ddb31b3dbf7f6a99654d275b6e56b5f69f90138b4c0e",
1643+
dedent(
1644+
"""\
1645+
#9 exporting to image
1646+
#9 exporting layers done
1647+
#9 exporting manifest sha256:7802087e8e0801f6451d862a00a6ce8af3e4829b09bc890dea0dd2659c11b25a done
1648+
#9 exporting config sha256:c83bed954709ba0c546d66d8f29afaac87c597f01b03fec158f3b21977c3e143 done
1649+
#9 exporting attestation manifest sha256:399891f9628cfafaba9e034599bdd55675ac0a3bad38151ed1ebf03993669545 done
1650+
#9 exporting manifest list sha256:b2b51838586286a9e544ddb31b3dbf7f6a99654d275b6e56b5f69f90138b4c0e done
1651+
#9 naming to myhost.com/my_app:latest done
1652+
#9 unpacking to myhost.com/my_app:latest done
1653+
#9 DONE 0.0s
1654+
"""
1655+
),
1656+
"",
1657+
),
1658+
# Buildkit with containerd-snapshotter and cross platform
1659+
(
1660+
DockerBinary("/bin/docker", "1234", is_podman=False),
1661+
"sha256:3c72de0e05bb75247e68e124e6500700f6e0597425db2ee9f08fd59ef28cea0f",
1662+
dedent(
1663+
"""\
1664+
#12 exporting to image
1665+
#12 exporting layers done
1666+
#12 exporting manifest sha256:452598369b55c27d752c45736cf26c0339612077f17df31fb0cdd79c5145d081 done
1667+
#12 exporting config sha256:6fbcebfde0ec24b487045516c3b5ffd3f0633e756a6d5808c2e5ad75809e0ca6 done
1668+
#12 exporting attestation manifest sha256:32fcf615e85bc9c2f606f863e8db3ca16dd77613a1e175e5972f39267e106dfb done
1669+
#12 exporting manifest sha256:bcb911a3efbec48e3c58c2acfd38fe92321eed731c53253f0b5c883918420187 done
1670+
#12 exporting config sha256:86e7fd0c4fa2356430d4ca188ed9e86497b8d03996ccba426d92c7e145e69990 done
1671+
#12 exporting attestation manifest sha256:66f9e7af29dd04e6264b8e113571f7b653f1681ba124a386530145fb39ff0102 done
1672+
#12 exporting manifest list sha256:3c72de0e05bb75247e68e124e6500700f6e0597425db2ee9f08fd59ef28cea0f done
1673+
#12 naming to myhost.com/my_app:latest done
1674+
#12 unpacking to myhost.com/my_app:latest done
1675+
#12 DONE 0.0s
1676+
"""
1677+
),
1678+
"",
1679+
),
16391680
# Podman
16401681
(
16411682
DockerBinary("/bin/podman", "abcd", is_podman=True),

0 commit comments

Comments
 (0)