diff options
Diffstat (limited to '.github/workflows/PullRequestWorkflow.yaml')
-rw-r--r-- | .github/workflows/PullRequestWorkflow.yaml | 108 |
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 |