summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-10-29 08:26:46 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2022-10-29 08:32:58 +0530
commit0208483fd4d9a72abf24724c0a2b0b3e9359fc65 (patch)
treebc960b4e3df2528ffff9bac007966b923ceee5d4
parent56fd18b17df26ea28f28b9546bdf661ae10f8512 (diff)
refactor(github): rework CI avoidance logic
-rw-r--r--.github/workflows/pull_request.yml433
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