Skip to content

Commit cf1a777

Browse files
committed
feat: support flag '--manifest' when building container images
Signed-off-by: Pedro Pereira <[email protected]>
1 parent eb36f56 commit cf1a777

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

podman/domain/images_build.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ def build(self, **kwargs) -> tuple[Image, Iterator[bytes]]:
6666
layers (bool) - Cache intermediate layers during build.
6767
output (str) - specifies if any custom build output is selected for following build.
6868
outputformat (str) - The format of the output image's manifest and configuration data.
69+
manifest (str) - add the image to the specified manifest list.
70+
Creates manifest list if it does not exist.
6971
7072
Returns:
7173
first item is the podman.domain.images.Image built
@@ -173,6 +175,7 @@ def _render_params(kwargs) -> dict[str, list[Any]]:
173175
"forcerm": kwargs.get("forcerm"),
174176
"httpproxy": kwargs.get("http_proxy"),
175177
"networkmode": kwargs.get("network_mode"),
178+
"manifest": kwargs.get("manifest"),
176179
"nocache": kwargs.get("nocache"),
177180
"platform": kwargs.get("platform"),
178181
"pull": kwargs.get("pull"),

podman/tests/integration/test_images.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ def setUp(self):
3838
self.client = PodmanClient(base_url=self.socket_uri)
3939
self.addCleanup(self.client.close)
4040

41+
self.test_manifest_name = "dummy:v1.2.3"
42+
43+
def tearDown(self) -> None:
44+
if self.client.manifests.exists(self.test_manifest_name):
45+
self.client.manifests.remove(self.test_manifest_name)
46+
4147
def test_image_crud(self):
4248
"""Test Image CRUD.
4349
@@ -144,6 +150,17 @@ def test_build(self):
144150
self.assertIsNotNone(image)
145151
self.assertIsNotNone(image.id)
146152

153+
def test_build_with_manifest(self):
154+
buffer = io.StringIO("""FROM quay.io/libpod/alpine_labels:latest""")
155+
156+
self.assertFalse(self.client.manifests.exists(self.test_manifest_name))
157+
158+
image, _ = self.client.images.build(fileobj=buffer, manifest=self.test_manifest_name)
159+
self.assertIsNotNone(image)
160+
self.assertIsNotNone(image.id)
161+
162+
self.assertTrue(self.client.manifests.exists(self.test_manifest_name))
163+
147164
def test_build_with_context(self):
148165
context = io.BytesIO()
149166
with tarfile.open(fileobj=context, mode="w") as tar:

podman/tests/unit/test_build.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ def test_build(self, mock_prepare_containerfile, mock_create_tar):
6666
"&buildargs=%7B%22BUILD_DATE%22%3A+%22January+1%2C+1970%22%7D"
6767
"&cpuperiod=10"
6868
"&extrahosts=%7B%22database%22%3A+%22127.0.0.1%22%7D"
69-
"&labels=%7B%22Unittest%22%3A+%22true%22%7D",
69+
"&labels=%7B%22Unittest%22%3A+%22true%22%7D"
70+
"&manifest=example%3Av1.2.3",
7071
text=buffer.getvalue(),
7172
)
7273
mock.get(
@@ -98,6 +99,7 @@ def test_build(self, mock_prepare_containerfile, mock_create_tar):
9899
},
99100
extra_hosts={"database": "127.0.0.1"},
100101
labels={"Unittest": "true"},
102+
manifest="example:v1.2.3",
101103
)
102104
self.assertIsInstance(image, Image)
103105
self.assertEqual(image.id, "032b8b2855fc")

0 commit comments

Comments
 (0)