Skip to content

Commit 029fc7a

Browse files
committed
Dont use platform separator for docker build paths.
1 parent 9516397 commit 029fc7a

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

sdks/python/apache_beam/runners/portability/sdk_container_builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import json
2828
import logging
2929
import os
30+
import posixpath
3031
import shutil
3132
import subprocess
3233
import sys
@@ -81,7 +82,7 @@ def __init__(self, options):
8182

8283
def _build(self):
8384
container_image_tag = str(uuid.uuid4())
84-
container_image_name = os.path.join(
85+
container_image_name = posixpath.join(
8586
self._docker_registry_push_url or '',
8687
'beam_python_prebuilt_sdk:%s' % container_image_tag)
8788
with tempfile.TemporaryDirectory() as temp_folder:

sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,32 @@ def test_build_container_image_locates_subclass_invokes_build(
9494
mocked_local_builder.assert_called_once_with(options)
9595
mocked_local_builder.return_value._build.assert_called_once_with()
9696

97+
def test_container_image_name_uses_forward_slashes(self):
98+
"""Verify container image names use forward slashes as URI separators."""
99+
options = pipeline_options.PipelineOptions([
100+
'--docker_registry_push_url=europe-west1-docker.pkg.dev/project-id'\
101+
'/repo-name',
102+
])
103+
builder = sdk_container_builder._SdkContainerImageLocalBuilder(options)
104+
105+
# Mock the file and docker operations
106+
with unittest.mock.patch(
107+
'apache_beam.runners.portability.sdk_container_builder.tempfile.' \
108+
'TemporaryDirectory'
109+
):
110+
with unittest.mock.patch.object(builder, '_prepare_dependencies'):
111+
with unittest.mock.patch.object(builder,
112+
'_invoke_docker_build_and_push'):
113+
container_image_name = builder._build()
114+
115+
expected_prefix = 'europe-west1-docker.pkg.dev/project-id/repo-name/' \
116+
'beam_python_prebuilt_sdk:'
117+
self.assertTrue(
118+
container_image_name.startswith(expected_prefix),
119+
f'Expected image name to start with {expected_prefix},'\
120+
f' got: {container_image_name}'
121+
)
122+
97123

98124
if __name__ == '__main__':
99125
# Run the tests.

0 commit comments

Comments
 (0)