From 3a2a20d02240bbccf8275bc287aa338527e5a282 Mon Sep 17 00:00:00 2001 From: Abdelrahman Ibrahim Date: Tue, 21 Jul 2026 14:27:55 +0300 Subject: [PATCH 1/3] Speed up Python container builds with prefer-binary and registry cache --- .../workflows/beam_PostCommit_Python_Arm.yml | 1 + .../beam_Publish_Beam_SDK_Snapshots.yml | 1 + ...Python_ValidatesContainer_Dataflow_ARM.yml | 1 + .../beam/gradle/BeamDockerPlugin.groovy | 18 +++++++++++++++ .../beam/gradle/BeamModulePlugin.groovy | 9 ++++++++ sdks/python/container/Dockerfile | 3 ++- sdks/python/container/common.gradle | 23 +++++++++++++------ .../python/container/distroless/common.gradle | 15 +++++++++--- sdks/python/container/ml/common.gradle | 23 +++++++++++++------ .../container/run_generate_requirements.sh | 4 ++-- 10 files changed, 78 insertions(+), 20 deletions(-) diff --git a/.github/workflows/beam_PostCommit_Python_Arm.yml b/.github/workflows/beam_PostCommit_Python_Arm.yml index ee7745c7a6cf..12383457bdbf 100644 --- a/.github/workflows/beam_PostCommit_Python_Arm.yml +++ b/.github/workflows/beam_PostCommit_Python_Arm.yml @@ -114,6 +114,7 @@ jobs: -Pcontainer-architecture-list=arm64,amd64 \ -Pdocker-repository-root=us.gcr.io/apache-beam-testing/github-actions \ -Pdocker-tag=${{ steps.set_tag.outputs.TAG }} \ + -Pdocker-registry-cache \ -Ppush-containers \ env: MULTIARCH_TAG: ${{ steps.set_tag.outputs.TAG }} diff --git a/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml b/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml index 8bf33e97333f..a77b29707923 100644 --- a/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml +++ b/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml @@ -123,5 +123,6 @@ jobs: -Pdocker-repository-root=gcr.io/apache-beam-testing/beam-sdk \ -Pdocker-tag-list=${{ github.sha }},${BEAM_VERSION}${LATEST_TAG} \ -Pcontainer-architecture-list=arm64,amd64 \ + -Pdocker-registry-cache \ -Ppush-containers \ -Pdocker-pull-licenses diff --git a/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml b/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml index df545d6b0d5e..b714bb64e482 100644 --- a/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml +++ b/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml @@ -108,6 +108,7 @@ jobs: -Pcontainer-architecture-list=arm64,amd64 \ -Pdocker-repository-root=us.gcr.io/apache-beam-testing/github-actions \ -Pdocker-tag=${{ steps.set_tag.outputs.TAG }} \ + -Pdocker-registry-cache \ -Ppush-containers \ env: MULTIARCH_TAG: ${{ steps.set_tag.outputs.TAG }} diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy index 6963f96d7313..7027cf6e4c8b 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy @@ -61,6 +61,8 @@ class BeamDockerPlugin implements Plugin { boolean push = false String builder = null String target = null + Set cacheFromRefs = [] as Set + String cacheToRef = null File resolvedDockerfile = null File resolvedDockerComposeTemplate = null @@ -115,6 +117,14 @@ class BeamDockerPlugin implements Plugin { void platform(String... args) { this.platform = args as Set } + + void cacheFrom(String... args) { + this.cacheFromRefs = args as Set + } + + void cacheTo(String ref) { + this.cacheToRef = ref + } } @Override @@ -278,6 +288,14 @@ class BeamDockerPlugin implements Plugin { if (ext.pull) { buildCommandLine.add '--pull' } + if (ext.buildx && !ext.cacheFromRefs.isEmpty()) { + for (String cacheRef : ext.cacheFromRefs) { + buildCommandLine.addAll('--cache-from', "type=registry,ref=${cacheRef}" as String) + } + } + if (ext.buildx && ext.cacheToRef != null) { + buildCommandLine.addAll('--cache-to', "type=registry,ref=${ext.cacheToRef},mode=max" as String) + } if (!ext.tags.isEmpty() && ext.push) { String[] repoParts = (ext.name as String).split(':') String repo = repoParts[0] diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 8298eacff4d2..cca0eaee0d31 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -2456,6 +2456,15 @@ class BeamModulePlugin implements Plugin { return tags } + // Registry ref for Docker BuildKit layer cache (tag is always buildcache). + project.ext.containerRegistryBuildCacheRef = { String imageName -> + int lastColon = imageName.lastIndexOf(':') + if (lastColon < 0) { + return "${imageName}:buildcache" + } + return "${imageName.substring(0, lastColon)}:buildcache" + } + /** ***********************************************************************************************/ // applyGrpcNature should only be applied to projects who wish to use diff --git a/sdks/python/container/Dockerfile b/sdks/python/container/Dockerfile index 7f5aa3604fe9..a1e17edb82d1 100644 --- a/sdks/python/container/Dockerfile +++ b/sdks/python/container/Dockerfile @@ -53,7 +53,8 @@ RUN \ # Install required packages for Beam Python SDK and common dependencies used by users. # use --no-deps to ensure the list includes all transitive dependencies. - pip install --no-deps -r /tmp/base_image_requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu && \ + # use --prefer-binary to avoid compiling wheels from source when prebuilt wheels exist. + pip install --prefer-binary --no-deps -r /tmp/base_image_requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu && \ rm -rf /tmp/base_image_requirements.txt && \ python -c "import nltk; nltk.download('stopwords')" && \ rm /root/nltk_data/corpora/stopwords.zip && \ diff --git a/sdks/python/container/common.gradle b/sdks/python/container/common.gradle index da2871ab72bb..1dd4048d138b 100644 --- a/sdks/python/container/common.gradle +++ b/sdks/python/container/common.gradle @@ -108,15 +108,18 @@ def copyLauncherDependencies = tasks.register("copyLauncherDependencies", Copy) } def pushContainers = project.rootProject.hasProperty(["isRelease"]) || project.rootProject.hasProperty("push-containers") +def imageName = containerImageName( + name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk", + root: project.rootProject.hasProperty(["docker-repository-root"]) ? + project.rootProject["docker-repository-root"] : + project.docker_image_default_repo_root, + tag: project.rootProject.hasProperty(["docker-tag"]) ? + project.rootProject["docker-tag"] : project.sdk_version) +def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? + containerRegistryBuildCacheRef(imageName) : null docker { - name containerImageName( - name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk", - root: project.rootProject.hasProperty(["docker-repository-root"]) ? - project.rootProject["docker-repository-root"] : - project.docker_image_default_repo_root, - tag: project.rootProject.hasProperty(["docker-tag"]) ? - project.rootProject["docker-tag"] : project.sdk_version) + name imageName // tags used by dockerTag task tags containerImageTags() files "../Dockerfile", "./build" @@ -127,6 +130,12 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers + if (registryBuildCacheRef != null) { + cacheFrom registryBuildCacheRef + if (pushContainers) { + cacheTo registryBuildCacheRef + } + } } dockerPrepare.dependsOn copyLauncherDependencies diff --git a/sdks/python/container/distroless/common.gradle b/sdks/python/container/distroless/common.gradle index 48dc9ab678d2..5ae0be4da5c1 100644 --- a/sdks/python/container/distroless/common.gradle +++ b/sdks/python/container/distroless/common.gradle @@ -33,12 +33,15 @@ def base = containerImageName( name: base_name, root: root, tag: tag) - -docker { - name containerImageName( +def distrolessImageName = containerImageName( name: "${base_name}_distroless", root: root, tag: tag) +def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? + containerRegistryBuildCacheRef(distrolessImageName) : null + +docker { + name distrolessImageName // tags used by dockerTag task tags containerImageTags() files "../Dockerfile", "./build" @@ -47,6 +50,12 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers + if (registryBuildCacheRef != null) { + cacheFrom registryBuildCacheRef + if (pushContainers) { + cacheTo registryBuildCacheRef + } + } } dockerPrepare.dependsOn ":sdks:python:container:py${pythonVersionSuffix}:docker" diff --git a/sdks/python/container/ml/common.gradle b/sdks/python/container/ml/common.gradle index 4dcae8697217..3716e1d24d1b 100644 --- a/sdks/python/container/ml/common.gradle +++ b/sdks/python/container/ml/common.gradle @@ -84,15 +84,18 @@ def copyLauncherDependencies = tasks.register("copyLauncherDependencies", Copy) } def pushContainers = project.rootProject.hasProperty(["isRelease"]) || project.rootProject.hasProperty("push-containers") +def imageName = containerImageName( + name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk_ml", + root: project.rootProject.hasProperty(["docker-repository-root"]) ? + project.rootProject["docker-repository-root"] : + project.docker_image_default_repo_root, + tag: project.rootProject.hasProperty(["docker-tag"]) ? + project.rootProject["docker-tag"] : project.sdk_version) +def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? + containerRegistryBuildCacheRef(imageName) : null docker { - name containerImageName( - name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk_ml", - root: project.rootProject.hasProperty(["docker-repository-root"]) ? - project.rootProject["docker-repository-root"] : - project.docker_image_default_repo_root, - tag: project.rootProject.hasProperty(["docker-tag"]) ? - project.rootProject["docker-tag"] : project.sdk_version) + name imageName // tags used by dockerTag task tags containerImageTags() files "../../Dockerfile", "./build" @@ -103,6 +106,12 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers + if (registryBuildCacheRef != null) { + cacheFrom registryBuildCacheRef + if (pushContainers) { + cacheTo registryBuildCacheRef + } + } } dockerPrepare.dependsOn copyLauncherDependencies diff --git a/sdks/python/container/run_generate_requirements.sh b/sdks/python/container/run_generate_requirements.sh index 4c7eea0b7398..ed1f57faac4e 100755 --- a/sdks/python/container/run_generate_requirements.sh +++ b/sdks/python/container/run_generate_requirements.sh @@ -93,8 +93,8 @@ fi # Force torch dependencies to be pulled from the PyTorch CPU wheel # repository so that they don't include GPU dependencies with # non-compliant licenses -pip install ${PIP_EXTRA_OPTIONS:+"$PIP_EXTRA_OPTIONS"} --no-cache-dir "$SDK_TARBALL""$EXTRAS" $INDEX_URL_OPTION -pip install ${PIP_EXTRA_OPTIONS:+"$PIP_EXTRA_OPTIONS"} --no-cache-dir -r "$PWD"/sdks/python/container/base_image_requirements_manual.txt +pip install --prefer-binary ${PIP_EXTRA_OPTIONS:+"$PIP_EXTRA_OPTIONS"} --no-cache-dir "$SDK_TARBALL""$EXTRAS" $INDEX_URL_OPTION +pip install --prefer-binary ${PIP_EXTRA_OPTIONS:+"$PIP_EXTRA_OPTIONS"} --no-cache-dir -r "$PWD"/sdks/python/container/base_image_requirements_manual.txt pip uninstall -y apache-beam echo "Checking for broken dependencies:" From ae579a78d14620f2055f8862187dc2a67a44663c Mon Sep 17 00:00:00 2001 From: Abdelrahman Ibrahim Date: Tue, 21 Jul 2026 17:41:05 +0300 Subject: [PATCH 2/3] Address review --- .../groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy | 4 ++-- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy index 7027cf6e4c8b..fab20c1180b0 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy @@ -290,11 +290,11 @@ class BeamDockerPlugin implements Plugin { } if (ext.buildx && !ext.cacheFromRefs.isEmpty()) { for (String cacheRef : ext.cacheFromRefs) { - buildCommandLine.addAll('--cache-from', "type=registry,ref=${cacheRef}" as String) + buildCommandLine.addAll(['--cache-from', "type=registry,ref=${cacheRef}" as String]) } } if (ext.buildx && ext.cacheToRef != null) { - buildCommandLine.addAll('--cache-to', "type=registry,ref=${ext.cacheToRef},mode=max" as String) + buildCommandLine.addAll(['--cache-to', "type=registry,ref=${ext.cacheToRef},mode=max" as String]) } if (!ext.tags.isEmpty() && ext.push) { String[] repoParts = (ext.name as String).split(':') diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index cca0eaee0d31..084c701063d3 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -2457,9 +2457,15 @@ class BeamModulePlugin implements Plugin { } // Registry ref for Docker BuildKit layer cache (tag is always buildcache). + // Only treat ':' as a tag separator when it appears after the last '/', so + // registries with ports (e.g. localhost:5000/...) are handled correctly. project.ext.containerRegistryBuildCacheRef = { String imageName -> + if (!imageName) { + return null + } + int lastSlash = imageName.lastIndexOf('/') int lastColon = imageName.lastIndexOf(':') - if (lastColon < 0) { + if (lastColon < 0 || lastColon < lastSlash) { return "${imageName}:buildcache" } return "${imageName.substring(0, lastColon)}:buildcache" From a0daf3733eacc5406d086fdf062b5c6e8273e016 Mon Sep 17 00:00:00 2001 From: Abdelrahman Ibrahim Date: Wed, 22 Jul 2026 10:19:12 +0300 Subject: [PATCH 3/3] Drop docker registry cache --- .../workflows/beam_PostCommit_Python_Arm.yml | 1 - .../beam_Publish_Beam_SDK_Snapshots.yml | 1 - ...Python_ValidatesContainer_Dataflow_ARM.yml | 1 - .../beam/gradle/BeamDockerPlugin.groovy | 18 --------------- .../beam/gradle/BeamModulePlugin.groovy | 15 ------------ sdks/python/container/common.gradle | 23 ++++++------------- .../python/container/distroless/common.gradle | 15 +++--------- sdks/python/container/ml/common.gradle | 23 ++++++------------- 8 files changed, 17 insertions(+), 80 deletions(-) diff --git a/.github/workflows/beam_PostCommit_Python_Arm.yml b/.github/workflows/beam_PostCommit_Python_Arm.yml index 12383457bdbf..ee7745c7a6cf 100644 --- a/.github/workflows/beam_PostCommit_Python_Arm.yml +++ b/.github/workflows/beam_PostCommit_Python_Arm.yml @@ -114,7 +114,6 @@ jobs: -Pcontainer-architecture-list=arm64,amd64 \ -Pdocker-repository-root=us.gcr.io/apache-beam-testing/github-actions \ -Pdocker-tag=${{ steps.set_tag.outputs.TAG }} \ - -Pdocker-registry-cache \ -Ppush-containers \ env: MULTIARCH_TAG: ${{ steps.set_tag.outputs.TAG }} diff --git a/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml b/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml index a77b29707923..8bf33e97333f 100644 --- a/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml +++ b/.github/workflows/beam_Publish_Beam_SDK_Snapshots.yml @@ -123,6 +123,5 @@ jobs: -Pdocker-repository-root=gcr.io/apache-beam-testing/beam-sdk \ -Pdocker-tag-list=${{ github.sha }},${BEAM_VERSION}${LATEST_TAG} \ -Pcontainer-architecture-list=arm64,amd64 \ - -Pdocker-registry-cache \ -Ppush-containers \ -Pdocker-pull-licenses diff --git a/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml b/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml index b714bb64e482..df545d6b0d5e 100644 --- a/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml +++ b/.github/workflows/beam_Python_ValidatesContainer_Dataflow_ARM.yml @@ -108,7 +108,6 @@ jobs: -Pcontainer-architecture-list=arm64,amd64 \ -Pdocker-repository-root=us.gcr.io/apache-beam-testing/github-actions \ -Pdocker-tag=${{ steps.set_tag.outputs.TAG }} \ - -Pdocker-registry-cache \ -Ppush-containers \ env: MULTIARCH_TAG: ${{ steps.set_tag.outputs.TAG }} diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy index fab20c1180b0..6963f96d7313 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamDockerPlugin.groovy @@ -61,8 +61,6 @@ class BeamDockerPlugin implements Plugin { boolean push = false String builder = null String target = null - Set cacheFromRefs = [] as Set - String cacheToRef = null File resolvedDockerfile = null File resolvedDockerComposeTemplate = null @@ -117,14 +115,6 @@ class BeamDockerPlugin implements Plugin { void platform(String... args) { this.platform = args as Set } - - void cacheFrom(String... args) { - this.cacheFromRefs = args as Set - } - - void cacheTo(String ref) { - this.cacheToRef = ref - } } @Override @@ -288,14 +278,6 @@ class BeamDockerPlugin implements Plugin { if (ext.pull) { buildCommandLine.add '--pull' } - if (ext.buildx && !ext.cacheFromRefs.isEmpty()) { - for (String cacheRef : ext.cacheFromRefs) { - buildCommandLine.addAll(['--cache-from', "type=registry,ref=${cacheRef}" as String]) - } - } - if (ext.buildx && ext.cacheToRef != null) { - buildCommandLine.addAll(['--cache-to', "type=registry,ref=${ext.cacheToRef},mode=max" as String]) - } if (!ext.tags.isEmpty() && ext.push) { String[] repoParts = (ext.name as String).split(':') String repo = repoParts[0] diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 084c701063d3..8298eacff4d2 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -2456,21 +2456,6 @@ class BeamModulePlugin implements Plugin { return tags } - // Registry ref for Docker BuildKit layer cache (tag is always buildcache). - // Only treat ':' as a tag separator when it appears after the last '/', so - // registries with ports (e.g. localhost:5000/...) are handled correctly. - project.ext.containerRegistryBuildCacheRef = { String imageName -> - if (!imageName) { - return null - } - int lastSlash = imageName.lastIndexOf('/') - int lastColon = imageName.lastIndexOf(':') - if (lastColon < 0 || lastColon < lastSlash) { - return "${imageName}:buildcache" - } - return "${imageName.substring(0, lastColon)}:buildcache" - } - /** ***********************************************************************************************/ // applyGrpcNature should only be applied to projects who wish to use diff --git a/sdks/python/container/common.gradle b/sdks/python/container/common.gradle index 1dd4048d138b..da2871ab72bb 100644 --- a/sdks/python/container/common.gradle +++ b/sdks/python/container/common.gradle @@ -108,18 +108,15 @@ def copyLauncherDependencies = tasks.register("copyLauncherDependencies", Copy) } def pushContainers = project.rootProject.hasProperty(["isRelease"]) || project.rootProject.hasProperty("push-containers") -def imageName = containerImageName( - name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk", - root: project.rootProject.hasProperty(["docker-repository-root"]) ? - project.rootProject["docker-repository-root"] : - project.docker_image_default_repo_root, - tag: project.rootProject.hasProperty(["docker-tag"]) ? - project.rootProject["docker-tag"] : project.sdk_version) -def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? - containerRegistryBuildCacheRef(imageName) : null docker { - name imageName + name containerImageName( + name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk", + root: project.rootProject.hasProperty(["docker-repository-root"]) ? + project.rootProject["docker-repository-root"] : + project.docker_image_default_repo_root, + tag: project.rootProject.hasProperty(["docker-tag"]) ? + project.rootProject["docker-tag"] : project.sdk_version) // tags used by dockerTag task tags containerImageTags() files "../Dockerfile", "./build" @@ -130,12 +127,6 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers - if (registryBuildCacheRef != null) { - cacheFrom registryBuildCacheRef - if (pushContainers) { - cacheTo registryBuildCacheRef - } - } } dockerPrepare.dependsOn copyLauncherDependencies diff --git a/sdks/python/container/distroless/common.gradle b/sdks/python/container/distroless/common.gradle index 5ae0be4da5c1..48dc9ab678d2 100644 --- a/sdks/python/container/distroless/common.gradle +++ b/sdks/python/container/distroless/common.gradle @@ -33,15 +33,12 @@ def base = containerImageName( name: base_name, root: root, tag: tag) -def distrolessImageName = containerImageName( + +docker { + name containerImageName( name: "${base_name}_distroless", root: root, tag: tag) -def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? - containerRegistryBuildCacheRef(distrolessImageName) : null - -docker { - name distrolessImageName // tags used by dockerTag task tags containerImageTags() files "../Dockerfile", "./build" @@ -50,12 +47,6 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers - if (registryBuildCacheRef != null) { - cacheFrom registryBuildCacheRef - if (pushContainers) { - cacheTo registryBuildCacheRef - } - } } dockerPrepare.dependsOn ":sdks:python:container:py${pythonVersionSuffix}:docker" diff --git a/sdks/python/container/ml/common.gradle b/sdks/python/container/ml/common.gradle index 3716e1d24d1b..4dcae8697217 100644 --- a/sdks/python/container/ml/common.gradle +++ b/sdks/python/container/ml/common.gradle @@ -84,18 +84,15 @@ def copyLauncherDependencies = tasks.register("copyLauncherDependencies", Copy) } def pushContainers = project.rootProject.hasProperty(["isRelease"]) || project.rootProject.hasProperty("push-containers") -def imageName = containerImageName( - name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk_ml", - root: project.rootProject.hasProperty(["docker-repository-root"]) ? - project.rootProject["docker-repository-root"] : - project.docker_image_default_repo_root, - tag: project.rootProject.hasProperty(["docker-tag"]) ? - project.rootProject["docker-tag"] : project.sdk_version) -def registryBuildCacheRef = project.rootProject.hasProperty("docker-registry-cache") ? - containerRegistryBuildCacheRef(imageName) : null docker { - name imageName + name containerImageName( + name: project.docker_image_default_repo_prefix + "python${project.ext.pythonVersion}_sdk_ml", + root: project.rootProject.hasProperty(["docker-repository-root"]) ? + project.rootProject["docker-repository-root"] : + project.docker_image_default_repo_root, + tag: project.rootProject.hasProperty(["docker-tag"]) ? + project.rootProject["docker-tag"] : project.sdk_version) // tags used by dockerTag task tags containerImageTags() files "../../Dockerfile", "./build" @@ -106,12 +103,6 @@ docker { platform(*project.containerPlatforms()) load project.useBuildx() && !pushContainers push pushContainers - if (registryBuildCacheRef != null) { - cacheFrom registryBuildCacheRef - if (pushContainers) { - cacheTo registryBuildCacheRef - } - } } dockerPrepare.dependsOn copyLauncherDependencies