Skip to content

Migrate ProvidesMethodFactoryCodeGen to support KSP (#806) #1

Migrate ProvidesMethodFactoryCodeGen to support KSP (#806)

Migrate ProvidesMethodFactoryCodeGen to support KSP (#806) #1

Workflow file for this run

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.10 ]
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 -Doverride_config-includeKspTests=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
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 -p build-logic/delegate 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
publish-snapshot :
runs-on : ubuntu-latest
if : github.repository == 'square/anvil' && github.ref == 'refs/heads/main'
timeout-minutes : 25
needs :
- test-ubuntu
- test-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
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.9-1-8-SNAPSHOT
env :
ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.SONATYPE_NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
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.8.22, 1.9.10 ]
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 :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@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/
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.10 ]
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 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@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-integration-tests :
name : Gradle integration tests
runs-on : macos-latest
timeout-minutes : 20
steps :
- uses : actions/checkout@v3
- uses : actions/setup-java@v3
with :
distribution : 'temurin'
java-version : '11'
check-latest : true
- name : Gradle integration tests
run : ./gradlew gradleTest --stacktrace
- name : Upload Test Results
uses : actions/upload-artifact@v3
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@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 -p benchmark :app:assemble
all-checks:
if: always()
runs-on: ubuntu-latest
needs:
- test-ubuntu
- test-windows
- ktlint
- lint
- publish-maven-local
- publish-snapshot
- 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) }}