From 0658cc0823af31d7499a75f3efe42ac7260ced5b Mon Sep 17 00:00:00 2001 From: Falko Modler Date: Thu, 25 Feb 2021 22:20:36 +0100 Subject: [PATCH] Introduce gitflow-incremental-builder Relates to #11622 Note: master, release branches (e.g. 1.10) and backport-branches are not built incrementally! Includes some efficiency teaks to bom-descriptor-json and a "shadow CI" for a temporary parallel testing phase. --- .github/dependabot.yml | 1 + .github/workflows/ci-actions-incremental.yml | 650 +++ CONTRIBUTING.md | 40 + devtools/bom-descriptor-json/pom.xml | 4806 +++++++++--------- pom.xml | 38 + update-extension-dependencies.sh | 34 +- 6 files changed, 3169 insertions(+), 2400 deletions(-) create mode 100644 .github/workflows/ci-actions-incremental.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a9537b5ef4323..da803b7de21ba 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,6 +23,7 @@ updates: - dependency-name: org.eclipse:yasson - dependency-name: org.yaml:snakeyaml - dependency-name: com.google.guava:guava + - dependency-name: com.vackosar.gitflowincrementalbuilder:gitflow-incremental-builder # Quarkus - dependency-name: io.quarkus.gizmo:gizmo - dependency-name: io.quarkus.http:* diff --git a/.github/workflows/ci-actions-incremental.yml b/.github/workflows/ci-actions-incremental.yml new file mode 100644 index 0000000000000..f46834f1197ef --- /dev/null +++ b/.github/workflows/ci-actions-incremental.yml @@ -0,0 +1,650 @@ +name: Quarkus CI incremental + +on: + push: + branches-ignore: + - 'dependabot/**' + # paths-ignore in ci-fork-mvn-cache.yml should match + paths-ignore: + - '.gitignore' + - '.dockerignore' + - '*.md' + - '*.adoc' + - '*.txt' + - 'docs/src/main/asciidoc/**' + - '.github/ISSUE_TEMPLATE/**' + - '.github/*.yml' + - '.github/*.java' + - '.github/*.conf' + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths-ignore: + - '.gitignore' + - '.dockerignore' + - '*.md' + - '*.adoc' + - '*.txt' + - 'docs/src/main/asciidoc/**' + - '.github/ISSUE_TEMPLATE/**' + - '.github/*.yml' + - '.github/*.java' + - '.github/*.conf' + +env: + # Workaround testsuite locale issue + LANG: en_US.UTF-8 + NATIVE_TEST_MAVEN_OPTS: "-B --settings .github/mvn-settings.xml --fail-at-end -Dquarkus.native.container-build=true -Dtest-containers -Dstart-containers -Dnative-image.xmx=5g -Dnative -Dnative.surefire.skip -Dformat.skip -Dno-descriptor-tests install -DskipDocs" + JVM_TEST_MAVEN_OPTS: "-e -B --settings .github/mvn-settings.xml -Dtest-containers -Dstart-containers -Dformat.skip -DskipDocs" + DB_USER: hibernate_orm_test + DB_PASSWORD: hibernate_orm_test + DB_NAME: hibernate_orm_test +jobs: + ci-sanity-check: + name: "CI Sanity Check" + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + steps: + - name: Build + run: sleep 30 + build-jdk11: + name: "Initial JDK 11 Build" + runs-on: ubuntu-latest + # Skip master in forks + # Skip draft PRs and those with WIP in the subject, rerun as soon as its removed + if: "(github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')) && ( \ + github.event_name != 'pull_request' || ( \ + github.event.pull_request.draft == false && \ + github.event.pull_request.state != 'closed' && \ + contains(github.event.pull_request.title, 'wip ') == false && \ + contains(github.event.pull_request.title, '[wip]') == false && \ + ( + github.event.action != 'edited' || \ + contains(github.event.changes.title.from, 'wip ') || \ + contains(github.event.changes.title.from, '[wip]') \ + ) \ + ) \ + )" + steps: + - uses: actions/checkout@v2 + - uses: n1hility/cancel-previous-runs@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + - name: Set up JDK 11 + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: 11 + - name: Get Date + id: get-date + run: | + echo "::set-output name=date::$(/bin/date -u "+%Y-%m")" + shell: bash + - name: Cache Maven Repository + id: cache-maven + uses: actions/cache@v2 + with: + path: ~/.m2/repository + # refresh cache every month to avoid unlimited growth + key: q2maven-${{ steps.get-date.outputs.date }} + - name: Build + # note: '-Pincremental -Dgib.disable' shall only trigger the download of gitflow-incremental-builder, not activate it + # since -Dincremental deactivates dependencies in bom-descriptor-json (which we do need here), -P is used instead + run: | + mvn -T1C -e -B -DskipTests -DskipITs -Dinvoker.skip -Dno-format -Dtcks -Pincremental -Dgib.disable --settings .github/mvn-settings.xml clean install + - name: Verify extension dependencies + shell: bash + run: | + ./update-extension-dependencies.sh -B --settings .github/mvn-settings.xml + if [ `git status -s -u no '*pom.xml' | wc -l` -ne 0 ] + then + echo -e '\033[0;31mError:\033[0m Dependencies to extension artifacts are outdated! Run ./update-extension-dependencies.sh and add the modified pom.xml files to your commit.' 1>&2 + exit 1 + fi + - name: Tar Maven Repo + shell: bash + run: tar -I 'pigz -9' -cf maven-repo.tgz -C ~ .m2/repository + - name: Persist Maven Repo + uses: actions/upload-artifact@v1 + with: + name: maven-repo + path: maven-repo.tgz + - name: Delete Local Artifacts From Cache + shell: bash + run: rm -r ~/.m2/repository/io/quarkus + - name: Get GIB arguments + id: get-gib-args + env: + PULL_REQUEST_BASE: ${{ github.event.pull_request.base.sha }} + run: | + # See also: https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#configuration (GIB) + # Common GIB_ARGS for all CI cases (hint: see also root pom.xml): + # - disableSelectedProjectsHandling: required to detect changes in jobs that use -pl + # - untracked: to ignore files created by jobs (and uncommitted to be consistent) + GIB_ARGS="-Dincremental -Dgib.disableSelectedProjectsHandling -Dgib.untracked=false -Dgib.uncommitted=false" + if [ -n "$PULL_REQUEST_BASE" ] + then + # The PR defines a clear merge target so just use that branch for reference, *unless* + # - the current branch is a backport branch + GIB_ARGS+=" -Dgib.referenceBranch=$PULL_REQUEST_BASE -Dgib.disableIfBranchRegex='.*backport.*'" + else + # No PR means the merge target is uncertain so fetch & use master of quarkusio/quarkus, *unless*: + # - the current branch is master or some released branch like 1.10 (TODO: introduce tags to use as reference) + # - the current branch is a backport branch targeting some released branch like 1.10 (merge target is not master) + GIB_ARGS+=" -Dgib.referenceBranch=refs/remotes/quarkusio/master -Dgib.fetchReferenceBranch -Dgib.disableIfBranchRegex='master|\d+\.\d+|.*backport.*'" + fi + echo "GIB_ARGS: $GIB_ARGS" + echo "::set-output name=gib_args::${GIB_ARGS}" + outputs: + gib_args: ${{ steps.get-gib-args.outputs.gib_args }} + + linux-jvm-tests: + name: JVM Tests - JDK ${{matrix.java.name}} + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + needs: build-jdk11 + timeout-minutes: 240 + env: + MAVEN_OPTS: -Xmx2048m -XX:MaxMetaspaceSize=1000m + strategy: + fail-fast: false + matrix: + java : + #- { name: "8", + # java-version: 8, + # maven_args: "-pl !integration-tests/kubernetes/quarkus-standard-way" + #} + - { + name: "11", + java-version: 11, + maven_args: "" + } + #- { + # name: "15", + # java-version: 15, + # maven_args: "-pl !integration-tests/kubernetes/quarkus-standard-way" + #} + + steps: + - name: Stop mysql + shell: bash + run: | + ss -ln + sudo service mysql stop || true + + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Add quarkusio remote + shell: bash + run: git remote add quarkusio https://github.com/quarkusio/quarkus.git + + - name: apt clean + shell: bash + run: sudo apt-get clean + + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + + - name: Set up JDK ${{ matrix.java.name }} + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: ${{ matrix.java.java-version }} + release: ${{ matrix.java.release }} + + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Build with Maven + shell: bash + run: mvn $JVM_TEST_MAVEN_OPTS install -pl !integration-tests/gradle -pl !integration-tests/maven -pl !integration-tests/devtools ${{ matrix.java.maven_args }} ${{ needs.build-jdk11.outputs.gib_args }} + - name: Prepare failure archive (if maven failed) + if: failure() + shell: bash + run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v1 + if: failure() + with: + name: test-reports-linux-jvm${{matrix.java.name}} + path: 'test-reports.tgz' + +# windows-jdk11-jvm-tests: +# name: JVM Tests - JDK 11 Windows +# runs-on: windows-latest +# # Skip master in forks +# if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" +# needs: build-jdk11 +# timeout-minutes: 180 +# env: +# MAVEN_OPTS: -Xmx1408m -XX:MaxMetaspaceSize=1000m +# +# steps: +# - uses: actions/checkout@v2 +# with: +# fetch-depth: 0 +# - name: Add quarkusio remote +# shell: bash +# run: git remote add quarkusio https://github.com/quarkusio/quarkus.git +# - name: Set up JDK 11 +# # Uses sha for added security since tags can be updated +# uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 +# with: +# java-version: 11 +# - name: Download Maven Repo +# uses: actions/download-artifact@v1 +# with: +# name: maven-repo +# path: . +# - name: Extract Maven Repo +# shell: bash +# run: tar -xzf maven-repo.tgz -C ~ +# - name: Build with Maven +# shell: bash +# run: mvn -B --settings .github/mvn-settings.xml -DskipDocs -Dformat.skip -pl !integration-tests/gradle -pl !integration-tests/maven -pl !integration-tests/devtools install ${{ needs.build-jdk11.outputs.gib_args }} +# - name: Prepare failure archive (if maven failed) +# if: failure() +# shell: bash +# run: | +# # Disambiguate windows find from cygwin find +# /usr/bin/find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - +# - name: Upload failure Archive (if maven failed) +# uses: actions/upload-artifact@v1 +# if: failure() +# with: +# name: test-reports-windows-jdk11-jvm +# path: 'test-reports.tgz' + + linux-jvm-maven-tests: + name: Maven Tests - JDK ${{matrix.java.name}} + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + needs: build-jdk11 + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + java: + - { + name: "11", + java-version: 11 + } + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Add quarkusio remote + shell: bash + run: git remote add quarkusio https://github.com/quarkusio/quarkus.git + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Set up JDK ${{ matrix.java.name }} + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: ${{ matrix.java.java-version }} + - name: Run Maven integration tests + run: mvn $JVM_TEST_MAVEN_OPTS install -pl 'integration-tests/maven' ${{ needs.build-jdk11.outputs.gib_args }} + - name: Prepare failure archive (if maven failed) + if: failure() + shell: bash + run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v1 + if: failure() + with: + name: test-reports-linux-maven-java${{matrix.java.name}} + path: 'test-reports.tgz' + +# windows-jdk11-jvm-maven-tests: +# name: Maven Tests - JDK 11 Windows +# runs-on: windows-latest +# # Skip master in forks +# if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" +# needs: build-jdk11 +# timeout-minutes: 60 +# strategy: +# fail-fast: false +# steps: +# - uses: actions/checkout@v2 +# with: +# fetch-depth: 0 +# - name: Add quarkusio remote +# shell: bash +# run: git remote add quarkusio https://github.com/quarkusio/quarkus.git +# - name: Download Maven Repo +# uses: actions/download-artifact@v1 +# with: +# name: maven-repo +# path: . +# - name: Extract Maven Repo +# shell: bash +# run: tar -xzf maven-repo.tgz -C ~ +# - name: Set up JDK 11 +# # Uses sha for added security since tags can be updated +# uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 +# with: +# java-version: 11 +# - name: Run Maven integration tests +# shell: bash +# run: mvn $JVM_TEST_MAVEN_OPTS install -pl 'integration-tests/maven' ${{ needs.build-jdk11.outputs.gib_args }} +# - name: Prepare failure archive (if maven failed) +# if: failure() +# shell: bash +# run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - +# - name: Upload failure Archive (if maven failed) +# uses: actions/upload-artifact@v1 +# if: failure() +# with: +# name: test-reports-windows-maven-java11 +# path: 'test-reports.tgz' + + linux-jvm-gradle-tests: + name: Gradle Tests - JDK ${{matrix.java.name}} + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + needs: build-jdk11 + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + java: + - { + name: "11", + java-version: 11 + } + steps: + - uses: actions/checkout@v2 + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Set up JDK ${{ matrix.java.name }} + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: ${{ matrix.java.java-version }} + - name: Build with Gradle + uses: eskatos/gradle-command-action@v1 + env: + GRADLE_OPTS: -Xmx1408m + with: + gradle-version: wrapper + wrapper-directory: integration-tests/gradle + build-root-directory: integration-tests/gradle + arguments: clean test -i -S --stacktrace --no-daemon + +# windows-jdk11-jvm-gradle-tests: +# name: Gradle Tests - JDK 11 Windows +# needs: build-jdk11 +# # Skip master in forks +# if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" +# runs-on: windows-latest +# timeout-minutes: 80 +# steps: +# - uses: actions/checkout@v2 +# - name: Set up JDK 11 +# # Uses sha for added security since tags can be updated +# uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 +# with: +# java-version: 11 +# - name: Download Maven Repo +# uses: actions/download-artifact@v1 +# with: +# name: maven-repo +# path: . +# - name: Extract Maven Repo +# shell: bash +# run: tar -xzf maven-repo.tgz -C ~ +# - name: Build with Gradle +# uses: eskatos/gradle-command-action@v1 +# timeout-minutes: 60 +# env: +# GRADLE_OPTS: -Xmx1408m +# with: +# gradle-version: wrapper +# wrapper-directory: integration-tests/gradle +# build-root-directory: integration-tests/gradle +# arguments: clean test -i -S --stacktrace --no-daemon + + linux-jvm-devtools-tests: + name: Devtools Tests - JDK ${{matrix.java.name}} + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + needs: build-jdk11 + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + java: + - { + name: "11", + java-version: 11 + } + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Add quarkusio remote + shell: bash + run: git remote add quarkusio https://github.com/quarkusio/quarkus.git + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Set up JDK ${{ matrix.java.name }} + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: ${{ matrix.java.java-version }} + - name: Run Devtools integration tests + run: mvn $JVM_TEST_MAVEN_OPTS install -pl 'integration-tests/devtools' ${{ needs.build-jdk11.outputs.gib_args }} + - name: Prepare failure archive (if maven failed) + if: failure() + shell: bash + run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v1 + if: failure() + with: + name: test-reports-linux-devtools-java${{matrix.java.name}} + path: 'test-reports.tgz' + +# windows-jdk11-jvm-devtools-tests: +# name: Devtools Tests - JDK 11 Windows +# runs-on: windows-latest +# # Skip master in forks +# if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" +# needs: build-jdk11 +# timeout-minutes: 60 +# strategy: +# fail-fast: false +# steps: +# - uses: actions/checkout@v2 +# with: +# fetch-depth: 0 +# - name: Add quarkusio remote +# shell: bash +# run: git remote add quarkusio https://github.com/quarkusio/quarkus.git +# - name: Download Maven Repo +# uses: actions/download-artifact@v1 +# with: +# name: maven-repo +# path: . +# - name: Extract Maven Repo +# shell: bash +# run: tar -xzf maven-repo.tgz -C ~ +# - name: Set up JDK 11 +# # Uses sha for added security since tags can be updated +# uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 +# with: +# java-version: 11 +# - name: Run Devtools integration tests +# shell: bash +# run: mvn $JVM_TEST_MAVEN_OPTS install -pl 'integration-tests/devtools' ${{ needs.build-jdk11.outputs.gib_args }} +# - name: Prepare failure archive (if maven failed) +# if: failure() +# shell: bash +# run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - +# - name: Upload failure Archive (if maven failed) +# uses: actions/upload-artifact@v1 +# if: failure() +# with: +# name: test-reports-windows-devtools-java11 +# path: 'test-reports.tgz' + + tcks-test: + name: MicroProfile TCKs Tests + needs: build-jdk11 + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + runs-on: ubuntu-latest + timeout-minutes: 150 + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + path: tcks + - name: Add quarkusio remote + shell: bash + run: git remote add quarkusio https://github.com/quarkusio/quarkus.git + working-directory: ./tcks + - name: Download RESTEasy Reactive Testsuite + uses: actions/checkout@v2 + with: + repository: quarkusio/resteasy-reactive-testsuite + path: resteasy-reactive-testsuite + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + working-directory: ./tcks + - name: Set up JDK 11 + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: 11 + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Run RESTEasy Reactive TCK + # Note: No gib_args here because resteasy-reactive-testsuite is a different repo + run: mvn -B --settings ../tcks/.github/mvn-settings.xml install + working-directory: ./resteasy-reactive-testsuite + - name: Verify with Maven + run: mvn -B --settings .github/mvn-settings.xml -Dtcks -pl tcks -amd install ${{ needs.build-jdk11.outputs.gib_args }} + working-directory: ./tcks + - name: Prepare failure archive (if maven failed) + if: failure() + shell: bash + run: find . -name '*-reports' -type d -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v1 + if: failure() + with: + name: test-reports-tcks + path: 'test-reports.tgz' + + native-tests-read-json-matrix: + name: Native Tests - Read JSON matrix + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + outputs: + matrix: ${{ steps.read.outputs.matrix }} + steps: + - uses: actions/checkout@v2 + - id: read + run: | + json=$(tr -d '\n' < .github/native-tests.json ) + echo $json + echo "::set-output name=matrix::${json}" + + native-tests: + name: Native Tests - ${{matrix.category}} + needs: [build-jdk11, native-tests-read-json-matrix] + runs-on: ubuntu-latest + # Skip master in forks + if: "github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/master')" + # Ignore the following YAML Schema error + timeout-minutes: ${{matrix.timeout}} + strategy: + max-parallel: 8 + fail-fast: false + matrix: ${{ fromJson(needs.native-tests-read-json-matrix.outputs.matrix) }} + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Add quarkusio remote + shell: bash + run: git remote add quarkusio https://github.com/quarkusio/quarkus.git + - name: Set up JDK 11 + # Uses sha for added security since tags can be updated + uses: joschi/setup-jdk@e87a7cec853d2dd7066adf837fe12bf0f3d45e52 + with: + java-version: 11 + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + - name: Download Maven Repo + uses: actions/download-artifact@v1 + with: + name: maven-repo + path: . + - name: Extract Maven Repo + shell: bash + run: tar -xzf maven-repo.tgz -C ~ + - name: Build with Maven + env: + TEST_MODULES: ${{matrix.test-modules}} + CATEGORY: ${{matrix.category}} + run: | + for i in $TEST_MODULES + do modules+="integration-tests/$i,"; done + mvn -pl "${modules}" $NATIVE_TEST_MAVEN_OPTS ${{ needs.build-jdk11.outputs.gib_args }} + # add the 'simple with spaces' project to the run of 'Misc1' by executing it explicitly + # done because there is no good way to pass strings with empty values to the previous command + # so this hack is as good as any + if [ "$CATEGORY" == "Misc1" ]; then + mvn -Dnative -Dquarkus.native.container-build=true -B --settings .github/mvn-settings.xml -pl 'integration-tests/simple with space/' verify ${{ needs.build-jdk11.outputs.gib_args }} + fi + - name: Prepare failure archive (if maven failed) + if: failure() + shell: bash + run: find . -type d -name '*-reports' -o -wholename '*/build/reports/tests/functionalTest' -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v1 + if: failure() + with: + name: test-reports-native-${{matrix.category}} + path: 'test-reports.tgz' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a048ccd6eeeb..3d1a10c0d2ef5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,6 +25,9 @@ But first, read this page (including the small print at the end). - [Building all modules of an extension](#building-all-modules-of-an-extension) - [Building a single module of an extension](#building-a-single-module-of-an-extension) - [Running a single test](#running-a-single-test) + - [Automatic incremental build](#automatic-incremental-build) + * [Special case `bom-descriptor-json`](#special-case--bom-descriptor-json-) + * [Usage by CI](#usage-by-ci) * [Usage](#usage) - [With Maven](#with-maven) - [With Gradle](#with-gradle) @@ -286,6 +289,43 @@ One way to accomplish this is by executing the following command: ./mvnw test -f integration-tests/resteasy-jackson/ -Dtest=GreetingResourceTest ``` +#### Automatic incremental build + +:information_source: This feature is currently in testing mode. You're invited to give it a go and please reach out via [Zulip](https://quarkusio.zulipchat.com/#narrow/stream/187038-dev) or GitHub in case something doesn't work as expected or you have ideas to improve things. + +Instead of _manually_ specifying the modules to build as in the previous examples, you can tell [gitflow-incremental-builder (GIB)](https://github.com/gitflow-incremental-builder/gitflow-incremental-builder) to only build the modules that have been changed or depend on modules that have been changed (downstream). +E.g.: +``` +./mvnw install -Dincremental +``` +This will build all modules (and their downstream modules) that have been changed compared to your _local_ `master`, including untracked and uncommitted changes. + +If you just want to build the changes since the last commit on the current branch, you can switch off the branch comparison via `-Dgib.disableBranchComparison` (or short: `-Dgib.dbc`). + +There are many more configuration options in GIB you can use to customize its behaviour: https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#configuration + +Parallel builds (`-T...`) should work without problems but parallel test execution is not yet supported (in general, not a GIB limitation). + +##### Special case `bom-descriptor-json` + +Without going too much into details (`devtools/bom-descriptor-json/pom.xml` has more info), you should build this module _without_ `-Dincremental` _if you changed any extension "metadata"_: + +* Addition/renaming/removal of an extension +* Any other changes to any `quarkus-extension.yaml` + +##### Usage by CI + +The GitHub Actions based Quarkus CI is using GIB to reduce the average build time of pull request builds and builds of branches in your fork. + +CI is using a slighty different GIB config than locally: + +* [Special handling of "Explicitly selected projects"](https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#explicitly-selected-projects) is deactivated +* Untracked/uncommitted changes are not considered +* Branch comparison is more complex due to distributed GitHub forks +* Certain "critical" branches like `master` are not built incrementally + +For more details see the `Get GIB arguments` step in `.github/workflows/ci-actions-incremental.yml`. + ## Usage After the build was successful, the artifacts are available in your local Maven repository. diff --git a/devtools/bom-descriptor-json/pom.xml b/devtools/bom-descriptor-json/pom.xml index 1eb19044a5757..ae87367dc470d 100644 --- a/devtools/bom-descriptor-json/pom.xml +++ b/devtools/bom-descriptor-json/pom.xml @@ -13,2390 +13,9 @@ pom Quarkus - BOM - Descriptor JSON - - - - - io.quarkus - quarkus-agroal - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-alexa - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-dynamodb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-iam - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-kms - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-lambda - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-lambda-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-lambda-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-lambda-rest - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-lambda-xray - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-s3 - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-ses - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-sns - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-amazon-sqs - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-arc - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-artemis-core - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-artemis-jms - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-avro - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-azure-functions-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-cache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-caffeine - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-config-yaml - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-consul-config - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-container-image - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-container-image-docker - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-container-image-jib - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-container-image-openshift - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-container-image-s2i - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-core - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-datasource - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elasticsearch-rest-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elasticsearch-rest-client-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elasticsearch-rest-high-level-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security-jdbc - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security-ldap - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security-oauth2 - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-elytron-security-properties-file - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-flyway - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-funqy-amazon-lambda - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-funqy-google-cloud-functions - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-funqy-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-funqy-knative-events - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-funqy-server-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-google-cloud-functions - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-google-cloud-functions-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-grpc - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-grpc-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-envers - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-orm - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-orm-panache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-orm-panache-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-orm-panache-kotlin - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-orm-rest-data-panache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-reactive - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-reactive-panache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-reactive-panache-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-search-orm-elasticsearch - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-hibernate-validator - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-infinispan-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jackson - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jacoco - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jaeger - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jaxb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jaxp - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jaxrs-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-db2 - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-derby - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-h2 - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-mariadb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-mssql - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-mysql - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jdbc-postgresql - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jgit - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jsch - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jsonb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-jsonp - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kafka-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kafka-streams - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-keycloak-admin-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-keycloak-authorization - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kotlin - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kubernetes - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kubernetes-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kubernetes-config - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-kubernetes-service-binding - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-liquibase - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-logging-gelf - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-logging-json - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-logging-sentry - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mailer - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-micrometer - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-micrometer-registry-prometheus - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-minikube - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mongodb-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mongodb-panache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mongodb-panache-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mongodb-panache-kotlin - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mongodb-rest-data-panache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mutiny - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-mutiny-reactive-streams-operators - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-narayana-jta - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-narayana-stm - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-neo4j - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-netty - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-oidc - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-oidc-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-oidc-client-filter - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-oidc-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-oidc-token-propagation - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-openshift - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-openshift-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-picocli - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-quartz - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-qute - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-reactive-datasource - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-reactive-db2-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-reactive-messaging-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-reactive-mysql-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-reactive-pg-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-redis-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-rest-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-rest-client-jackson - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-rest-client-jaxb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-rest-client-jsonb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-rest-client-mutiny - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-jackson - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-jaxb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-jsonb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-multipart - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-mutiny - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-mutiny-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-qute - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive-jackson - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive-jsonb - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive-qute - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-reactive-servlet - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-resteasy-server-common - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-scala - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-scheduler - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-security - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-security-jpa - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-context-propagation - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-fault-tolerance - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-graphql - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-health - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-jwt - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-jwt-build - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-metrics - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-openapi - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-opentracing - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-messaging - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-messaging-amqp - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-messaging-kafka - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-messaging-mqtt - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-streams-operators - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-smallrye-reactive-type-converters - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-boot-properties - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-cache - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-cloud-config-client - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-data-jpa - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-data-rest - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-di - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-scheduled - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-security - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-spring-web - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-swagger-ui - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-tika - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-undertow - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vault - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vertx - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vertx-core - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vertx-graphql - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vertx-http - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-vertx-web - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-webjars-locator - ${project.version} - pom - test - - - * - * - - - - - io.quarkus - quarkus-websockets - ${project.version} - pom - test - - - * - * - - - - - + + process-resources + @@ -2406,7 +25,7 @@ ${project.version} - process-resources + ${pluginPhase} generate-extensions-json @@ -2423,5 +42,2422 @@ + + + + + bom-descriptor-json-hollow + + + incremental + + + + none + true + + + + bom-descriptor-json-deps + + + !incremental + + + + + + + io.quarkus + quarkus-agroal + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-alexa + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-dynamodb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-iam + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-kms + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-lambda + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-lambda-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-lambda-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-lambda-rest + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-lambda-xray + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-s3 + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-ses + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-sns + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-amazon-sqs + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-arc + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-artemis-core + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-artemis-jms + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-avro + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-azure-functions-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-cache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-caffeine + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-config-yaml + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-consul-config + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-container-image + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-container-image-docker + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-container-image-jib + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-container-image-openshift + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-container-image-s2i + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-core + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-datasource + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elasticsearch-rest-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elasticsearch-rest-client-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elasticsearch-rest-high-level-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security-jdbc + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security-ldap + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security-oauth2 + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-elytron-security-properties-file + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-flyway + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-funqy-amazon-lambda + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-funqy-google-cloud-functions + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-funqy-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-funqy-knative-events + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-funqy-server-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-google-cloud-functions + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-google-cloud-functions-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-grpc + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-grpc-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-envers + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-orm + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-orm-panache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-orm-panache-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-orm-panache-kotlin + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-orm-rest-data-panache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-reactive + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-reactive-panache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-reactive-panache-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-search-orm-elasticsearch + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-hibernate-validator + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-infinispan-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jackson + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jacoco + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jaeger + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jaxb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jaxp + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jaxrs-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-db2 + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-derby + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-h2 + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-mariadb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-mssql + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-mysql + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jdbc-postgresql + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jgit + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jsch + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jsonb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-jsonp + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kafka-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kafka-streams + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-keycloak-admin-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-keycloak-authorization + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kotlin + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kubernetes + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kubernetes-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kubernetes-config + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-kubernetes-service-binding + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-liquibase + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-logging-gelf + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-logging-json + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-logging-sentry + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mailer + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-micrometer + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-micrometer-registry-prometheus + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-minikube + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mongodb-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mongodb-panache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mongodb-panache-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mongodb-panache-kotlin + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mongodb-rest-data-panache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mutiny + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-mutiny-reactive-streams-operators + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-narayana-jta + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-narayana-stm + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-neo4j + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-netty + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-oidc + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-oidc-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-oidc-client-filter + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-oidc-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-oidc-token-propagation + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-openshift + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-openshift-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-picocli + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-quartz + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-qute + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-reactive-datasource + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-reactive-db2-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-reactive-messaging-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-reactive-mysql-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-reactive-pg-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-redis-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-rest-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-rest-client-jackson + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-rest-client-jaxb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-rest-client-jsonb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-rest-client-mutiny + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-jackson + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-jaxb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-jsonb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-multipart + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-mutiny + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-mutiny-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-qute + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive-jackson + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive-jsonb + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive-qute + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-reactive-servlet + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-server-common + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-scala + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-scheduler + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-security + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-security-jpa + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-context-propagation + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-fault-tolerance + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-graphql + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-health + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-jwt + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-jwt-build + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-metrics + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-openapi + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-opentracing + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-messaging + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-messaging-amqp + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-messaging-kafka + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-messaging-mqtt + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-streams-operators + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-reactive-type-converters + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-boot-properties + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-cache + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-cloud-config-client + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-data-jpa + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-data-rest + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-di + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-scheduled + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-security + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-spring-web + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-swagger-ui + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-tika + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-undertow + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vault + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vertx + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vertx-core + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vertx-graphql + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vertx-http + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-vertx-web + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-webjars-locator + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-websockets + ${project.version} + pom + test + + + * + * + + + + + + + diff --git a/pom.xml b/pom.xml index 77818a9ccd5d1..499cd40c6779b 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ jdbc:postgresql:hibernate_orm_test 1.6.8 + 3.12.2 false false @@ -228,6 +229,43 @@ tcks + + incremental + + + incremental + + + + + master + + + + + com.vackosar.gitflowincrementalbuilder + gitflow-incremental-builder + ${gitflow-incremental-builder.version} + true + + + + \.github[/\\].*|\.mvn[/\\].*|mvnw.* + + true + skipITs invoker.skip no-format + + + + + diff --git a/update-extension-dependencies.sh b/update-extension-dependencies.sh index f5329c61f0d85..97e1c81701b55 100755 --- a/update-extension-dependencies.sh +++ b/update-extension-dependencies.sh @@ -10,19 +10,20 @@ echo 'Building bom-descriptor-json...' echo '' mvn -e clean package -f devtools/bom-descriptor-json -Denforcer.skip $* -DEP_TEMPLATE=' - io.quarkus - XXX - \${project.version} - pom - test - - - * - * - - - ' +# note: OFFSET is replaced later on with an individual amount of spaces +DEP_TEMPLATE='OFFSET +OFFSET io.quarkus +OFFSET XXX +OFFSET \${project.version} +OFFSET pom +OFFSET test +OFFSET +OFFSET +OFFSET * +OFFSET * +OFFSET +OFFSET +OFFSET' echo '' echo 'Building dependencies list from bom-descriptor-json...' @@ -52,15 +53,18 @@ DEPS_DEPLOYMENT=`echo "${ARTIFACT_IDS}" \ MARK_START='' MARK_END='' -SED_EXPR_DEPS_RUNTIME="/${MARK_START}/,/${MARK_END}/c\ ${MARK_START}\n${DEPS_RUNTIME}\n ${MARK_END}" -SED_EXPR_DEPS_DEPLOYMENT="/${MARK_START}/,/${MARK_END}/c\ ${MARK_START}\n${DEPS_DEPLOYMENT}\n ${MARK_END}" +SED_EXPR_DEPS_RUNTIME="/${MARK_START}/,/${MARK_END}/cOFFSET${MARK_START}\n${DEPS_RUNTIME}\nOFFSET${MARK_END}" +SED_EXPR_DEPS_DEPLOYMENT="/${MARK_START}/,/${MARK_END}/cOFFSET${MARK_START}\n${DEPS_DEPLOYMENT}\nOFFSET${MARK_END}" echo '' echo 'Updating devtools/bom-descriptor-json/pom.xml...' echo '' sed -i "${SED_EXPR_DEPS_RUNTIME}" devtools/bom-descriptor-json/pom.xml +# note: more indetation here since bom-descriptor-json has a profile for the deps +sed -i 's/OFFSET/ /' devtools/bom-descriptor-json/pom.xml echo '' echo 'Updating docs/pom.xml...' echo '' sed -i "${SED_EXPR_DEPS_DEPLOYMENT}" docs/pom.xml +sed -i 's/OFFSET/ /' docs/pom.xml