This is an automated email from the ASF dual-hosted git repository.
tvalentyn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 11b0579d0c7 Dont use platform separator for docker build paths.
(#36777)
11b0579d0c7 is described below
commit 11b0579d0c7f75c523c86e83867ba4fc110827a9
Author: claudevdm <[email protected]>
AuthorDate: Mon Nov 10 22:10:55 2025 -0500
Dont use platform separator for docker build paths. (#36777)
---
.../runners/portability/sdk_container_builder.py | 3 ++-
.../portability/sdk_container_builder_test.py | 26 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git
a/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
b/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
index 9237e0c9f82..589963742c5 100644
--- a/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
+++ b/sdks/python/apache_beam/runners/portability/sdk_container_builder.py
@@ -27,6 +27,7 @@ to build the new image.
import json
import logging
import os
+import posixpath
import shutil
import subprocess
import sys
@@ -81,7 +82,7 @@ class SdkContainerImageBuilder(plugin.BeamPlugin):
def _build(self):
container_image_tag = str(uuid.uuid4())
- container_image_name = os.path.join(
+ container_image_name = posixpath.join(
self._docker_registry_push_url or '',
'beam_python_prebuilt_sdk:%s' % container_image_tag)
with tempfile.TemporaryDirectory() as temp_folder:
diff --git
a/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
b/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
index 955fe328f17..a8cee4f127a 100644
--- a/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
+++ b/sdks/python/apache_beam/runners/portability/sdk_container_builder_test.py
@@ -94,6 +94,32 @@ class SdkContainerBuilderTest(unittest.TestCase):
mocked_local_builder.assert_called_once_with(options)
mocked_local_builder.return_value._build.assert_called_once_with()
+ def test_container_image_name_uses_forward_slashes(self):
+ """Verify container image names use forward slashes as URI separators."""
+ options = pipeline_options.PipelineOptions([
+ '--docker_registry_push_url=europe-west1-docker.pkg.dev/project-id'\
+ '/repo-name',
+ ])
+ builder = sdk_container_builder._SdkContainerImageLocalBuilder(options)
+
+ # Mock the file and docker operations
+ with unittest.mock.patch(
+ 'apache_beam.runners.portability.sdk_container_builder.tempfile.' \
+ 'TemporaryDirectory'
+ ):
+ with unittest.mock.patch.object(builder, '_prepare_dependencies'):
+ with unittest.mock.patch.object(builder,
+ '_invoke_docker_build_and_push'):
+ container_image_name = builder._build()
+
+ expected_prefix = 'europe-west1-docker.pkg.dev/project-id/repo-name/' \
+ 'beam_python_prebuilt_sdk:'
+ self.assertTrue(
+ container_image_name.startswith(expected_prefix),
+ f'Expected image name to start with {expected_prefix},'\
+ f' got: {container_image_name}'
+ )
+
if __name__ == '__main__':
# Run the tests.