Skip to content

[VL][CI] Add gpu image centos-9-jdk17-cuda13.1-cudf - #12690

Open
marin-ma wants to merge 2 commits into
apache:mainfrom
marin-ma:add-jdk17-cudf13-image
Open

[VL][CI] Add gpu image centos-9-jdk17-cuda13.1-cudf#12690
marin-ma wants to merge 2 commits into
apache:mainfrom
marin-ma:add-jdk17-cudf13-image

Conversation

@marin-ma

@marin-ma marin-ma commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The jdk version in the gpu image apache/gluten:centos-9-jdk8-cudf is now jdk17 after #11835, and some dependencies such as aws-sdk-cpp are missing in the image because it's no longer based on the velox image. Some gpu jobs that rely on the apache/gluten:centos-9-jdk8-cudf image have failed due to this change.

This pr adds a new gpu image centos-9-jdk17-cuda13.1-cudf with build flags --enable_s3=ON --enable_gcs=ON --enable_abfs=ON so the essential dependencies will be installed. Keeping the jdk8 version seems unnecessary. We can switch to jdk17 for the gpu build.

@marin-ma
marin-ma requested review from zhouyuan and a lite review from Copilot August 4, 2026 14:55
@marin-ma marin-ma changed the title [CI][VL] Add gpu image centos-9-jdk17-cuda13.1-cudf [VL][CI] Add gpu image centos-9-jdk17-cuda13.1-cudf Aug 4, 2026
@marin-ma
marin-ma requested a review from philo-he August 4, 2026 14:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Adds a new CentOS Stream 9 CUDA 13.1 cuDF GPU Docker image intended to restore missing dependencies (S3/GCS/ABFS) and moves GPU CI usage toward JDK 17.

Changes:

  • Adds a new Dockerfile for centos-9-jdk17-cuda13.1-cudf that builds Velox/Gluten with cloud filesystem flags enabled.
  • Extends the GitHub Actions workflow to build and push the new Docker image tag.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf Introduces a new CUDA 13.1 cuDF build image definition intended for JDK 17 + cloud filesystem deps.
.github/workflows/docker_image.yml Adds a CI job to build/push the new Docker image tag.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +18 to +33
FROM quay.io/centos/centos:stream9
ENV CUDA_ARCHITECTURES=75
ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH
ENV CC=/opt/rh/gcc-toolset-14/root/bin/gcc \
CXX=/opt/rh/gcc-toolset-14/root/bin/g++

RUN dnf config-manager --add-repo "https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo"; \
dnf update; \
dnf install -y sudo patch maven perl git gcc-toolset-14 cuda-toolkit-13-1 && \
dnf autoremove -y && dnf clean all; \
git clone --depth=1 https://github.com/apache/incubator-gluten /opt/gluten && \
cd /opt/gluten && \
source /opt/rh/gcc-toolset-14/enable && \
bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \
rm -rf /opt/gluten && \
rm -rf /root/.cache/ccache
Comment on lines +24 to +27
RUN dnf config-manager --add-repo "https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo"; \
dnf update; \
dnf install -y sudo patch maven perl git gcc-toolset-14 cuda-toolkit-13-1 && \
dnf autoremove -y && dnf clean all; \
Comment thread dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf Outdated
Comment thread .github/workflows/docker_image.yml Outdated

@philo-he philo-he left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks.

