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

rzo1 pushed a commit to branch rework-ci
in repository https://gitbox.apache.org/repos/asf/storm.git

commit afa355fece7b57e5c3d6fa53393bc93679cd86fc
Author: Richard Zowalla <[email protected]>
AuthorDate: Wed Apr 1 20:19:48 2026 +0200

    Speed up CI by building once on JDK 17 and fanning out tests.
    
    Restructure the GitHub Actions CI workflow into a build + test pipeline:
    
    - Compiles the project once on JDK 17 (minimum supported)
    - Runs RAT license check
    - Uploads artifacts for downstream test jobs
    - Eliminates redundant full rebuilds per test matrix entry
    - Add gitact-test.sh: a test-only CI script (no compile, no RAT)
    - Remove unused Ruby and Node.js setup from all workflows
    (storm-webapp uses frontend-maven-plugin with its own Node)
---
 .github/workflows/maven.yaml     | 63 +++++++++++++++++++++++++++++-----------
 .github/workflows/nightlies.yaml |  8 -----
 .github/workflows/snapshots.yaml |  8 -----
 dev-tools/gitact/gitact-test.sh  | 60 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 106 insertions(+), 33 deletions(-)

diff --git a/.github/workflows/maven.yaml b/.github/workflows/maven.yaml
index f95b502ae..efb598c5b 100644
--- a/.github/workflows/maven.yaml
+++ b/.github/workflows/maven.yaml
@@ -22,12 +22,48 @@ on:
     branches: [ "master" ]
 
 jobs:
+  # Compile once on the minimum supported JDK and share artifacts with test 
jobs
   build:
-    runs-on: ${{ matrix.os }}
+    runs-on: ubuntu-latest
+    timeout-minutes: 30
+    steps:
+      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+      - name: Set up Python
+        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
+        with:
+          python-version: '3.10'
+      - name: Set up JDK 17
+        uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
+        with:
+          distribution: temurin
+          java-version: 17
+      - name: Ensure a clean state without storm artifacts
+        run: rm -rf ~/.m2/repository/org/apache/storm
+      - name: Build project (compile + install, skip tests)
+        run: /bin/bash ./dev-tools/gitact/gitact-install.sh `pwd`
+      - name: RAT license check
+        run: mvn --batch-mode apache-rat:check -Prat
+      - name: Upload Storm artifacts
+        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 
# v4.6.2
+        with:
+          name: storm-build-artifacts
+          path: ~/.m2/repository/org/apache/storm/
+          retention-days: 1
+
+  # Run tests on multiple JDKs using pre-built artifacts from the build job
+  test:
+    needs: build
+    runs-on: ubuntu-latest
     continue-on-error: ${{ matrix.experimental }}
+    timeout-minutes: 45
     strategy:
       matrix:
-        os: [ ubuntu-latest ]
         java: [ 17, 21 ]
         module: [ Client, Server, Core, External, Integration-Test ]
         experimental: [false]
@@ -40,29 +76,22 @@ jobs:
           key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
             ${{ runner.os }}-maven-
+      - name: Download Storm artifacts
+        uses: 
actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
+        with:
+          name: storm-build-artifacts
+          path: ~/.m2/repository/org/apache/storm/
       - name: Set up Python
         uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
         with:
           python-version: '3.10'
-      - name: Set up Node
-        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # 
v6.3.0
-        with:
-          node-version: 20
-      - name: Set up Ruby
-        uses: ruby/setup-ruby@3ff19f5e2baf30647122352b96108b1fbe250c64 # 
v1.299.0
-        with:
-          ruby-version: '2.7'
       - name: Set up JDK ${{ matrix.java }}
         uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
         with:
           distribution: temurin
           java-version: ${{ matrix.java }}
-      - name: Ensure a clean state without storm artifacts
-        run: rm -rf ~/.m2/repository/org/apache/storm
-      - name: Set up project dependencies
-        run: /bin/bash ./dev-tools/gitact/gitact-install.sh `pwd`
-      - name: Run build
+      - name: Run tests
         run: |
