| name: AndroidX Presubmits |
| on: |
| push: |
| pull_request_target: |
| types: [opened, synchronize, reopened, 'labeled'] |
| workflow_dispatch: |
| |
| jobs: |
| setup: |
| runs-on: ubuntu-latest |
| steps: |
| - name: "Start webhook" |
| uses: androidx/github-workflow-webhook-action@main |
| with: |
| url: 'https://androidx.dev/github/androidX/presubmit/hook' |
| secret: ${{ secrets.ANDROIDX_PRESUBMIT_HOOK_SECRET }} |
| payload: '{ "platform": "all", "token": "${{ secrets.GITHUB_TOKEN }}", "state": "started"}' |
| |
| lint: |
| runs-on: ubuntu-latest |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| steps: |
| - name: Pull request format |
| uses: 'androidx/check-pr-format-action@main' |
| with: |
| # Enforces a `Test: <stanza>` in the pull request |
| checks: '["(.*)?Test:(.*)?"]' |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-activity: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [macos-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "activity" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| - name: "Upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-fragment: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "fragment" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| - name: "Upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-navigation: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "navigation" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| - name: "Upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-paging: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "paging" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| - name: "Upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-room: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "room" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| |
| - name: "upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| build-work: |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-latest] |
| runs-on: ${{ matrix.os }} |
| needs: [setup, lint] |
| outputs: |
| status: ${{ steps.output-status.outputs.status }} |
| env: |
| group-id: "work" |
| steps: |
| - name: "Checkout androidx repo" |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 1 |
| |
| - name: "Setup JDK 11" |
| id: setup-java |
| uses: actions/setup-java@v1 |
| with: |
| java-version: "11" |
| |
| - name: "Set environment variables" |
| shell: bash |
| run: | |
| set -x |
| echo "ANDROID_SDK_ROOT=$HOME/Library/Android/sdk" >> $GITHUB_ENV |
| echo "DIST_DIR=$HOME/dist" >> $GITHUB_ENV |
| |
| - name: "./gradlew buildOnServer" |
| uses: eskatos/gradle-command-action@v1 |
| env: |
| JAVA_HOME: ${{ steps.setup-java.outputs.path }} |
| with: |
| arguments: buildOnServer |
| build-root-directory: ${{ env.group-id }} |
| gradle-executable: ${{ env.group-id }}/gradlew |
| wrapper-directory: ${{ env.group-id }}/gradle/wrapper |
| |
| - name: "Upload build artifacts" |
| continue-on-error: true |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: artifacts_${{ env.group-id }} |
| path: ~/dist |
| |
| - name: "Report job status" |
| id: output-status |
| if: always() |
| run: echo ::set-output name=status::${{ job.status }} |
| |
| teardown: |
| runs-on: ubuntu-latest |
| needs: [ |
| setup, |
| lint, |
| build-activity, |
| build-fragment, |
| build-navigation, |
| build-paging, |
| build-room, |
| build-work |
| ] |
| if: always() |
| steps: |
| - name: Parse workflow status |
| id: workflow-status |
| run: | |
| set -x |
| if [ "${{ needs.lint.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-activity.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-fragment.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-navigation.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-paging.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-room.outputs.status }}" == "success" ] && \ |
| [ "${{ needs.build-work.outputs.status }}" == "success" ] |
| then |
| echo "::set-output name=result::success" |
| else |
| echo "::set-output name=result::failure" |
| fi |
| |
| - name: Successful WebHook |
| if: steps.workflow-status.outputs.result == 'success' |
| uses: androidx/github-workflow-webhook-action@main |
| with: |
| url: 'https://androidx.dev/github/androidX/presubmit/hook' |
| secret: ${{ secrets.ANDROIDX_PRESUBMIT_HOOK_SECRET }} |
| payload: '{ "platform": "all", "token": "${{ secrets.GITHUB_TOKEN }}", "state": "completed", "success": true }' |
| |
| - name: Failure WebHook |
| if: steps.workflow-status.outputs.result == 'failure' |
| uses: androidx/github-workflow-webhook-action@main |
| with: |
| url: 'https://androidx.dev/github/androidX/presubmit/hook' |
| secret: ${{ secrets.ANDROIDX_PRESUBMIT_HOOK_SECRET }} |
| payload: '{ "platform": "all", "token": "${{ secrets.GITHUB_TOKEN }}", "state": "completed", "success": false }' |
| |