From 0c45bffaba1192ea8a10173e709f439dbf32b089 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 23 May 2020 16:34:10 +0530 Subject: [PATCH] github: Switch to dynamic filtering (#786) Also update cache layout for snapshot deployment workflows --- .github/workflows/deploy_snapshot.yml | 28 +++++++++++++++++--- .github/workflows/pull_request.yml | 38 +++++++++++++++++++-------- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml index d67d3f38..4ec15a2a 100644 --- a/.github/workflows/deploy_snapshot.yml +++ b/.github/workflows/deploy_snapshot.yml @@ -20,10 +20,32 @@ jobs: - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - uses: actions/cache@v1 + - name: Generate cache key + run: ./.github/checksum.sh checksum.txt + + - name: Cache gradle modules + uses: actions/cache@v1 with: - path: ~/.gradle/caches - key: gradle-${{ runner.os }}-${{ hashFiles('**/build.gradle') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/dependencies.gradle') }} + path: ~/.gradle/caches/modules-2 + key: ${{ runner.os }}-gradlemodules-${{ hashFiles('checksum.txt') }} + restore-keys: | + ${{ runner.os }}-gradlemodules- + + - name: Cache gradle jars + uses: actions/cache@v1 + with: + path: ~/.gradle/caches/jars-3 + key: ${{ runner.os }}-gradlejars-${{ hashFiles('checksum.txt') }} + restore-keys: | + ${{ runner.os }}-gradlejars- + + - name: Cache gradle build + uses: actions/cache@v1 + with: + path: ~/.gradle/caches/build-cache-1 + key: ${{ runner.os }}-gradlebuildcache-${{ hashFiles('checksum.txt') }} + restore-keys: | + ${{ runner.os }}-gradlebuildcache- - name: Download gradle dependencies run: ./gradlew dependencies diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 7d80d3a5..885d71f8 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,13 +1,4 @@ -on: - pull_request: - paths: - - '.github/**' - - 'app/**' - - 'gradle/**' - - '*.properties' - - '*.gradle' - - 'gradlew' - - 'gradlew.bat' +on: [pull_request] name: Check pull request jobs: @@ -19,15 +10,36 @@ jobs: variant: [Debug, Release] steps: - - uses: actions/checkout@master + - name: Check if relevant files have changed + uses: actions/github-script@0.9.0 + id: service-changed + with: + result-encoding: string + script: | + const result = await github.pulls.listFiles({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + pull_number: context.payload.number, + per_page: 100 + }) + const serviceChanged = result.data.filter(f => f.filename.startsWith("app/") || f.filename.endsWith("gradle") || f.filename.startsWith(".github") || f.filename.startsWith("gradle") || f.filename.endsWith("properties")).length > 0 + console.log(serviceChanged) + return serviceChanged + + - name: Checkout repository + if: ${{ steps.service-changed.outputs.result == 'true' }} + uses: actions/checkout@v1 - 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: Generate cache key + if: ${{ steps.service-changed.outputs.result == 'true' }} run: ./.github/checksum.sh checksum.txt - name: Cache gradle modules + if: ${{ steps.service-changed.outputs.result == 'true' }} uses: actions/cache@v1 with: path: ~/.gradle/caches/modules-2 @@ -36,6 +48,7 @@ jobs: ${{ runner.os }}-gradlemodules- - name: Cache gradle jars + if: ${{ steps.service-changed.outputs.result == 'true' }} uses: actions/cache@v1 with: path: ~/.gradle/caches/jars-3 @@ -44,6 +57,7 @@ jobs: ${{ runner.os }}-gradlejars- - name: Cache gradle build + if: ${{ steps.service-changed.outputs.result == 'true' }} uses: actions/cache@v1 with: path: ~/.gradle/caches/build-cache-1 @@ -52,9 +66,11 @@ jobs: ${{ runner.os }}-gradlebuildcache- - name: Run unit tests + if: ${{ steps.service-changed.outputs.result == 'true' }} run: ./gradlew test${{ matrix.variant }} lint${{ matrix.variant}} -Dpre-dex=false - name: Run instrumentation tests + if: ${{ steps.service-changed.outputs.result == 'true' }} uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }}