Skip to content

Prepare next development version. #2839

Prepare next development version.

Prepare next development version. #2839

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags-ignore:
- '**'
pull_request:
jobs:
binary-compatibility-check:
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
kotlin-version: [ 1.9.24 ]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: API check
run: ./gradlew apiCheck --no-daemon --stacktrace
test-ubuntu:
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
kotlin-version: [ 1.9.24 ]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Test on Ubuntu
run: ./gradlew assemble test --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=${{ matrix.kotlin-version }}
- name: Upload Test Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
name: test-results-${{ matrix.kotlin-version }}
path: ./**/build/reports/tests/
test-windows:
runs-on: windows-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
# On Windows the command looks a little bit different. Notice that we use the .bat file and
# quotes for the Kotlin version, because dots "." in the Kotlin version and parameter name
# cause issues.
#
# Expressions in Github actions are limited. If there would be an if expression, then we
# wouldn't need to duplicate the next step and depending on the OS enable / disable them.
- name: Test on Windows
run: ./gradlew.bat assemble test --no-build-cache --no-daemon --stacktrace -Doverride_config-fullTestRun=false -Doverride_config-includeKspTests=false
- name: Upload Test Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
name: test-results-windows
path: ./**/build/reports/tests/
dependency-guard:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Dependency Guard Check
run: ./gradlew dependencyGuard --no-build-cache --no-daemon --stacktrace
ktlint:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: KtLint
run: ./gradlew ktlintCheck --no-build-cache --no-daemon --stacktrace
lint:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Android Lint
run: ./gradlew -p build-logic/delegate lint --no-build-cache --no-daemon --stacktrace
- name: Upload Lint Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
name: lint-results
path: ./**/build/reports/lint-results.html
publish-maven-local:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Publish to Maven Local
run: ./gradlew clean publishToMavenLocal --no-build-cache --no-daemon --stacktrace
test-gradle-plugin:
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
# Run all tasks, even if some fail. Note that they don't share an output, some tasks overlap
# which is expected. If they need to share their outputs, then we need a proper caching
# solution.
fail-fast: false
matrix:
kotlin-version: [ 1.9.24 ]
agp-version: [ 7.1.1, 7.2.0, 7.3.1 ]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Test Gradle Plugin
run: ./gradlew :gradle-plugin:assemble :gradle-plugin:test --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=${{ matrix.kotlin-version }} -Doverride_agp=${{ matrix.agp-version }}
- name: Upload Test Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
# Use the Kotlin version to prevent overrides.
name: test-results-gradle-plugin-${{ matrix.kotlin-version }}-${{ matrix.agp-version }}
path: ./**/build/reports/tests/
kapt-for-dagger-factories:
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
# Run all tasks, even if some fail. Note that they don't share an output, some tasks overlap
# which is expected. If they need to share their outputs, then we need a proper caching
# solution.
fail-fast: false
matrix:
kotlin-version: [ 1.9.24 ]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Run integration tests
run: ./gradlew -p build-logic/delegate test --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=${{ matrix.kotlin-version }} -Doverride_config-generateDaggerFactoriesWithAnvil=false
- name: Build the sample
run: ./gradlew :delegate:sample:app:assembleDebug --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=${{ matrix.kotlin-version }} -Doverride_config-generateDaggerFactoriesWithAnvil=false
- name: Upload Test Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
# Use the Kotlin version to prevent overrides.
name: test-results-kapt-${{ matrix.kotlin-version }}
path: ./**/build/reports/tests/
instrumentation-tests:
name: Instrumentation tests
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
# Allow tests to continue on other devices if they fail on one device.
fail-fast: false
matrix:
api-level:
# Consider other devices in case it's needed.
#- 24
- 29
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: AVD cache
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
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@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
profile : Galaxy Nexus
ram-size : 4096M
target: default
script: echo "Generated AVD snapshot for caching."
- name: Instrumentation Tests
uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: true
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
profile : Galaxy Nexus
ram-size : 4096M
target: default
script: ./gradlew connectedCheck --no-build-cache --no-daemon --stacktrace
- name: Upload results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
with:
name: instrumentation-test-results
path: ./**/build/reports/androidTests/connected/**
gradle-integration-tests:
name: Gradle integration tests
runs-on: macos-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: Gradle integration tests
run: ./gradlew gradleTest --stacktrace
- name: Upload Test Results
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
if: ${{ failure() }}
with:
name: test-results-gradle-integration
path: ./**/build/reports/tests/
gradle-wrapper-validation:
name: "Validate the Gradle Wrapper"
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: gradle/actions/wrapper-validation@d9c87d481d55275bb5441eef3fe0e46805f9ef70 # v3
build-benchmark-project:
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
with:
distribution: 'zulu'
java-version: '17'
check-latest: true
- name: "Generate Project"
run: ./gradlew :createBenchmarkProject
- name: "Build Benchmark Project"
run: ./gradlew -p benchmark :app:assemble
all-checks:
if: always()
runs-on: ubuntu-latest
needs:
- binary-compatibility-check
- test-ubuntu
- test-windows
- dependency-guard
- ktlint
- lint
- publish-maven-local
- test-gradle-plugin
- kapt-for-dagger-factories
- instrumentation-tests
- gradle-integration-tests
- gradle-wrapper-validation
- build-benchmark-project
steps:
- name: require that all other jobs have passed
uses: re-actors/alls-green@release/v1
with:
allowed-skips: publish-snapshot
jobs: ${{ toJSON(needs) }}