Merge pull request #730 from square/joel.k2-explicit-error #1634
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 : | |
push : | |
branches : | |
- main | |
tags-ignore : | |
- '**' | |
pull_request : | |
jobs : | |
test-ubuntu : | |
runs-on : ubuntu-latest | |
timeout-minutes : 25 | |
strategy : | |
fail-fast : false | |
matrix : | |
kotlin-version : [ 1.8.22, 1.9.0 ] | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
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@v3 | |
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@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
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 | |
- name : Upload Test Results | |
uses : actions/upload-artifact@v3 | |
if : ${{ failure() }} | |
with : | |
name : test-results-windows | |
path : ./**/build/reports/tests/ | |
ktlint : | |
runs-on : ubuntu-latest | |
timeout-minutes : 15 | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : KtLint | |
run : ./gradlew ktlintCheck --no-build-cache --no-daemon --stacktrace && ./gradlew -p buildSrc ktlintCheck --no-build-cache --no-daemon --stacktrace | |
lint : | |
runs-on : ubuntu-latest | |
timeout-minutes : 15 | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Android Lint | |
run : ./gradlew lint --no-build-cache --no-daemon --stacktrace | |
- name : Upload Lint Results | |
uses : actions/upload-artifact@v3 | |
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@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Publish to Maven Local | |
run : ./gradlew clean publishToMavenLocal --no-build-cache --no-daemon --stacktrace --no-parallel && cd gradle-plugin && ./gradlew clean publishToMavenLocal --no-build-cache --no-daemon --stacktrace && cd .. | |
publish-snapshot : | |
runs-on : ubuntu-latest | |
if : github.repository == 'square/anvil' && github.ref == 'refs/heads/main' | |
timeout-minutes : 25 | |
needs : | |
- test-ubuntu | |
- build-gradle-plugin | |
- gradle-wrapper-validation | |
- publish-maven-local | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Publish Snapshots 1.9 | |
run : ./gradlew clean publish --no-build-cache --no-daemon --stacktrace --no-parallel && cd gradle-plugin && ./gradlew clean publish --no-build-cache --no-daemon --stacktrace && cd .. | |
env : | |
ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.SONATYPE_NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.SONATYPE_NEXUS_PASSWORD }} | |
# TODO: Remove when we drop Kotlin 1.8 support | |
- name : Publish Snapshots 1.8 | |
run : ./gradlew clean publish --no-build-cache --no-daemon --stacktrace --no-parallel -Doverride_kotlin=1.8.22 -PVERSION_NAME=2.4.7-1-8-SNAPSHOT && cd gradle-plugin && ./gradlew clean publish --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=1.8.22 -PVERSION_NAME=2.4.7-1-8-SNAPSHOT && cd .. | |
env : | |
ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.SONATYPE_NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.SONATYPE_NEXUS_PASSWORD }} | |
build-gradle-plugin : | |
runs-on : ubuntu-latest | |
defaults : | |
run : | |
working-directory : gradle-plugin | |
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.8.22, 1.9.0 ] | |
agp-version : [ 7.1.1, 7.2.0, 7.3.1 ] | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Test Gradle Plugin | |
run : ./gradlew assemble 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@v3 | |
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/ | |
ktlint-gradle-plugin : | |
runs-on : ubuntu-latest | |
defaults : | |
run : | |
working-directory : gradle-plugin | |
timeout-minutes : 15 | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : KtLint Gradle Plugin | |
run : ./gradlew ktlintCheck --no-build-cache --no-daemon --stacktrace | |
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.8.22, 1.9.0 ] | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Run integration tests | |
run : ./gradlew -p integration-tests test --no-build-cache --no-daemon --stacktrace -Doverride_kotlin=${{ matrix.kotlin-version }} -Doverride_config-generateDaggerFactoriesWithAnvil=false | |
- name : Build the sample | |
run : ./gradlew :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@v3 | |
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 : macos-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@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : Instrumentation Tests | |
uses : reactivecircus/android-emulator-runner@v2 | |
with : | |
api-level : ${{ matrix.api-level }} | |
target : default | |
arch : x86_64 | |
script : ./gradlew connectedCheck --no-build-cache --no-daemon --stacktrace | |
- name : Upload results | |
uses : actions/upload-artifact@v3 | |
with : | |
name : insrumentation-test-results | |
path : ./**/build/reports/androidTests/connected/** | |
gradle-wrapper-validation : | |
name : "Validate the Gradle Wrapper" | |
runs-on : ubuntu-latest | |
timeout-minutes : 15 | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : gradle/wrapper-validation-action@v1 | |
build-benchmark-project : | |
runs-on : ubuntu-latest | |
timeout-minutes : 25 | |
steps : | |
- uses : actions/checkout@v3 | |
- uses : actions/setup-java@v3 | |
with : | |
distribution : 'temurin' | |
java-version : '11' | |
check-latest : true | |
- name : "Generate Project" | |
run : ./gradlew :createBenchmarkProject | |
- name : "Build Benchmark Project" | |
run : ./gradlew :benchmark:app:assemble |