Skip to content

CI

CI #2260

Workflow file for this run

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/cancel-workflow-action@0.10.0
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