on: pull_request: branches: - "develop" permissions: contents: read checks: write id-token: write pull-requests: write jobs: setup: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Gradle Wrapper Cache uses: actions/cache@v3.3.2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - name: Dependencies Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/cache/jars-* ~/.gradle/caches/transforms-* ~/.gradle/caches/modules-* key: gradle-dependencies-${{ hashFiles('**/*.gradle.kts') }} restore-keys: gradle-dependencies- - name: Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/caches/build-cache-* ~/.gradle/caches/[0-9]*.* .gradle key: ${{ runner.os }}-gradle-build-${{ github.workflow }}-${{ github.sha }} restore-keys: ${{ runner.os }}-gradle-build-${{ github.workflow }}- - name: Build Cache uses: actions/cache@v3.3.2 with: path: | build key: gradle-build-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('src') }}-${{ github.sha }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Build uses: gradle/gradle-build-action@v2.8.1 with: arguments: testClasses unit-test: needs: [ setup ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Gradle Wrapper Cache uses: actions/cache@v3.3.2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - name: Dependencies Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/cache/jars-* ~/.gradle/caches/transforms-* ~/.gradle/caches/modules-* key: gradle-dependencies-${{ hashFiles('**/*.gradle.kts') }} restore-keys: gradle-dependencies- - name: Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/caches/build-cache-* ~/.gradle/caches/[0-9]*.* .gradle key: ${{ runner.os }}-gradle-build-${{ github.workflow }}-${{ github.sha }} restore-keys: ${{ runner.os }}-gradle-build-${{ github.workflow }}- - name: Build Cache uses: actions/cache@v3.3.2 with: path: | build key: gradle-build-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('src') }}-${{ github.sha }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Unit Test uses: gradle/gradle-build-action@v2.8.1 with: arguments: test - name: Save Test Report uses: actions/cache/save@v3 with: path: build/test-results key: unit-test-report-${{ github.sha }} integration-test: needs: [ setup ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Gradle Wrapper Cache uses: actions/cache@v3.3.2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - name: Dependencies Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/cache/jars-* ~/.gradle/caches/transforms-* ~/.gradle/caches/modules-* key: gradle-dependencies-${{ hashFiles('**/*.gradle.kts') }} restore-keys: gradle-dependencies- - name: Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/caches/build-cache-* ~/.gradle/caches/[0-9]*.* .gradle key: ${{ runner.os }}-gradle-build-${{ github.workflow }}-${{ github.sha }} restore-keys: ${{ runner.os }}-gradle-build-${{ github.workflow }}- - name: Build Cache uses: actions/cache@v3.3.2 with: path: | build key: gradle-build-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('src') }}-${{ github.sha }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: MongoDB in GitHub Actions uses: supercharge/mongodb-github-action@1.10.0 with: mongodb-version: latest - name: Unit Test uses: gradle/gradle-build-action@v2.8.1 with: arguments: integrationTest - name: Save Test Report uses: actions/cache/save@v3 with: path: build/test-results key: integration-test-report-${{ github.sha }} coverage: needs: [ setup ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Gradle Wrapper Cache uses: actions/cache@v3.3.2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - name: Dependencies Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/cache/jars-* ~/.gradle/caches/transforms-* ~/.gradle/caches/modules-* key: gradle-dependencies-${{ hashFiles('**/*.gradle.kts') }} restore-keys: gradle-dependencies- - name: Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/caches/build-cache-* ~/.gradle/caches/[0-9]*.* .gradle key: ${{ runner.os }}-gradle-build-${{ github.workflow }}-${{ github.sha }} restore-keys: ${{ runner.os }}-gradle-build-${{ github.workflow }}- - name: Build Cache uses: actions/cache@v3.3.2 with: path: | build key: gradle-build-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('src') }}-${{ github.sha }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Run Kover uses: gradle/gradle-build-action@v2.8.1 with: arguments: koverXmlReport -x integrationTest - name: Add coverage report to PR if: always() id: kover uses: mi-kas/kover-report@v1 with: path: | ${{ github.workspace }}/build/reports/kover/report.xml token: ${{ secrets.GITHUB_TOKEN }} title: Code Coverage update-comment: true min-coverage-overall: 80 min-coverage-changed-files: 80 coverage-counter-type: LINE report-tests: if: success() || failure() needs: [ unit-test,integration-test ] runs-on: ubuntu-latest steps: - name: Restore Test Report uses: actions/cache/restore@v3 with: path: build/test-results key: unit-test-report-${{ github.sha }} - name: Restore Test Report uses: actions/cache/restore@v3 with: path: build/test-results key: integration-test-report-${{ github.sha }} - name: JUnit Test Report uses: mikepenz/action-junit-report@v2 with: report_paths: '**/TEST-*.xml' lint: needs: [ setup ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Gradle Wrapper Cache uses: actions/cache@v3.3.2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - name: Dependencies Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/cache/jars-* ~/.gradle/caches/transforms-* ~/.gradle/caches/modules-* key: gradle-dependencies-${{ hashFiles('**/*.gradle.kts') }} restore-keys: gradle-dependencies- - name: Cache uses: actions/cache@v3.3.2 with: path: | ~/.gradle/caches/build-cache-* ~/.gradle/caches/[0-9]*.* .gradle key: ${{ runner.os }}-gradle-build-${{ github.workflow }}-${{ github.sha }} restore-keys: ${{ runner.os }}-gradle-build-${{ github.workflow }}- - name: Build Cache uses: actions/cache@v3.3.2 with: path: | build key: gradle-build-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('src') }}-${{ github.sha }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Build with Gradle uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 with: arguments: detektMain - name: "reviewdog-suggester: Suggest any code changes based on diff with reviewdog" if: ${{ always() }} uses: reviewdog/action-suggester@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }}