CI #26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - develop | |
| pull_request: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 5 * * 1" | |
| jobs: | |
| build-test: | |
| name: Build and Test (JDK ${{ matrix.java-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| java-version: [21] | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| - name: Set up Temurin JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: ${{ matrix.java-version }} | |
| cache: maven | |
| - name: Make Maven Wrapper executable | |
| run: chmod +x mvnw | |
| - name: Build and run tests | |
| run: ./mvnw -B -ntp clean verify | |
| - name: Upload unit test reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: surefire-reports-jdk-${{ matrix.java-version }} | |
| path: | | |
| target/surefire-reports/** | |
| target/failsafe-reports/** | |
| coverage: | |
| name: Code Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| - name: Set up Temurin JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: maven | |
| - name: Make Maven Wrapper executable | |
| run: chmod +x mvnw | |
| - name: Generate JaCoCo report | |
| run: ./mvnw -B -ntp clean verify | |
| - name: Upload coverage artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: jacoco-report | |
| path: | | |
| target/site/jacoco/** | |
| target/jacoco.exec | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| files: ./target/site/jacoco/jacoco.xml | |
| fail_ci_if_error: false | |
| static-analysis: | |
| name: Static Analysis | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| - name: Set up Temurin JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: maven | |
| - name: Make Maven Wrapper executable | |
| run: chmod +x mvnw | |
| - name: Run formatter and static analysis | |
| run: ./mvnw -B -ntp -Pquality license:check spotless:check checkstyle:check spotbugs:check | |
| - name: Upload static-analysis reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: static-analysis-reports | |
| path: | | |
| target/checkstyle-result.xml | |
| target/spotbugsXml.xml | |
| dependency-scan: | |
| name: Dependency Vulnerability Scan | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| env: | |
| NVD_API_KEY: ${{ secrets.NVD_API_KEY }} | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| - name: Set up Temurin JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| cache: maven | |
| - name: Make Maven Wrapper executable | |
| run: chmod +x mvnw | |
| - name: Skip scan when NVD API key is not configured | |
| if: ${{ env.NVD_API_KEY == '' }} | |
| run: echo "::notice::Skipping OWASP Dependency-Check because NVD_API_KEY is not configured." | |
| - name: Run OWASP Dependency-Check | |
| if: ${{ env.NVD_API_KEY != '' }} | |
| shell: bash | |
| run: | | |
| ./mvnw -B -ntp org.owasp:dependency-check-maven:check \ | |
| -Dformats=HTML,XML \ | |
| -DprettyPrint=true \ | |
| -DnvdApiKey="${NVD_API_KEY}" | |
| - name: Upload dependency-check reports | |
| if: ${{ always() && env.NVD_API_KEY != '' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dependency-check-report | |
| path: target/dependency-check-report.* |