blob: c1dee53d8ab713661120cffa00cff5482109ea83 [file] [log] [blame]
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-biometric:
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: "biometric"
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 }'