summaryrefslogtreecommitdiff
path: root/.github/workflows/PullRequestWorkflow.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/PullRequestWorkflow.yaml')
-rw-r--r--.github/workflows/PullRequestWorkflow.yaml108
1 files changed, 108 insertions, 0 deletions
diff --git a/.github/workflows/PullRequestWorkflow.yaml b/.github/workflows/PullRequestWorkflow.yaml
new file mode 100644
index 0000000..ea32c21
--- /dev/null
+++ b/.github/workflows/PullRequestWorkflow.yaml
@@ -0,0 +1,108 @@
+name: Presubmit
+
+on: [pull_request]
+
+concurrency:
+ group: build-${{ github.ref }}
+ cancel-in-progress: true
+
+env:
+ JDK_VERSION: 17
+ DISTRIBUTION: 'zulu'
+
+jobs:
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ timeout-minutes: 120
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Validate Gradle Wrapper
+ uses: gradle/wrapper-validation-action@v1
+
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: ${{ env.DISTRIBUTION }}
+ java-version: ${{ env.JDK_VERSION }}
+ cache: gradle
+
+ - name: Setup Gradle
+ uses: gradle/gradle-build-action@v2
+
+ - name: Build all build type and flavor permutations
+ run: ./gradlew assemble --parallel --build-cache
+
+ - name: Upload build outputs (APKs)
+ uses: actions/upload-artifact@v3
+ with:
+ name: build-outputs
+ path: app/build/outputs
+
+ - name: Upload build reports
+ if: always()
+ continue-on-error: true
+ uses: actions/upload-artifact@v3
+ with:
+ name: build-reports
+ path: "*/build/reports"
+
+ test:
+ name: Unit Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 120
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Validate Gradle Wrapper
+ uses: gradle/wrapper-validation-action@v1
+
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: ${{ env.DISTRIBUTION }}
+ java-version: ${{ env.JDK_VERSION }}
+ cache: gradle
+
+ - name: Setup Gradle
+ uses: gradle/gradle-build-action@v2
+ continue-on-error: true
+
+ - name: Run local tests
+ run: ./gradlew test --parallel --build-cache
+
+ - name: Upload test reports on failure
+ if: failure()
+ uses: actions/upload-artifact@v3
+ with:
+ name: test-reports
+ path: "*/build/reports/tests"
+
+ spotless:
+ name: Spotless Check
+ runs-on: ubuntu-latest
+ timeout-minutes: 60
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Validate Gradle Wrapper
+ uses: gradle/wrapper-validation-action@v1
+
+ - name: Set up JDK
+ uses: actions/setup-java@v3.9.0
+ with:
+ distribution: ${{ env.DISTRIBUTION }}
+ java-version: ${{ env.JDK_VERSION }}
+ cache: gradle
+
+ - name: Setup Gradle
+ uses: gradle/gradle-build-action@v2
+
+ - name: Spotless Check
+ run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --parallel --build-cache