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>