Copilot AI review requested due to automatic review settings August 5, 2026 10:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Suppressed comments (6)

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:37

  • Cloning apache/gluten inside the Docker build makes the image non-reproducible (depends on whatever main is at build time) and adds an external network dependency during builds. Since the workflow already checks out the repo and builds with context: ., prefer using the build context (e.g., copy the local sources) or pass an explicit commit/ref as an ARG to ensure the image contents are deterministic.
    git clone --depth=1 https://github.com/apache/gluten /opt/gluten && \
    cd /opt/gluten && \
    source /opt/rh/gcc-toolset-14/enable && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \
    rm -rf /opt/gluten && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:36

  • RUN defaults to /bin/sh -c; relying on source being available is shell-dependent. To avoid build failures across base image changes, either use POSIX . instead of source, or switch the Dockerfile shell to bash for this layer (e.g., via a SHELL directive or bash -lc).
    source /opt/rh/gcc-toolset-14/enable && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:25

  • LD_LIBRARY_PATH is set to a path under /opt/gluten/..., but /opt/gluten is removed during the build. This leaves the image with an environment variable referencing a non-existent directory (and can make runtime debugging harder or mask missing libs). Either keep the referenced artifacts, move needed libraries into a stable location, or drop this LD_LIBRARY_PATH entry.
ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:37

  • LD_LIBRARY_PATH is set to a path under /opt/gluten/..., but /opt/gluten is removed during the build. This leaves the image with an environment variable referencing a non-existent directory (and can make runtime debugging harder or mask missing libs). Either keep the referenced artifacts, move needed libraries into a stable location, or drop this LD_LIBRARY_PATH entry.
    rm -rf /opt/gluten && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:36

  • Building tests and benchmarks (--build_tests=ON --build_benchmarks=ON) during the Docker image build can significantly increase build time and resource usage in CI, especially if the goal is mainly to bake in dependencies. If they aren’t required for the image’s intended use, consider disabling them to reduce CI duration and risk of timeouts.
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:38

  • Trailing whitespace at end of line. Consider trimming to keep diffs clean and avoid whitespace-only churn.
    rm -rf /root/.cache/ccache   

Comment on lines +29 to +31
cd /opt/gluten && \
source /opt/rh/gcc-toolset-14/enable && \
bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \
Copilot AI review requested due to automatic review settings August 5, 2026 11:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

Suppressed comments (2)

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:31

  • dnf config-manager typically comes from dnf-plugins-core on RHEL/CentOS 9 minimal images; if it’s not preinstalled in quay.io/centos/centos:stream9, this step will fail immediately. Install dnf-plugins-core (or use an alternative repo-add approach) before invoking dnf config-manager.
RUN dnf config-manager --add-repo "https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo" && \
    dnf update -y && \
    dnf install -y sudo patch java-${JAVA_VERSION}-openjdk-devel maven perl git gcc-toolset-14 cuda-toolkit-13-1 && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:33

  • Cloning apache/gluten without pinning a specific ref/commit makes the image build non-reproducible (the resulting image contents can change over time with the same Dockerfile). Consider accepting a GLUTEN_REF/GLUTEN_COMMIT build arg and checking out that ref, so CI and downstream users can reliably rebuild identical images.
    git clone --depth=1 https://github.com/apache/gluten /opt/gluten && \

Comment on lines +35 to +36
source /opt/rh/gcc-toolset-14/enable && \
bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \
ENV JAVA_HOME=/usr/lib/jvm/java-${JAVA_VERSION}-openjdk
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CUDA_ARCHITECTURES=75
ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH
cd /opt/gluten && \
source /opt/rh/gcc-toolset-14/enable && \
bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_gpu=ON && \
rm -rf /opt/gluten && \

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 4 changed files in this pull request and generated no new comments.

Suppressed comments (3)

dev/builddeps-veloxbe.sh:324

  • ENABLE_HDFS currently triggers install_adapters, but install_adapters (as defined in ep/build-velox/src/setup-rhel.sh) installs S3/GCS/ABFS adapters unconditionally and does not install anything HDFS-specific. This changes behavior vs. the prior per-flag installs: e.g. --enable_hdfs=ON (with S3/GCS/ABFS OFF) will now install all adapter deps unexpectedly, and HDFS still won’t get any dedicated deps.
  if [[ "$ENABLE_S3" == "ON" || "$ENABLE_GCS" == "ON" || "$ENABLE_HDFS" == "ON" || "$ENABLE_ABFS" == "ON" ]]; then
    install_adapters
  fi

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:39

  • PR description says the new image should be built with --enable_s3=ON --enable_gcs=ON --enable_abfs=ON (no mention of HDFS), but this Dockerfile enables HDFS as well. If HDFS isn’t intended here, keeping it ON can unnecessarily expand the dependency surface and build time.
    bash ./dev/buildbundle-veloxbe.sh get-velox && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON && \

.github/workflows/docker_image.yml:177

  • This workflow adds/pushes the new centos-9-jdk17-cuda13.1-cudf image, but existing CI jobs and docs still reference apache/gluten:centos-9-jdk8-cudf (e.g., velox_backend_x86.yml / velox_backend_cache.yml / VeloxGPU.md). If the intent is to “switch to jdk17 for the gpu build”, those consumers need to be updated in the same PR (or the PR description should clarify this is only introducing the new image without switching CI yet).
          context: .
          file: dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf
          push: true
          tags: ${{ env.DOCKERHUB_REPO }}:centos-9-jdk17-cuda13.1-cudf

Copilot AI review requested due to automatic review settings August 6, 2026 11:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 4 changed files in this pull request and generated no new comments.

Suppressed comments (2)

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:38

  • This new image runs buildbundle-veloxbe.sh and then deletes /opt/gluten, but it never installs the cuDF build artifacts into the image (unlike Dockerfile.centos-9-jdk17-cuda12.9-cudf, which does cmake --install from _deps/cudf-build). If /opt/gluten is removed, cuDF headers/libs built under ep/.../_deps/cudf-build won’t be available for subsequent GPU builds using this image.
RUN git clone --depth=1 https://github.com/apache/gluten /opt/gluten && \
    cd /opt/gluten && \
    source /opt/rh/gcc-toolset-14/enable && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON && \
    rm -rf /opt/gluten && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:37

  • PR description says the new image is built with --enable_s3=ON --enable_gcs=ON --enable_abfs=ON, but the Dockerfile also enables HDFS (--enable_hdfs=ON). If HDFS isn’t required for the GPU jobs you’re targeting, consider removing it (or update the PR description to match), since it can increase build time and dependency surface area.
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON && \

Copilot AI review requested due to automatic review settings August 6, 2026 12:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated no new comments.

Suppressed comments (4)

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:38

  • The image deletes /opt/gluten, but it never installs the built cuDF artifacts into the image (unlike the existing cuda12.9 Dockerfile which runs cmake --install in the cudf-build directory). After rm -rf /opt/gluten, the cuDF build outputs will be gone, so downstream GPU jobs may not have the required cuDF libraries available.
RUN git clone --depth=1 https://github.com/apache/gluten /opt/gluten && \
    cd /opt/gluten && \
    source /opt/rh/gcc-toolset-14/enable && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON && \
    rm -rf /opt/gluten && \

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:27

  • LD_LIBRARY_PATH is set to a path under /opt/gluten/..., but this Dockerfile removes /opt/gluten later. Leaving a non-existent directory in LD_LIBRARY_PATH can cause confusing runtime/linker behavior; if these libraries are needed, they should be installed to a stable location (e.g. /usr/local/lib) instead.
ENV CUDA_ARCHITECTURES=75
ENV LD_LIBRARY_PATH=/opt/gluten/ep/build-velox/build/velox_ep/_build/release/_deps/curl-build/lib:$LD_LIBRARY_PATH
ENV CC=/opt/rh/gcc-toolset-14/root/bin/gcc \
    CXX=/opt/rh/gcc-toolset-14/root/bin/g++

dev/builddeps-veloxbe.sh:324

  • install_adapters (as defined in ep/build-velox/src/setup-rhel.sh) unconditionally installs S3+GCS+ABFS dependencies. Switching to it changes behavior vs the previous per-flag installs: enabling only one adapter (or just HDFS) will still install all adapter dependencies, increasing build time and introducing extra failure surface. It also drops the AZURE_SDK_DISABLE_AUTO_VCPKG export that was previously applied for ABFS.
  if [[ "$ENABLE_S3" == "ON" || "$ENABLE_GCS" == "ON" || "$ENABLE_HDFS" == "ON" || "$ENABLE_ABFS" == "ON" ]]; then
    install_adapters
  fi

dev/build-helper-functions.sh:238

  • This adds an unconditional call to scripts/setup-centos-adapters.sh for all CentOS dependency setups. That makes CentOS setup depend on an extra script existing in the Velox checkout and runs adapter installation even when adapters are disabled (setup_dependencies already gates adapter installation). This can break CentOS builds if the Velox branch doesn’t ship that script, and adds unnecessary work for non-adapter builds.
  elif [[ "$LINUX_DISTRIBUTION" == "centos" ]]; then
    scripts/setup-centos-adapters.sh
    case "$LINUX_VERSION_ID" in

Copilot AI review requested due to automatic review settings August 6, 2026 15:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@marin-ma
marin-ma marked this pull request as draft August 7, 2026 09:51
@marin-ma
marin-ma force-pushed the add-jdk17-cudf13-image branch from 30fc666 to 6157b13 Compare August 10, 2026 10:54
@marin-ma
marin-ma force-pushed the add-jdk17-cudf13-image branch from 6157b13 to 2269adb Compare August 10, 2026 10:54
@zhouyuan

Copy link
Copy Markdown
Member

should we also remove the old jdk8 based image? https://github.com/apache/gluten/blob/main/.github/workflows/docker_image.yml#L61

@marin-ma
marin-ma marked this pull request as ready for review August 10, 2026 14:29
Copilot AI review requested due to automatic review settings August 10, 2026 14:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Suppressed comments (1)

dev/builddeps-veloxbe.sh:324

  • This change removes the AZURE_SDK_DISABLE_AUTO_VCPKG=ON export that previously ran when --enable_abfs=ON. There are no remaining references in the repo, so ABFS dependency install may regress (Azure SDK’s build can re-enable vcpkg auto mode). Re-introduce the export when ABFS is enabled before running the adapter installer.
  if [[ "$ENABLE_S3" == "ON" || "$ENABLE_GCS" == "ON" || "$ENABLE_HDFS" == "ON" || "$ENABLE_ABFS" == "ON" ]]; then
    install_adapters
  fi

if [[ "$LINUX_DISTRIBUTION" == "ubuntu" || "$LINUX_DISTRIBUTION" == "debian" || "$LINUX_DISTRIBUTION" == "pop" ]]; then
scripts/setup-ubuntu.sh
elif [[ "$LINUX_DISTRIBUTION" == "centos" ]]; then
source scripts/setup-centos-adapters.sh
Comment on lines +39 to +41
RUN source /opt/rh/gcc-toolset-14/enable && \
bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON build_arrow && \
rm -rf /opt/gluten /root/.cache/ccache
Copilot AI review requested due to automatic review settings August 10, 2026 14:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Suppressed comments (3)

dev/docker/cudf/Dockerfile.centos-9-jdk17-cuda13.1-cudf:41

  • The buildbundle-veloxbe.sh invocation appends a positional build_arrow argument. Because buildbundle-veloxbe.sh sources builddeps-veloxbe.sh, that extra argument is treated as a command override and can prevent the normal Velox/Gluten build flow from running. Also, this Dockerfile enables HDFS even though the PR description only mentions enabling S3/GCS/ABFS for missing dependencies.
RUN source /opt/rh/gcc-toolset-14/enable && \
    bash ./dev/buildbundle-veloxbe.sh --run_setup_script=ON --build_arrow=ON --spark_version=3.5 --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_gcs=ON --enable_hdfs=ON --enable_abfs=ON --enable_gpu=ON build_arrow && \
    rm -rf /opt/gluten /root/.cache/ccache

dev/build-helper-functions.sh:238

  • setup_linux sources scripts/setup-centos-adapters.sh, but that file does not exist in this repo (and get-velox.sh doesn’t create/copy it). This will make CentOS dependency setup fail at runtime with a "No such file" error.
  elif [[ "$LINUX_DISTRIBUTION" == "centos" ]]; then
    source scripts/setup-centos-adapters.sh 
    case "$LINUX_VERSION_ID" in

dev/builddeps-veloxbe.sh:324

  • setup_dependencies now calls install_adapters whenever any of S3/GCS/HDFS/ABFS is enabled. This is a behavior change from the previous per-adapter installs and can also fail if install_adapters isn't defined in the sourced environment. It also drops the ABFS-specific AZURE_SDK_DISABLE_AUTO_VCPKG=ON export that was previously set.
  if [[ "$ENABLE_S3" == "ON" || "$ENABLE_GCS" == "ON" || "$ENABLE_HDFS" == "ON" || "$ENABLE_ABFS" == "ON" ]]; then
    install_adapters
  fi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants