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.

Reply via email to