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 a17955528595 chore(ci): Add test jobs and Codecov integration in 
GitHub Actions (#18225)
a17955528595 is described below

commit a17955528595e5df71e45159e5eed66fa31872cd
Author: Y Ethan Guo <[email protected]>
AuthorDate: Mon Mar 16 16:00:01 2026 -0700

    chore(ci): Add test jobs and Codecov integration in GitHub Actions (#18225)
---
 .github/workflows/bot.yml | 202 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 202 insertions(+)

diff --git a/.github/workflows/bot.yml b/.github/workflows/bot.yml
index 81279430e77a..f3a66d20d736 100644
--- a/.github/workflows/bot.yml
+++ b/.github/workflows/bot.yml
@@ -59,6 +59,208 @@ jobs:
       - name: RAT check
         run: ./scripts/release/validate_source_rat.sh
 
+  test-spark-client-and-hadoop-common:
+    runs-on: ubuntu-latest
+    timeout-minutes: 60
+    strategy:
+      matrix:
+        include:
+          - scalaProfile: "scala-2.12"
+            sparkProfile: "spark3.5"
+            flinkProfile: "flink1.18"
+
+    steps:
+      - uses: actions/checkout@v5
+      - name: Set up JDK 11
+        uses: actions/setup-java@v5
+        with:
+          java-version: '11'
+          distribution: 'temurin'
+          architecture: x64
+          cache: maven
+      - name: Build Project
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -DskipTests=true -Phudi-platform-service $MVN_ARGS -am -pl 
hudi-client/hudi-spark-client
+      - name: UT - hudi-hadoop-common
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-hadoop-common $MVN_ARGS -Djacoco.skip=false
+      - name: UT - hudi-client/hudi-spark-client
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-client/hudi-spark-client $MVN_ARGS 
-Djacoco.skip=false
+      - name: FT - hudi-client/hudi-spark-client
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -pl hudi-client/hudi-spark-client $MVN_ARGS 
-Djacoco.skip=false
+      - name: Generate merged coverage report
+        if: always()
+        run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
+      - name: Upload coverage to Codecov
+        if: always()
+        uses: codecov/codecov-action@v5
+        with:
+          files: ./jacoco-report.xml
+          disable_search: true
+          flags: spark-client-hadoop-common
+          token: ${{ secrets.CODECOV_TOKEN }}
+
+  test-utilities:
+    runs-on: ubuntu-latest
+    timeout-minutes: 60
+    strategy:
+      matrix:
+        include:
+          - scalaProfile: "scala-2.12"
+            sparkProfile: "spark3.5"
+            flinkProfile: "flink1.18"
+
+    steps:
+      - uses: actions/checkout@v5
+      - name: Set up JDK 11
+        uses: actions/setup-java@v5
+        with:
+          java-version: '11'
+          distribution: 'temurin'
+          architecture: x64
+          cache: maven
+      - name: Build Project
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn clean install -T 2 -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -DskipTests=true -Phudi-platform-service -Pthrift-gen-source 
$MVN_ARGS -am -pl hudi-utilities
+      - name: UT - hudi-utilities (TestHoodie*)
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn test -Punit-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -Dtest="TestHoodie*" 
-Dsurefire.failIfNoSpecifiedTests=false -pl hudi-utilities $MVN_ARGS 
-Djacoco.skip=false
+      - name: FT - hudi-utilities
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run:
+          mvn test -Pfunctional-tests -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" 
-D"$FLINK_PROFILE" -fae -Dsurefire.failIfNoSpecifiedTests=false -pl 
hudi-utilities $MVN_ARGS -Djacoco.skip=false
+      - name: Generate merged coverage report
+        if: always()
+        run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
+      - name: Upload coverage to Codecov
+        if: always()
+        uses: codecov/codecov-action@v5
+        with:
+          files: ./jacoco-report.xml
+          disable_search: true
+          flags: utilities
+          token: ${{ secrets.CODECOV_TOKEN }}
+
+  test-common-and-other-modules:
+    runs-on: ubuntu-latest
+    timeout-minutes: 90
+    strategy:
+      matrix:
+        include:
+          - scalaProfile: "scala-2.12"
+            sparkProfile: "spark3.5"
+            flinkProfile: "flink1.18"
+
+    env:
+      UT_MODULES: >-
+        
!hudi-hadoop-common,!hudi-hadoop-mr,!hudi-client/hudi-java-client,!hudi-client/hudi-spark-client,!hudi-cli,!hudi-examples,!hudi-examples/hudi-examples-common,!hudi-examples/hudi-examples-flink,!hudi-examples/hudi-examples-java,!hudi-examples/hudi-examples-spark,!hudi-spark-datasource,!hudi-spark-datasource/hudi-spark,!hudi-spark-datasource/hudi-spark3.5.x,!hudi-spark-datasource/hudi-spark3-common,!hudi-spark-datasource/hudi-spark-common,!hudi-utilities
+      FT_MODULES: >-
+        
!hudi-client/hudi-spark-client,!hudi-cli,!hudi-examples,!hudi-examples/hudi-examples-common,!hudi-examples/hudi-examples-flink,!hudi-examples/hudi-examples-java,!hudi-examples/hudi-examples-spark,!hudi-spark-datasource/hudi-spark,!hudi-utilities
+
+    steps:
+      - uses: actions/checkout@v5
+      - name: Set up JDK 11
+        uses: actions/setup-java@v5
+        with:
+          java-version: '11'
+          distribution: 'temurin'
+          architecture: x64
+          cache: maven
+      - name: Build Docker image
+        run: docker build -t hudi-ci .
+      - name: Build Project
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run: |
+          docker run --rm \
+            -v "$GITHUB_WORKSPACE:/hudi" \
+            -v "$HOME/.m2:/root/.m2" \
+            -v /var/run/docker.sock:/var/run/docker.sock \
+            -w /hudi \
+            hudi-ci \
+            /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn clean install -T 2 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -Phudi-platform-service 
-Pthrift-gen-source -DskipTests=true -Dcheckstyle.skip=true -Drat.skip=true 
$MVN_ARGS"
+      - name: UT - common and other modules
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run: |
+          docker run --rm \
+            -v "$GITHUB_WORKSPACE:/hudi" \
+            -v "$HOME/.m2:/root/.m2" \
+            -v /var/run/docker.sock:/var/run/docker.sock \
+            -w /hudi \
+            hudi-ci \
+            /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Punit-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -pl $UT_MODULES 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
+      - name: UT - hudi-utilities (non-TestHoodie)
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run: |
+          docker run --rm \
+            -v "$GITHUB_WORKSPACE:/hudi" \
+            -v "$HOME/.m2:/root/.m2" \
+            -v /var/run/docker.sock:/var/run/docker.sock \
+            -w /hudi \
+            hudi-ci \
+            /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Punit-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -Dtest='!TestHoodie*' 
-Dsurefire.failIfNoSpecifiedTests=false -pl hudi-utilities 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
+      - name: FT - common and other modules
+        env:
+          SCALA_PROFILE: ${{ matrix.scalaProfile }}
+          SPARK_PROFILE: ${{ matrix.sparkProfile }}
+          FLINK_PROFILE: ${{ matrix.flinkProfile }}
+        run: |
+          docker run --rm \
+            -v "$GITHUB_WORKSPACE:/hudi" \
+            -v "$HOME/.m2:/root/.m2" \
+            -v /var/run/docker.sock:/var/run/docker.sock \
+            -w /hudi \
+            hudi-ci \
+            /bin/bash -c "MAVEN_OPTS='-Xmx4g' mvn test -Pfunctional-tests 
-D$SCALA_PROFILE -D$SPARK_PROFILE -D$FLINK_PROFILE -fae -pl $FT_MODULES 
-Dcheckstyle.skip=true -Drat.skip=true $MVN_ARGS -Djacoco.skip=false"
+      - name: Generate merged coverage report
+        if: always()
+        run: ./scripts/jacoco/generate_merged_coverage_report.sh 
$GITHUB_WORKSPACE
+      - name: Upload coverage to Codecov
+        if: always()
+        uses: codecov/codecov-action@v5
+        with:
+          files: ./jacoco-report.xml
+          disable_search: true
+          flags: common-and-other-modules
+          token: ${{ secrets.CODECOV_TOKEN }}
+
   test-spark-java-tests-part1:
     runs-on: ubuntu-latest
     strategy:

Reply via email to