diff options
author | Harsh Shandilya <me@msfjarvis.dev> | 2022-10-29 08:26:46 +0530 |
---|---|---|
committer | Harsh Shandilya <me@msfjarvis.dev> | 2022-10-29 08:32:58 +0530 |
commit | 0208483fd4d9a72abf24724c0a2b0b3e9359fc65 (patch) | |
tree | bc960b4e3df2528ffff9bac007966b923ceee5d4 /.github/workflows | |
parent | 56fd18b17df26ea28f28b9546bdf661ae10f8512 (diff) |
refactor(github): rework CI avoidance logic
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/pull_request.yml | 433 |
1 files changed, 188 insertions, 245 deletions
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 08209f83..4196b544 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,266 +10,221 @@ env: SENTRY_DSN: 'https://public_key@example.com/project_id' jobs: + check-changed-files: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3.1.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: 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: 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/ + - 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: 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: 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/ + - 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: 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/ + - 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: 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/ + - 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: 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/ + - 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: 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/ + - 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 @@ -277,28 +232,16 @@ jobs: 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 detekt - if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.3.3 with: arguments: detekt |