CI #2410
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# every day at 10pm CST (4 UTC) | |
- cron: '0 4 * * *' | |
env: | |
macosGradleArgs: '-Dorg.gradle.jvmargs=-Xmx10g -Dfile.encoding=UTF-8 -XX:+UseParallelGC' | |
ubuntuGradleArgs: '-Dorg.gradle.jvmargs=-Xmx5g -Dfile.encoding=UTF-8 -XX:+UseParallelGC' | |
windowsGradleArgs: '-Dorg.gradle.jvmargs=-Xmx3500m -Dfile.encoding=UTF-8 -XX:+UseParallelGC' | |
jobs: | |
cancel-other-jobs: | |
runs-on: ubuntu-latest | |
steps: | |
# cancel previous jobs | |
- name: Cancel Previous Runs | |
uses: styfle/[email protected] | |
env: | |
access_token: '${{ github.token }}' | |
detekt: | |
runs-on: ubuntu-latest | |
if: github.actor != 'renovate[bot]' | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: detekt | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: detekt | |
cache-read-only: false | |
dependency-guard: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: dependency-guard | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: dependencyGuard | |
cache-read-only: false | |
ktlint: | |
runs-on: ubuntu-latest | |
if: github.actor != 'renovate[bot]' | |
steps: | |
- name: check out with token (used by forks) | |
uses: actions/checkout@v3 | |
if: github.event.pull_request.head.repo.full_name != github.repository | |
- name: check out with PAT (used by main repo) | |
uses: actions/checkout@v3 | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
with: | |
ref: ${{ github.event.pull_request.head.ref }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: KtLint format (used by main repo) | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: ktlintformat | |
cache-read-only: false | |
# If KtLint generated changes, commit and push those changes. | |
- name: commit changes (used by main repo) | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: Apply KtLint format | |
commit_options: '--no-verify --signoff' | |
- name: KtLint check (used by forks) | |
if: github.event.pull_request.head.repo.full_name != github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: ktlintCheck | |
cache-read-only: false | |
versioning: | |
runs-on: ubuntu-latest | |
if: github.actor != 'renovate[bot]' | |
steps: | |
- name: check out with token (used by forks) | |
uses: actions/checkout@v3 | |
if: github.event.pull_request.head.repo.full_name != github.repository | |
- name: check out with PAT (used by main repo) | |
uses: actions/checkout@v3 | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
with: | |
ref: ${{ github.event.pull_request.head.ref }} | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: Check that the version is a -SNAPSHOT version | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: checkVersionIsSnapshot | |
cache-read-only: false | |
- name: Sync versions in website docs (used by main repo) | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: updateWebsiteNextDocsVersionRefs | |
cache-read-only: false | |
- name: Check versions in website docs (used by forks) | |
if: github.event.pull_request.head.repo.full_name != github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: checkWebsiteNextDocsVersionRefs | |
cache-read-only: false | |
- name: commit changes | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: update docs versions | |
commit_options: '--no-verify --signoff' | |
- name: Update version in website package.json (used by main repo) | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: updateWebsitePackageJsonVersion | |
cache-read-only: false | |
- name: Check version in website package.json (used by forks) | |
if: github.event.pull_request.head.repo.full_name != github.repository | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: checkWebsitePackageJsonVersion | |
cache-read-only: false | |
- name: commit changes (used by main repo) | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: update website versions | |
commit_options: '--no-verify --signoff' | |
website: | |
name: build website | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v3 | |
# Node is required for npm | |
- name: Set up Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
cache: yarn | |
cache-dependency-path: website/yarn.lock | |
- name: Install Yarn | |
working-directory: website | |
run: | | |
yarn install --frozen-lockfile | |
- uses: gradle/wrapper-validation-action@v1 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: build website | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: buildSite | |
cache-read-only: false | |
- name: knit check | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: knitcheck | |
cache-read-only: false | |
api-check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: api check | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: apicheck | |
cache-read-only: false | |
tests-ubuntu: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: all tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: | | |
testJvm | |
"${{ env.ubuntuGradleArgs }}" | |
cache-read-only: false | |
instrumented-tests-matrix: | |
name: Instrumented tests matrix | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
api-level: [ 24, 29 ] | |
timeout-minutes: 25 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
## Build before running tests, using cache. | |
- uses: gradle/gradle-build-action@v2 | |
name: Build instrumented tests | |
with: | |
arguments: assembleDebugAndroidTest | |
cache-read-only: false | |
- name: AVD cache | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ matrix.api-level }} | |
- name: create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: false | |
script: echo "Generated AVD snapshot for caching." | |
- name: Instrumented Tests | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
target: default | |
script: ./gradlew connectedCheck | |
- name: Upload results | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: instrumented-test-results | |
path: ./**/build/reports/androidTests/connected/** | |
instrumented-tests: | |
runs-on: ubuntu-latest | |
needs: instrumented-tests-matrix | |
if: always() | |
steps: | |
- name: require that the instrumented test matrix has passed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} | |
tests-windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
- name: all tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: | | |
testJvm | |
"${{ env.windowsGradleArgs }}" | |
cache-read-only: false |