-          export JDK_VERSION=${{ matrix.java }} 
+          export JDK_VERSION=${{ matrix.java }}
           export USER=github
-          /bin/bash ./dev-tools/gitact/gitact-script.sh `pwd` ${{ 
matrix.module }};
+          /bin/bash ./dev-tools/gitact/gitact-test.sh `pwd` ${{ matrix.module 
}};
diff --git a/.github/workflows/nightlies.yaml b/.github/workflows/nightlies.yaml
index 9e56f4b71..b6badea36 100644
--- a/.github/workflows/nightlies.yaml
+++ b/.github/workflows/nightlies.yaml
@@ -40,14 +40,6 @@ jobs:
         uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
         with:
           python-version: '3.10'
-      - name: Set up Node
-        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # 
v6.3.0
-        with:
-          node-version: 16
-      - name: Set up Ruby
-        uses: ruby/setup-ruby@3ff19f5e2baf30647122352b96108b1fbe250c64 # 
v1.299.0
-        with:
-          ruby-version: '2.7'
       - name: Set up JDK ${{ matrix.java }}
         uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
         with:
diff --git a/.github/workflows/snapshots.yaml b/.github/workflows/snapshots.yaml
index ee9ba6013..c58a2a30a 100644
--- a/.github/workflows/snapshots.yaml
+++ b/.github/workflows/snapshots.yaml
@@ -40,14 +40,6 @@ jobs:
         uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
         with:
           python-version: '3.10'
-      - name: Set up Node
-        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # 
v6.3.0
-        with:
-          node-version: 16
-      - name: Set up Ruby
-        uses: ruby/setup-ruby@3ff19f5e2baf30647122352b96108b1fbe250c64 # 
v1.299.0
-        with:
-          ruby-version: '2.7'
       - name: Set up JDK ${{ matrix.java }}
         uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
         with:
diff --git a/dev-tools/gitact/gitact-test.sh b/dev-tools/gitact/gitact-test.sh
new file mode 100755
index 000000000..f41901a11
--- /dev/null
+++ b/dev-tools/gitact/gitact-test.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+# Test-only script for CI. Expects pre-built artifacts in the local Maven
+# repository (provided by the build job via upload/download-artifact).
+
+echo "Python3 version:  " $(python3 -V 2>&1)
+echo "Maven version  :  " $(mvn -v)
+
+set -x
+
+STORM_SRC_ROOT_DIR=$1
+
+THIS_SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+cd "${STORM_SRC_ROOT_DIR}" || (echo "Cannot cd to ${STORM_SRC_ROOT_DIR}"; exit 
1)
+
+if [ "$2" == "Integration-Test" ]
+    then
+    exec ./integration-test/run-it.sh
+elif [ "$2" == "Check-Updated-License-Files" ]
+    then
+    exec python3 dev-tools/validate-license-files.py --skip-build-storm
+elif [ "$2" == "Client" ]
+then
+    TEST_MODULES=storm-client
+elif [ "$2" == "Server" ]
+then
+    TEST_MODULES=storm-server,storm-webapp
+elif [ "$2" == "Core" ]
+then
+    TEST_MODULES=storm-core
+elif [ "$2" == "External" ]
+then
+    
TEST_MODULES='!storm-client,!storm-server,!storm-core,!storm-webapp,!storm-shaded-deps'
+fi
+
+export STORM_TEST_TIMEOUT_MS=150000
+export MAVEN_OPTS="-Xmx2048m"
+
+mvn --batch-mode test -fae -Pnative,all-tests,examples,externals -pl 
"$TEST_MODULES"
+BUILD_RET_VAL=$?
+
+for dir in $(find . -type d -and -wholename \*/target/\*-reports)
+do
+  echo "Looking for errors in ${dir}"
+  python3 "${THIS_SCRIPT_DIR}"/print-errors-from-test-reports.py "${dir}"
+done
+
+exit ${BUILD_RET_VAL}

Reply via email to