diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a8280a784..e5ed3182f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,22 +11,27 @@ permissions: jobs: build: name: Build, Test, and Analyze + strategy: + matrix: + java: ['21' ] + fail-fast: false + max-parallel: 4 runs-on: ubuntu-latest steps: - uses: actions/checkout@v5.0.0 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 17 + - name: Set up JDK ${{ matrix.Java }} uses: actions/setup-java@v5.0.0 with: - java-version: 17 + java-version: ${{ matrix.Java }} distribution: 'temurin' - name: Cache SonarCloud packages uses: actions/cache@v4.2.3 with: path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar + key: ${{ runner.os }}-sonar-${{ matrix.Java }} + restore-keys: ${{ runner.os }}-sonar-${{ matrix.Java }} - name: Setup Gradle uses: gradle/gradle-build-action@v3.5.0 with: @@ -42,22 +47,24 @@ jobs: - name: Upload WAR files uses: actions/upload-artifact@v5.0.0 with: - name: warfile + name: warfile-${{ matrix.Java }} path: ./**/build/libs/*.war retention-days: 1 if-no-files-found: error - name: Upload Test Reports uses: actions/upload-artifact@v5.0.0 with: - name: test-report + name: test-report-${{ matrix.Java }} path: ./**/build/reports/tests/** if-no-files-found: error - name: Upload Coverage Reports uses: actions/upload-artifact@v5.0.0 with: - name: coverage-report + name: coverage-report-${{ matrix.Java }} path: ./**/build/reports/jacoco/ if-no-files-found: error + - run: echo "jdk=${{ matrix.Java }}" >> $GITHUB_OUTPUT + container-build: name: Build Container Image runs-on: ubuntu-latest diff --git a/.github/workflows/java_compatibility.yml b/.github/workflows/java_compatibility.yml index ae236f891..23d3424b7 100644 --- a/.github/workflows/java_compatibility.yml +++ b/.github/workflows/java_compatibility.yml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - java: [ '8', '11', '17', '21' ] + java: [ '21', '25' ] fail-fast: false max-parallel: 4 name: Build on Java ${{ matrix.Java }} diff --git a/.github/workflows/owasp_zap.yml b/.github/workflows/owasp_zap.yml index d1c6f560e..9440312e1 100644 --- a/.github/workflows/owasp_zap.yml +++ b/.github/workflows/owasp_zap.yml @@ -13,10 +13,10 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@v5.0.0 - - name: Set up JDK 8 + - name: Set up JDK 21 uses: actions/setup-java@v5.0.0 with: - java-version: 8 + java-version: 21 distribution: 'temurin' - name: Cache Gradle packages uses: actions/cache@v4.2.3 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0af256865..a55e2a532 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,10 +9,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5.0.0 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v5.0.0 with: - java-version: 17 + java-version: 21 distribution: 'temurin' - name: Setup Gradle uses: gradle/gradle-build-action@v3.5.0 diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 897686914..c5a504ea7 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -2,17 +2,17 @@ name: SonarCloud Scan on: workflow_run: workflows: ["Build and Test"] - type: [completed] + types: [completed] jobs: Sonar: runs-on: ubuntu-latest if: github.event.workflow_run && github.event.workflow_run.conclusion == 'success' steps: - - name: Set up JDK + - name: Set up JDK ${{ github.event.workflow_run.outputs.jdk }} uses: actions/setup-java@v5.0.0 with: - java-version: 17 + java-version: ${{ github.event.workflow_run.outputs.jdk }} distribution: temurin - name: Setup Gradle uses: gradle/actions/setup-gradle@v5.0.0 @@ -26,8 +26,8 @@ jobs: uses: actions/cache@v4 with: path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar + key: ${{ runner.os }}-sonar-${{ github.event.workflow_run.outputs.jdk }} + restore-keys: ${{ runner.os }}-sonar-${{ github.event.workflow_run.outputs.jdk }} - name: Cache Gradle packages uses: actions/cache@v4 with: @@ -50,6 +50,7 @@ jobs: run: | ./gradlew sonar --info -Dorg.gradle.jvmargs=-Xmx4096M \ -Dsonar.scm.revision=${{ github.event.workflow_run.head_sha }} \ + -Dsonar.analysis.jdk=${{ github.event.workflow_run.outputs.jdk }} \ -Dsonar.pullrequest.key=${{ github.event.workflow_run.pull_requests[0].number }} \ -Dsonar.pullrequest.branch=${{ github.event.workflow_run.pull_requests[0].head.ref }} \ -Dsonar.pullrequest.base=${{ github.event.workflow_run.pull_requests[0].base.ref }} diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index 4d37bcf2a..b037cfdd9 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -16,10 +16,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5.0.0 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v5.0.0 with: - java-version: 17 + java-version: 21 distribution: 'temurin' - name: Setup Gradle uses: gradle/gradle-build-action@v3.5.0 diff --git a/Dockerfile b/Dockerfile index abae688b6..905e1065a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM gradle:8.14-jdk11 AS builder +FROM gradle:8.14-jdk21 AS builder RUN --mount=type=cache,target=/home/gradle/.gradle WORKDIR /builddir @@ -9,7 +9,7 @@ RUN gradle build --info --no-daemon FROM alpine:3.21.3 AS tomcat_base RUN apk --no-cache upgrade && \ apk --no-cache add \ - openjdk11-jre \ + openjdk21-jre \ curl \ bash diff --git a/buildSrc/src/main/groovy/opendcs-rest-api.java-conventions.gradle b/buildSrc/src/main/groovy/opendcs-rest-api.java-conventions.gradle index f0979c1ad..fa12d3c36 100644 --- a/buildSrc/src/main/groovy/opendcs-rest-api.java-conventions.gradle +++ b/buildSrc/src/main/groovy/opendcs-rest-api.java-conventions.gradle @@ -9,8 +9,8 @@ java { } compileJava { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } dependencies { @@ -25,7 +25,7 @@ test { } jacoco { - toolVersion = "0.8.9" + toolVersion = "0.8.14" } jacocoTestReport { diff --git a/opendcs-integration-test/build.gradle b/opendcs-integration-test/build.gradle index 613685f52..c21473eef 100644 --- a/opendcs-integration-test/build.gradle +++ b/opendcs-integration-test/build.gradle @@ -76,6 +76,7 @@ tasks.register('run', JavaExec) { dependsOn build def restWar = project(':opendcs-rest-api').tasks.named('war').get().archiveFile.get().asFile.getAbsolutePath() def guiWar = project(':opendcs-web-client').tasks.named('war').get().archiveFile.get().asFile.getAbsolutePath() + inputs.files(restWar,guiWar) group "application" dependsOn(':opendcs-rest-api:war', ':opendcs-web-client:war') dependsOn generateConfig