@ -4,7 +4,6 @@ on:
push:
branches:
- main
- main-declarative
pull_request:
concurrency:
@ -23,24 +22,18 @@ jobs:
timeout-minutes : 60
steps:
- name : Checkout
uses : actions/checkout@v4
- name : Checkout Declarative Gradle
uses : actions/checkout@v4
with:
repository : 'gradle/declarative-gradle'
ref : 'tt/declarative-no-conventions-nia'
path : 'declarative-gradle'
- name : Checkout Now in Android
uses : actions/checkout@v4
with:
repository : 'gradle/nowinandroid'
path : 'now-in-android'
- name : Validate Gradle Wrapper
uses : gradle/wrapper-validation-action@v2
- name : Copy CI gradle.properties
run : mkdir -p ~/.gradle ; cp now-in-android/ .github/ci-gradle.properties ~/.gradle/gradle.properties
run : mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name : Set up JDK 17
uses : actions/setup-java@v4
@ -52,15 +45,15 @@ jobs:
uses : gradle/gradle-build-action@v3
- name : Check build-logic
run : ./ now-in-android/ gradlew check -p now-in-android/ build-logic
run : ./ gradlew check -p build-logic
- name : Check spotless
run : ./ now-in-android/ gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache -p now-in-android
run : ./ gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache
- name : Check Dependency Guard
id : dependencyguard_verify
continue-on-error : true
run : ./ now-in-android/ gradlew dependencyGuard -p now-in-androi d
run : ./ gradlew dependencyGuard
- name : Prevent updating Dependency Guard baselines if this is a fork
id : checkfork_dependencyguard
@ -74,7 +67,7 @@ jobs:
id : dependencyguard_baseline
if : steps.dependencyguard_verify.outcome == 'failure' && github.event_name == 'pull_request'
run : |
./ now-in-android/ gradlew dependencyGuardBaseline -p now-in-android
./ gradlew dependencyGuardBaseline
- name : Push new Dependency Guard baselines if available
uses : stefanzweifel/git-auto-commit-action@v5
@ -87,7 +80,7 @@ jobs:
- name : Run all local screenshot tests (Roborazzi)
id : screenshotsverify
continue-on-error : true
run : ./ now-in-android/ gradlew verifyRoborazziDemoDebug -p now-in-android
run : ./ gradlew verifyRoborazziDemoDebug
- name : Prevent pushing new screenshots if this is a fork
id : checkfork_screenshots
@ -101,7 +94,7 @@ jobs:
id : screenshotsrecord
if : steps.screenshotsverify.outcome == 'failure' && github.event_name == 'pull_request'
run : |
./ now-in-android/ gradlew recordRoborazziDemoDebug -p now-in-android
./ gradlew recordRoborazziDemoDebug
- name : Push new screenshots if available
uses : stefanzweifel/git-auto-commit-action@v5
@ -114,18 +107,17 @@ jobs:
# Run local tests after screenshot tests to avoid wrong UP-TO-DATE. TODO: Ignore screenshots.
- name : Run local tests and create report
if : always()
run : ./ now-in-android/ gradlew testDemoDebug :lint:test -p now-in-android
run : ./ gradlew testDemoDebug :lint:test
# Replace task exclusions with `-Pandroidx.baselineprofile.skipgeneration` when
# https://android-review.googlesource.com/c/platform/frameworks/support/+/2602790 landed in a
# release build
- name : Build all build type and flavor permutations
run : ./ now-in-android/ gradlew :app:assemble :benchmarks:assemble
run : ./ gradlew :app:assemble :benchmarks:assemble
-x pixel6Api33ProdNonMinifiedReleaseAndroidTest
-x pixel6Api33DemoNonMinifiedReleaseAndroidTest
-x collectDemoNonMinifiedReleaseBaselineProfile
-x collectProdNonMinifiedReleaseBaselineProfile
-p now-in-android
- name : Upload build outputs (APKs)
uses : actions/upload-artifact@v4
@ -140,8 +132,15 @@ jobs:
name : local-test-results
path : '**/build/test-results/test*UnitTest/**.xml'
- name : Upload screenshot results (PNG)
if : always()
uses : actions/upload-artifact@v4
with:
name : screenshot-test-results
path : '**/build/outputs/roborazzi/*_compare.png'
- name : Check lint
run : ./now-in-android/gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint -p now-in-android
run : ./ gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint
- name : Upload lint reports (HTML)
if : always()
@ -151,7 +150,7 @@ jobs:
path : '**/build/reports/lint-results-*.html'
- name : Check badging
run : ./ now-in-android/ gradlew :app:checkProdReleaseBadging -p now-in-android
run : ./ gradlew :app:checkProdReleaseBadging
androidTest:
runs-on : ubuntu-latest
@ -179,21 +178,15 @@ jobs:
sudo udevadm trigger --name-match=kvm
ls /dev/kvm
- name : Checkout
uses : actions/checkout@v4
- name : Checkout Declarative Gradle
uses : actions/checkout@v4
with:
repository : 'gradle/declarative-gradle'
ref : 'tt/declarative-no-conventions-nia'
path : 'declarative-gradle'
- name : Checkout Now in Android
uses : actions/checkout@v4
with:
repository : 'gradle/nowinandroid'
path : 'now-in-android'
- name : Copy CI gradle.properties
run : mkdir -p ~/.gradle ; cp now-in-android/ .github/ci-gradle.properties ~/.gradle/gradle.properties
run : mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name : Set up JDK 17
uses : actions/setup-java@v4
@ -212,17 +205,17 @@ jobs:
disable-animations : true
disk-size : 6000M
heap-size : 600M
script : ./ now-in-android/ gradlew connectedDemoDebugAndroidTest --daemon -p now-in-android
script : ./ gradlew connectedDemoDebugAndroidTest --daemon
- name : Run local tests (including Roborazzi) for the combined coverage report (only API 30)
if : matrix.api-level == 30
# There is no need to verify Roborazzi tests to generate coverage.
run : ./ now-in-android/ gradlew testDemoDebugUnitTest -Proborazzi.test.verify=false -p now-in-android # Add Prod if we ever add JVM tests for prod
run : ./ gradlew testDemoDebugUnitTest -Proborazzi.test.verify=false # Add Prod if we ever add JVM tests for prod
# Add `createProdDebugUnitTestCoverageReport` if we ever add JVM tests for prod
- name : Generate coverage reports for Debug variants (only API 30)
if : matrix.api-level == 30
run : ./ now-in-android/ gradlew createDemoDebugCombinedCoverageReport -p now-in-android
run : ./ gradlew createDemoDebugCombinedCoverageReport
- name : Upload test reports
if : always()