name: pull-request-merge-check.yml on: pull_request: branches: - "develop" types: - opened - reopened - synchronize - ready_for_review concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read checks: write id-token: write pull-requests: write jobs: change: if: github.event.pull_request.draft == false runs-on: ubuntu-latest outputs: core: ${{ steps.filter.outputs.core }} mastodon: ${{ steps.filter.outputs.mastodon }} activitypub: ${{ steps.filter.outputs.ap }} owl: ${{ steps.filter.outputs.owl }} steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Check Changes uses: dorny/paths-filter@v2 id: filter with: filters: | core: - 'hideout-core/**' - 'libs.versions.toml' ap: - 'hideout-activitypub/**' - 'libs.versions.toml' mastodon: - 'hideout-mastodon/**' - 'libs.versions.toml' owl: - 'owl/**' - 'libs.versions.toml' hideout-core-setup: needs: - change if: github.event.pull_request.draft == false && needs.change.outputs.core == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Gradle Wrapper Validation uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Build run: ./gradlew :hideout-core:classes --no-daemon hideout-mastodon-setup: needs: - change if: github.event.pull_request.draft == false && needs.change.outputs.mastodon == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Gradle Wrapper Validation uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Build run: ./gradlew :hideout-mastodon:classes --no-daemon hideout-activitypub-setup: needs: - change if: github.event.pull_request.draft == false && needs.change.outputs.activitypub == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Gradle Wrapper Validation uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Build run: ./gradlew :hideout-activitypub:classes --no-daemon owl-setup: needs: - change if: github.event.pull_request.draft == false && needs.change.outputs.owl == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Gradle Wrapper Validation uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Build working-directory: owl run: ./gradlew :classes --no-daemon hideout-core-unit-test: needs: - hideout-core-setup - change if: github.event.pull_request.draft == false && needs.change.outputs.core == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Unit Test run: ./hideout-core/gradlew :hideout-core:koverXmlReport - name: JUnit Test Report uses: mikepenz/action-junit-report@v4 with: report_paths: '**/TEST-*.xml' check_name: 'hideout-core JUnit Test Report' - name: Upload Coverage Report uses: actions/upload-artifact@v4 with: name: 'hideout-core.xml' path: 'hideout-core/build/reports/kover/hideout-core.xml' hideout-mastodon-unit-test: needs: - hideout-mastodon-setup - change if: github.event.pull_request.draft == false && needs.change.outputs.mastodon == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Unit Test run: ./hideout-mastodon/gradlew :hideout-mastodon:koverXmlReport - name: JUnit Test Report uses: mikepenz/action-junit-report@v4 with: report_paths: '**/TEST-*.xml' check_name: 'hideout-mastodon JUnit Test Report' - name: Upload Coverage Report uses: actions/upload-artifact@v4 with: name: 'hideout-mastodon.xml' path: 'hideout-mastodon/build/reports/kover/hideout-mastodon.xml' hideout-activitypub-unit-test: needs: - hideout-activitypub-setup - change if: github.event.pull_request.draft == false && needs.change.outputs.activitypub == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Unit Test run: ./hideout-activitypub/gradlew :hideout-activitypub:koverXmlReport - name: JUnit Test Report uses: mikepenz/action-junit-report@v4 with: report_paths: '**/TEST-*.xml' check_name: 'hideout-activitypub JUnit Test Report' - name: Upload Coverage Report uses: actions/upload-artifact@v4 with: name: 'hideout-activitypub.xml' path: 'hideout-activitypub/build/reports/kover/hideout-activitypub.xml' owl-unit-test: needs: - owl-setup - change if: github.event.pull_request.draft == false && needs.change.outputs.owl == 'true' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.PAT }} - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Unit Test working-directory: owl run: ./gradlew :koverXmlReport --rerun-tasks - name: JUnit Test Report uses: mikepenz/action-junit-report@v4 with: report_paths: '**/TEST-*.xml' check_name: 'owl JUnit Test Report' - name: Upload Coverage Report uses: actions/upload-artifact@v4 with: name: 'owl.xml' path: 'owl/build/reports/kover/owl.xml' coverage: if: always() && (needs.change.outputs.core == 'true' || needs.change.outputs.activitypub == 'true' || needs.change.outputs.mastodon == 'true' || needs.change.outputs.owl == 'true') needs: - change - hideout-core-unit-test - hideout-mastodon-unit-test - hideout-activitypub-unit-test - owl-unit-test runs-on: ubuntu-latest steps: - name: Download Coverage Report uses: actions/download-artifact@v4 with: path: 'hideout-core/build/reports/kover' - name: Report Coverage uses: madrapps/jacoco-report@v1.7.0 with: paths: | ${{ github.workspace }}/hideout-core/build/reports/kover/hideout-core.xml/hideout-core.xml, ${{ github.workspace }}/hideout-core/build/reports/kover/hideout-mastodon.xml/hideout-mastodon.xml, ${{ github.workspace }}/hideout-core/build/reports/kover/hideout-activitypub.xml/hideout-activitypub.xml ${{ github.workspace }}/hideout-core/build/reports/kover/owl.xml/owl.xml token: ${{ secrets.GITHUB_TOKEN }} title: Code Coverage update-comment: true min-coverage-overall: 50 min-coverage-changed-files: 80 lint: if: always() && (needs.change.outputs.core == 'true' || needs.change.outputs.activitypub == 'true' || needs.change.outputs.mastodon == 'true' || needs.change.outputs.owl == 'true') needs: - change - hideout-core-setup - hideout-mastodon-setup - hideout-activitypub-setup - owl-setup runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} token: ${{ secrets.PAT }} - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: cache-read-only: false gradle-home-cache-cleanup: true - name: Lint run: ./gradlew :hideout-core:detektMain :hideout-mastodon:detektMain :hideout-activitypub:detektMain - name: owl Lint if: always() working-directory: owl run: ./gradlew :detektMain - name: Auto Commit if: ${{ always() }} uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "style: fix lint (CI)"