This is an automated email from the ASF dual-hosted git repository.

yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/master by this push:
     new 00a49c5f10d1 chore(ci): build the bundle validation base image on 
glibc (#20417)
00a49c5f10d1 is described below

commit 00a49c5f10d172b44a3db51916806a3f64530ba4
Author: Y Ethan Guo <[email protected]>
AuthorDate: Fri Oct 23 08:04:41 2026 -0700

    chore(ci): build the bundle validation base image on glibc (#20417)
---
 packaging/bundle-validation/README.md           |  8 ++++-
 packaging/bundle-validation/base-dev/Dockerfile | 11 +++++--
 packaging/bundle-validation/base/Dockerfile     | 39 ++++++++++++++++---------
 3 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/packaging/bundle-validation/README.md 
b/packaging/bundle-validation/README.md
index 141aa065a556..20e73923235b 100644
--- a/packaging/bundle-validation/README.md
+++ b/packaging/bundle-validation/README.md
@@ -33,7 +33,13 @@ Hub. To do so, create a new shell script like 
[build_flink1180hive313spark350.sh
 and change the Spark (or Flink/Hive/Hadoop) version in the script. Then run 
the script to build the image and upload it 
 to the Docker Hub.
 
-The `Dockerfile` for the image is under `base/`. To build the image with 
updated `Dockerfile`, you may use the script in
+The `Dockerfile` for the image is under `base/`. It is a glibc image (Ubuntu 
with Java 8 as the default runtime and
+Java 11 and 17 under `/usr/lib/jvm/java-11-openjdk` and 
`/usr/lib/jvm/java-17-openjdk`), so bundles that carry native
+libraries, such as the Spark native bundle with `libcomet.so`, run in it. CI 
pulls the image by tag when a job starts,
+so pushing a rebuilt image under an existing tag changes what every lane using 
that tag runs on; rebuild one tag and
+check it in CI before the others.
+
+To build the image with updated `Dockerfile`, you may use the script in
 the folder. Here are the docker commands to build the image by specifying 
different versions:
 
 ```shell
diff --git a/packaging/bundle-validation/base-dev/Dockerfile 
b/packaging/bundle-validation/base-dev/Dockerfile
index a1f3ba88e646..9f5c4cf8245e 100644
--- a/packaging/bundle-validation/base-dev/Dockerfile
+++ b/packaging/bundle-validation/base-dev/Dockerfile
@@ -14,9 +14,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-FROM adoptopenjdk/openjdk8:alpine
+FROM eclipse-temurin:8-jdk-jammy
 
-RUN apk add --no-cache --upgrade bash curl jq openjdk11 openjdk17 
--repository=https://dl-cdn.alpinelinux.org/alpine/v3.15/community
+SHELL ["/bin/bash", "-c"]
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends bash curl jq wget unzip 
procps \
+        openjdk-11-jdk-headless openjdk-17-jdk-headless \
+    && rm -rf /var/lib/apt/lists/* \
+    && ln -s /usr/lib/jvm/java-11-openjdk-* /usr/lib/jvm/java-11-openjdk \
+    && ln -s /usr/lib/jvm/java-17-openjdk-* /usr/lib/jvm/java-17-openjdk
 
 RUN mkdir /opt/bundle-validation
 ENV WORKDIR=/opt/bundle-validation
diff --git a/packaging/bundle-validation/base/Dockerfile 
b/packaging/bundle-validation/base/Dockerfile
index 249964459110..2cd269242c37 100644
--- a/packaging/bundle-validation/base/Dockerfile
+++ b/packaging/bundle-validation/base/Dockerfile
@@ -14,9 +14,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-FROM --platform=linux/amd64 adoptopenjdk/openjdk8:alpine
+# A glibc image: native libraries the bundles carry (libcomet.so in the Spark 
native bundle, the
+# Hadoop natives) do not load on musl. Java 8 is the default runtime; 
validate.sh switches to
+# /usr/lib/jvm/java-11-openjdk and /usr/lib/jvm/java-17-openjdk for the other 
passes.
+FROM --platform=linux/amd64 eclipse-temurin:8-jdk-jammy
 
-RUN apk add --no-cache --upgrade bash curl jq openjdk11 openjdk17 
--repository=https://dl-cdn.alpinelinux.org/alpine/v3.15/community
+SHELL ["/bin/bash", "-c"]
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends bash curl jq wget unzip 
procps \
+        openjdk-11-jdk-headless openjdk-17-jdk-headless \
+    && rm -rf /var/lib/apt/lists/* \
+    && ln -s /usr/lib/jvm/java-11-openjdk-* /usr/lib/jvm/java-11-openjdk \
+    && ln -s /usr/lib/jvm/java-17-openjdk-* /usr/lib/jvm/java-17-openjdk
 
 RUN mkdir /opt/bundle-validation
 ENV WORKDIR=/opt/bundle-validation
@@ -32,46 +42,47 @@ ARG CONFLUENT_VERSION=5.5.12
 ARG KAFKA_CONNECT_HDFS_VERSION=10.1.13
 ARG SCALA_VERSION=2.12
 
-RUN wget 
https://archive.apache.org/dist/hadoop/common/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://archive.apache.org/dist/hadoop/common/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz
 -P "$WORKDIR" \
     && tar -xf $WORKDIR/hadoop-$HADOOP_VERSION.tar.gz -C $WORKDIR/ \
     && rm $WORKDIR/hadoop-$HADOOP_VERSION.tar.gz
 ENV HADOOP_HOME=$WORKDIR/hadoop-$HADOOP_VERSION
 
-RUN wget 
https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz
 -P "$WORKDIR" \
     && tar -xf $WORKDIR/apache-hive-$HIVE_VERSION-bin.tar.gz -C $WORKDIR/ \
     && rm $WORKDIR/apache-hive-$HIVE_VERSION-bin.tar.gz
 ENV HIVE_HOME=$WORKDIR/apache-hive-$HIVE_VERSION-bin
 
-RUN wget 
https://archive.apache.org/dist/db/derby/db-derby-$DERBY_VERSION/db-derby-$DERBY_VERSION-bin.tar.gz
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://archive.apache.org/dist/db/derby/db-derby-$DERBY_VERSION/db-derby-$DERBY_VERSION-bin.tar.gz
 -P "$WORKDIR" \
     && tar -xf $WORKDIR/db-derby-$DERBY_VERSION-bin.tar.gz -C $WORKDIR/ \
     && rm $WORKDIR/db-derby-$DERBY_VERSION-bin.tar.gz
 ENV DERBY_HOME=$WORKDIR/db-derby-$DERBY_VERSION-bin
 
-RUN wget 
https://archive.apache.org/dist/flink/flink-$FLINK_VERSION/flink-$FLINK_VERSION-bin-scala_2.12.tgz
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://archive.apache.org/dist/flink/flink-$FLINK_VERSION/flink-$FLINK_VERSION-bin-scala_2.12.tgz
 -P "$WORKDIR" \
     && tar -xf $WORKDIR/flink-$FLINK_VERSION-bin-scala_2.12.tgz -C $WORKDIR/ \
     && rm $WORKDIR/flink-$FLINK_VERSION-bin-scala_2.12.tgz
 ENV FLINK_HOME=$WORKDIR/flink-$FLINK_VERSION
 
-RUN if [ "$SPARK_VERSION" != 4.* && "$SCALA_VERSION" = "2.13" ]; then \
-      wget 
https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13.tgz
 -P "$WORKDIR" \
+# Spark 3.x publishes a separate Scala 2.13 build; Spark 4.x is Scala 2.13 
only.
+RUN if [[ "$SPARK_VERSION" != 4.* && "$SCALA_VERSION" == "2.13" ]]; then \
+      wget --progress=dot:giga 
https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13.tgz
 -P "$WORKDIR" \
         && tar -xf 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13.tgz -C 
$WORKDIR/ \
-        && rm 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13.tgz; \
-      mv 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION; \
+        && rm 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13.tgz \
+        && mv 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION-scala2.13 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION; \
     else \
-      wget 
https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION.tgz
 -P "$WORKDIR" \
+      wget --progress=dot:giga 
https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION.tgz
 -P "$WORKDIR" \
         && tar -xf 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION.tgz -C $WORKDIR/ \
         && rm 
$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION.tgz; \
     fi
 ENV SPARK_HOME=$WORKDIR/spark-$SPARK_VERSION-bin-hadoop$SPARK_HADOOP_VERSION
 
-RUN wget 
https://packages.confluent.io/archive/${CONFLUENT_VERSION%.*}/confluent-community-$CONFLUENT_VERSION-2.12.tar.gz
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://packages.confluent.io/archive/${CONFLUENT_VERSION%.*}/confluent-community-$CONFLUENT_VERSION-2.12.tar.gz
 -P "$WORKDIR" \
     && tar -xf $WORKDIR/confluent-community-$CONFLUENT_VERSION-2.12.tar.gz -C 
$WORKDIR/ \
     && rm $WORKDIR/confluent-community-$CONFLUENT_VERSION-2.12.tar.gz
 ENV CONFLUENT_HOME=$WORKDIR/confluent-$CONFLUENT_VERSION
 
-RUN wget 
https://d2p6pa21dvn84.cloudfront.net/api/plugins/confluentinc/kafka-connect-hdfs/versions/$KAFKA_CONNECT_HDFS_VERSION/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION.zip
 -P "$WORKDIR" \
+RUN wget --progress=dot:giga 
https://d2p6pa21dvn84.cloudfront.net/api/plugins/confluentinc/kafka-connect-hdfs/versions/$KAFKA_CONNECT_HDFS_VERSION/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION.zip
 -P "$WORKDIR" \
     && mkdir $WORKDIR/kafka-connectors \
-    && unzip 
$WORKDIR/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION.zip -d 
$WORKDIR/kafka-connectors/ \
+    && unzip -q 
$WORKDIR/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION.zip -d 
$WORKDIR/kafka-connectors/ \
     && rm 
$WORKDIR/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION.zip \
     && printf "\nplugin.path=$WORKDIR/kafka-connectors\n" >> 
$CONFLUENT_HOME/etc/kafka/connect-distributed.properties
 ENV 
KAFKA_CONNECT_PLUGIN_PATH_LIB_PATH=$WORKDIR/kafka-connectors/confluentinc-kafka-connect-hdfs-$KAFKA_CONNECT_HDFS_VERSION/lib

Reply via email to