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

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new c82c525679 Add incremental builder and bump github action versions, 
fixes #8355 (#8356)
c82c525679 is described below

commit c82c525679910bd72c33817af1966f7180e96f47
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Mon Sep 14 09:48:49 2026 +0200

    Add incremental builder and bump github action versions, fixes #8355 (#8356)
---
 .github/pr-rules.yml                        | 26 +++++++++++----
 .github/workflows/issue_tagger.yml          |  2 +-
 .github/workflows/marketplace_classpath.yml |  6 ++--
 .github/workflows/pr_assign_milestone.yml   |  2 +-
 .github/workflows/pr_build_code.yml         | 49 ++++++++++++++++++++---------
 .github/workflows/pr_build_docs.yml         |  7 +++--
 .github/workflows/pr_tagger.yml             |  2 +-
 .github/workflows/self_assign.yml           |  4 +--
 .mvn/extensions.xml                         | 10 ++++++
 pom.xml                                     |  5 +++
 10 files changed, 82 insertions(+), 31 deletions(-)

diff --git a/.github/pr-rules.yml b/.github/pr-rules.yml
index 97a787d324..aed97c9085 100644
--- a/.github/pr-rules.yml
+++ b/.github/pr-rules.yml
@@ -13,12 +13,26 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Configuration for actions/labeler (v5+ format): a label applies when any of
+# its globs matches any changed file.
 # Please keep the entries sorted lexicographically in each category.
 
 # General
-Beam: ["engine-beam/**/*"]
-Containers: ["docker/**/*", "helm/**/*"]
-Documentation: ["docs/**/*"]
-Hop Gui: ["rap/**/*", "rcp/**/*", "ui/**/*"]
-Integration Testing: ["integration-tests/**/*"]
-Neo4j: ["plugins/tech/neo4j/**/*"]
\ No newline at end of file
+Beam:
+  - changed-files:
+      - any-glob-to-any-file: ['engine-beam/**/*']
+Containers:
+  - changed-files:
+      - any-glob-to-any-file: ['docker/**/*', 'helm/**/*']
+Documentation:
+  - changed-files:
+      - any-glob-to-any-file: ['docs/**/*']
+Hop Gui:
+  - changed-files:
+      - any-glob-to-any-file: ['rap/**/*', 'rcp/**/*', 'ui/**/*']
+Integration Testing:
+  - changed-files:
+      - any-glob-to-any-file: ['integration-tests/**/*']
+Neo4j:
+  - changed-files:
+      - any-glob-to-any-file: ['plugins/tech/neo4j/**/*']
diff --git a/.github/workflows/issue_tagger.yml 
b/.github/workflows/issue_tagger.yml
index c5f4c665c7..f94da0fbbb 100644
--- a/.github/workflows/issue_tagger.yml
+++ b/.github/workflows/issue_tagger.yml
@@ -24,7 +24,7 @@ jobs:
     permissions:
       issues: write
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v7
       - uses: damccorm/tag-ur-it@6fa72bbf1a2ea157b533d7e7abeafdb5855dbea5
         with:
           repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/marketplace_classpath.yml 
b/.github/workflows/marketplace_classpath.yml
index e11d8acca1..965baceb31 100644
--- a/.github/workflows/marketplace_classpath.yml
+++ b/.github/workflows/marketplace_classpath.yml
@@ -80,11 +80,11 @@ jobs:
       IT_REPORT_ROOT: 
'https://ci-builds.apache.org/job/Hop/job/Hop-integration-tests/lastCompletedBuild/testReport'
 
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v7
 
       # jdeps is a JDK tool: a JRE does not have it.
       - name: Set up JDK 21
-        uses: actions/setup-java@v4
+        uses: actions/setup-java@v6
         with:
           java-version: '21'
           distribution: 'temurin'
@@ -172,7 +172,7 @@ jobs:
 
       - name: Upload report
         if: always()
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v7
         with:
           name: marketplace-classpath-report
           path: reports/
diff --git a/.github/workflows/pr_assign_milestone.yml 
b/.github/workflows/pr_assign_milestone.yml
index aed01d5fe5..26c9c116fb 100644
--- a/.github/workflows/pr_assign_milestone.yml
+++ b/.github/workflows/pr_assign_milestone.yml
@@ -26,7 +26,7 @@ jobs:
     if: github.event.pull_request.merged
     steps:
       - name: add milestone
