diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 08209f832..4196b5449 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,4 +1,4 @@ -on: [pull_request] +on: [ pull_request ] name: Check pull request @@ -10,272 +10,11 @@ env: SENTRY_DSN: 'https://public_key@example.com/project_id' jobs: - check-codestyle: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Check codestyle - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: ktfmtCheck - gradle-home-cache-cleanup: true - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - unit-tests: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Run unit tests - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: test -PslimTests - gradle-home-cache-cleanup: true - - - name: (Fail-only) Upload test report - if: "${{ failure() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Test report - path: app/build/reports - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - build-apks: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Build debug APKs - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: assembleFreeDebug assembleNonFreeDebug - gradle-home-cache-cleanup: true - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - check-api: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Check library API - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: metalavaCheckCompatibilityRelease - gradle-home-cache-cleanup: true - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - lint-debug: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Run Lint on debug variants - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: lintDebug - gradle-home-cache-cleanup: true - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - assemble-release-apks: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - - name: Check if relevant files have changed - uses: actions/github-script@v6.3.3 - id: service-changed - with: - result-encoding: string - script: | - const script = require('.github/check-changed-files.js') - return await script({github, context}) - - - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: actions/setup-java@v3.6.0 - with: - distribution: temurin - java-version: 18 - - - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - - name: Assemble non-free release - if: "${{ steps.service-changed.outputs.result == 'true' }}" - uses: gradle/gradle-build-action@v2.3.3 - with: - arguments: aNFR - gradle-home-cache-cleanup: true - - - name: Upload Kotlin build report - if: "${{ always() }}" - uses: actions/upload-artifact@v3.1.1 - with: - name: Build report - path: build/reports/kotlin-build/ - - detekt: + check-changed-files: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - name: Check if relevant files have changed uses: actions/github-script@v6.3.3 @@ -286,19 +25,223 @@ jobs: const script = require('.github/check-changed-files.js') return await script({github, context}) + - name: Fail if no files changed + if: "${{ steps.service-changed.outputs.result != 'true' }}" + shell: bash + run: exit 1 + + check-codestyle: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Check codestyle + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: ktfmtCheck + gradle-home-cache-cleanup: true + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + unit-tests: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Run unit tests + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: test -PslimTests + gradle-home-cache-cleanup: true + + - name: (Fail-only) Upload test report + if: "${{ failure() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Test report + path: app/build/reports + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + build-apks: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Build debug APKs + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: assembleFreeDebug assembleNonFreeDebug + gradle-home-cache-cleanup: true + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + check-api: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Check library API + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: metalavaCheckCompatibilityRelease + gradle-home-cache-cleanup: true + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + lint-debug: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Run Lint on debug variants + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: lintDebug + gradle-home-cache-cleanup: true + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + assemble-release-apks: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + + - name: Set up JDK + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 18 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Assemble non-free release + uses: gradle/gradle-build-action@v2.3.3 + with: + arguments: aNFR + gradle-home-cache-cleanup: true + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.1 + with: + name: Build report + path: build/reports/kotlin-build/ + + detekt: + needs: [ "check-changed-files" ] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.0 + with: + fetch-depth: 0 + - name: Set up JDK - if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: actions/setup-java@v3.6.0 with: distribution: temurin java-version: 18 - name: Copy CI gradle.properties - if: "${{ steps.service-changed.outputs.result == 'true' }}" run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Run detekt - if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.3.3 with: arguments: detekt