-        uses: actions/github-script@v7
+        uses: actions/github-script@v9
         with:
           github-token: ${{secrets.GITHUB_TOKEN}}
           script: |
diff --git a/.github/workflows/pr_build_code.yml 
b/.github/workflows/pr_build_code.yml
index e2cb9cdbf8..208ce67ecc 100644
--- a/.github/workflows/pr_build_code.yml
+++ b/.github/workflows/pr_build_code.yml
@@ -28,19 +28,35 @@ on:
     paths-ignore:
       - 'docs/**'
 
+# Supersede an in-flight PR build when the branch is pushed again; never 
cancel a
+# push build, so every merge to main keeps its own result.
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+
+env:
+  # Full build only for pushes to main; incremental for pull requests and for
+  # pushes to any other branch.
+  GIB_DISABLE: ${{ (github.event_name == 'push' && github.ref == 
'refs/heads/main') && 'true' || 'false' }}
+
 jobs:
   build:
     runs-on: ubuntu-latest
     timeout-minutes: 90
 
     steps:
-      - uses: actions/checkout@v2
+      # fetch-depth: 0 gives gitflow-incremental-builder the history it needs 
to
+      # find the merge base with origin/main. Harmless on the (full) main 
build.
+      - uses: actions/checkout@v7
+        with:
+          fetch-depth: 0
       - name: Set up JDK 21
-        uses: actions/setup-java@v1
+        uses: actions/setup-java@v6
         with:
-          java-version: 21
+          java-version: '21'
+          distribution: 'temurin'
       - name: Cache Maven packages
-        uses: actions/cache@v4
+        uses: actions/cache@v6
         with:
           path: ~/.m2/repository
           key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -49,13 +65,13 @@ jobs:
             ${{ runner.os }}-m2-
             ${{ runner.os }}-
       - name: RAT Check
-        run: mvn clean apache-rat:check
+        run: mvn clean apache-rat:check -Dgib.disable=$GIB_DISABLE
       - name: Checkstyle
-        run: mvn clean checkstyle:check
+        run: mvn clean checkstyle:check -Dgib.disable=$GIB_DISABLE
       - name: Spotless check
-        run: mvn spotless:check
+        run: mvn spotless:check -Dgib.disable=$GIB_DISABLE
       - name: Build with Maven
-        run: MAVEN_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"; mvn 
clean install -T 1C -B -C -e -fae -V -Dmaven.compiler.fork=true 
-Dsurefire.rerunFailingTestsCount=2 -Dassemblies=false -Dmodule.zips=false 
-Djacoco.skip=true --file pom.xml
+        run: MAVEN_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"; mvn 
clean install -T 1C -B -C -e -fae -V -Dmaven.compiler.fork=true 
-Dsurefire.rerunFailingTestsCount=2 -Dassemblies=false -Dmodule.zips=false 
-Djacoco.skip=true -Dgib.disable=$GIB_DISABLE --file pom.xml
 
   # Add a UI and run the UI tests only
   ui-tests:
@@ -66,13 +82,16 @@ jobs:
     timeout-minutes: 45
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v7
+        with:
+          fetch-depth: 0
       - name: Set up JDK 21
-        uses: actions/setup-java@v1
+        uses: actions/setup-java@v6
         with:
-          java-version: 21
+          java-version: '21'
+          distribution: 'temurin'
       - name: Cache Maven packages
-        uses: actions/cache@v4
+        uses: actions/cache@v6
         with:
           path: ~/.m2/repository
           key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -83,13 +102,15 @@ jobs:
       # SWT uses the GTK3 native bindings on Linux; Xvfb provides the virtual 
display.
       - name: Install Xvfb and SWT GTK libraries
         run: sudo apt-get update && sudo apt-get install -y xvfb libgtk-3-0
+      # On a PR this only runs the UI tests when the change touches a module 
the UI
+      # tests depend on; otherwise the incremental reactor prunes them away.
       - name: Run SWTBot UI tests under Xvfb
         run: >
           xvfb-run -a --server-args="-screen 0 1280x1024x24"
-          mvn -B -V -Puitest -Dassemblies=false -Dmodule.zips=false 
-Djacoco.skip=true package
+          mvn -B -V -Puitest -Dassemblies=false -Dmodule.zips=false 
-Djacoco.skip=true -Dgib.disable=$GIB_DISABLE package
       - name: Upload SWTBot failure screenshots
         if: failure()
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v7
         with:
           name: swtbot-screenshots
           path: '**/screenshots/**'
diff --git a/.github/workflows/pr_build_docs.yml 
b/.github/workflows/pr_build_docs.yml
index da12ae5460..558015c54f 100644
--- a/.github/workflows/pr_build_docs.yml
+++ b/.github/workflows/pr_build_docs.yml
@@ -31,10 +31,11 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v7
       - name: Set up JDK 21
-        uses: actions/setup-java@v1
+        uses: actions/setup-java@v6
         with:
-          java-version: 21
+          java-version: '21'
+          distribution: 'temurin'
       - name: RAT Check
         run: mvn clean apache-rat:check
\ No newline at end of file
diff --git a/.github/workflows/pr_tagger.yml b/.github/workflows/pr_tagger.yml
index 8a417b5f64..8041417e6d 100644
--- a/.github/workflows/pr_tagger.yml
+++ b/.github/workflows/pr_tagger.yml
@@ -27,7 +27,7 @@ jobs:
       contents: read
       pull-requests: write
     steps:
-      - uses: actions/labeler@v4
+      - uses: actions/labeler@v7
         with:
           repo-token: "${{ secrets.GITHUB_TOKEN }}"
           configuration-path: '.github/pr-rules.yml'
diff --git a/.github/workflows/self_assign.yml 
b/.github/workflows/self_assign.yml
index 561299d881..5af39f573e 100644
--- a/.github/workflows/self_assign.yml
+++ b/.github/workflows/self_assign.yml
@@ -27,7 +27,7 @@ jobs:
     steps:
       - name: Get project milestones
         id: milestones
-        uses: actions/github-script@v7
+        uses: actions/github-script@v9
         with:
           github-token: ${{secrets.GITHUB_TOKEN}}
           script: |
@@ -46,7 +46,7 @@ jobs:
               }
             }
             return null
-      - uses: actions/github-script@v7
+      - uses: actions/github-script@v9
         with:
           script: |
             const body = context.payload.comment.body.replace( /\r\n/g, " " 
).replace( /\n/g, " " ).split(' ');
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index cb5d494719..1088e58cad 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -16,6 +16,16 @@
   ~ limitations under the License.
   -->
 <extensions>
+    <!-- Incremental reactor builds: builds only the modules that changed 
against
+         the reference branch plus their dependents. Inert unless enabled with
+         -Dgib.disable=false; the GitHub Actions PR build is the only thing 
that
+         does so. See the gib.* properties in the root pom.xml. -->
+    <extension>
+        <groupId>io.github.gitflow-incremental-builder</groupId>
+        <artifactId>gitflow-incremental-builder</artifactId>
+        <version>4.7.0</version>
+    </extension>
+
     <!-- not really needed by default and quite outdated
     <extension>
       <groupId>co.leantechniques</groupId>
diff --git a/pom.xml b/pom.xml
index bad31716f8..52e522009d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,11 @@
         <byte-buddy.version>1.18.11</byte-buddy.version>
         <commonmark.version>0.30.0</commonmark.version>
         <cyclonedx-maven-plugin.version>2.9.3</cyclonedx-maven-plugin.version>
+        <gib.buildUpstream>always</gib.buildUpstream>
+        <gib.disable>true</gib.disable>
+        <gib.fetchReferenceBranch>true</gib.fetchReferenceBranch>
+        <gib.referenceBranch>refs/remotes/origin/main</gib.referenceBranch>
+        <gib.skipTestsForUpstreamModules>true</gib.skipTestsForUpstreamModules>
         <gmavenplus-plugin.version>4.3.1</gmavenplus-plugin.version>
         <groovy.version>4.0.28</groovy.version>
         <grpc.version>1.83.1</grpc.version>

Reply via email to