From f5b2cc86d0a741aefc904058f41efcb84585960e Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Fri, 18 Aug 2023 15:11:17 +0200 Subject: [PATCH 1/6] Enabled PTS by default and set the FAST profile for `testAndroid${version}` tasks. Also set REMAINING_TESTS mode for `main` branch builds on CI. --- .github/workflows/build-verification.yml | 33 +++++++++++++++++------- build.gradle.kts | 15 ++++++++++- gradle.properties | 2 +- release/changes.md | 6 ++++- 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-verification.yml b/.github/workflows/build-verification.yml index bfd3213d..147d54bc 100644 --- a/.github/workflows/build-verification.yml +++ b/.github/workflows/build-verification.yml @@ -4,21 +4,25 @@ on: push: branches: [ main, citest ] pull_request: - branches: [ main ] workflow_dispatch: jobs: - generate_versions: - name: Generate versions + generate_versions_pts: + name: Generate versions and prepare PTS runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - id: setup-matrix run: echo "matrix=$(jq -cM '.supportedVersions | keys' src/main/resources/versions.json | sed -e 's/\./_/g' -e 's/-/_/g')" >> $GITHUB_OUTPUT + - id: choose-pts-mode + run: echo "pts-mode=$(if ${{ github.ref_name == 'main' }}; then echo 'REMAINING_TESTS'; else echo 'RELEVANT_TESTS'; fi)" >> $GITHUB_OUTPUT - name: debug - run: echo ${{ steps.setup-matrix.outputs.matrix }} + run: | + echo "matrix=${{ steps.setup-matrix.outputs.matrix }}" + echo "pts-mode=${{ steps.choose-pts-mode.outputs.pts-mode }}" outputs: matrix: ${{ steps.setup-matrix.outputs.matrix }} + pts-mode: ${{ steps.choose-pts-mode.outputs.pts-mode }} sanity_check: name: Sanity check @@ -39,6 +43,7 @@ jobs: tests: name: Tests runs-on: ubuntu-latest + needs: [ generate_versions_pts ] steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 @@ -48,19 +53,23 @@ jobs: - name: Set up Gradle uses: gradle/gradle-build-action@v2 - name: Run unit tests - run: ./gradlew test -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false + run: >- + ./gradlew test + -x signPluginMavenPublication + -x signAndroidCacheFixPluginPluginMarkerMavenPublication + -Porg.gradle.java.installations.auto-download=false + -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} - ORG_GRADLE_PROJECT_isPTSEnabled: ${{ github.ref_name != 'main' }} android_version_tests: name: Android version tests - needs: [ generate_versions, sanity_check ] + needs: [ generate_versions_pts, sanity_check ] runs-on: ubuntu-latest strategy: fail-fast: false matrix: - versions: ${{ fromJson(needs.generate_versions.outputs.matrix) }} + versions: ${{ fromJson(needs.generate_versions_pts.outputs.matrix) }} steps: - uses: actions/checkout@v3 # Patch issue in platform-tools 31.0.3 where platform-tools/api/api-versions.xml is missing (see https://issuetracker.google.com/issues/195445762) @@ -99,7 +108,11 @@ jobs: - name: Set up Gradle uses: gradle/gradle-build-action@v2 - name: Run integration tests - run: ./gradlew testAndroid${{ matrix.versions }} -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false + run: >- + ./gradlew testAndroid${{ matrix.versions }} + -x signPluginMavenPublication + -x signAndroidCacheFixPluginPluginMarkerMavenPublication + -Porg.gradle.java.installations.auto-download=false + -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} - ORG_GRADLE_PROJECT_isPTSEnabled: ${{ github.ref_name != 'main' }} diff --git a/build.gradle.kts b/build.gradle.kts index f059b09a..9144aa07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,7 @@ import com.gradle.enterprise.gradleplugin.testretry.retry +import com.gradle.enterprise.gradleplugin.testselection.PredictiveTestSelectionProfile.FAST +import com.gradle.enterprise.gradleplugin.testselection.PredictiveTestSelectionProfile.CONSERVATIVE +import com.gradle.enterprise.gradleplugin.testselection.PredictiveTestSelectionProfile.STANDARD import groovy.json.JsonSlurper plugins { @@ -113,7 +116,13 @@ tasks.withType().configureEach { } predictiveSelection { - enabled = providers.gradleProperty("isPTSEnabled").map { it != "false" }.orElse(false) + enabled = providers.gradleProperty("isPTSEnabled").map { it != "false" }.orElse(true) + } +} + +tasks.test { + predictiveSelection { + profile = STANDARD } } @@ -135,6 +144,10 @@ getSupportedVersions().keys.forEach { androidVersion -> languageVersion = JavaLanguageVersion.of(17) } } + + predictiveSelection { + profile = FAST + } } tasks.check { diff --git a/gradle.properties b/gradle.properties index 4c21d2a7..c48b4de3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,4 @@ org.gradle.configuration-cache=true org.gradle.jvmargs=-Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 org.gradle.kotlin.dsl.allWarningsAsErrors=true -isPTSEnabled=false +isPTSEnabled=true diff --git a/release/changes.md b/release/changes.md index 1f014ac3..51c64504 100644 --- a/release/changes.md +++ b/release/changes.md @@ -1 +1,5 @@ -- [NEW] Run tests against AGP 8.2.0-alpha16 \ No newline at end of file +- [NEW] Run tests against AGP 8.2.0-alpha16 +- [NEW] Enabled Predictive Test Selection (PTS) by default. +- [NEW] Set the `FAST` PTS profile for `testAndroid${version}` test tasks and `STANDARD` profile for "regular" `test` task. +- [NEW] Set `RELEVANT_TESTS` PTS mode for PRs (pre-merge) and `REMAINING_TESTS` for `main` (post-merge) branch builds. +- [NEW] Enabled `Verify Build` action for all PRs, not just the ones targeting `main` From 68ac58ecf0a93414ade2771e54a7f06f03f70471 Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Mon, 21 Aug 2023 16:12:36 +0200 Subject: [PATCH 2/6] Set PTS to disabled by default when running manually (workflow triggered via `workflow_dispatch`) --- .github/workflows/build-verification.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/build-verification.yml b/.github/workflows/build-verification.yml index 147d54bc..e92faef1 100644 --- a/.github/workflows/build-verification.yml +++ b/.github/workflows/build-verification.yml @@ -5,6 +5,12 @@ on: branches: [ main, citest ] pull_request: workflow_dispatch: + inputs: + pts_enabled: + description: Is PTS enabled + required: true + default: false + type: boolean jobs: generate_versions_pts: @@ -59,6 +65,7 @@ jobs: -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} + -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} @@ -114,5 +121,6 @@ jobs: -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} + -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} From 15af1aa3270de61d27085738a993953863b4101f Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Mon, 21 Aug 2023 16:12:58 +0200 Subject: [PATCH 3/6] Removed non user faacing changes from changes.md --- release/changes.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/release/changes.md b/release/changes.md index 51c64504..0cc85868 100644 --- a/release/changes.md +++ b/release/changes.md @@ -1,5 +1 @@ - [NEW] Run tests against AGP 8.2.0-alpha16 -- [NEW] Enabled Predictive Test Selection (PTS) by default. -- [NEW] Set the `FAST` PTS profile for `testAndroid${version}` test tasks and `STANDARD` profile for "regular" `test` task. -- [NEW] Set `RELEVANT_TESTS` PTS mode for PRs (pre-merge) and `REMAINING_TESTS` for `main` (post-merge) branch builds. -- [NEW] Enabled `Verify Build` action for all PRs, not just the ones targeting `main` From 492958043249523cce8de04fdc7f3413918ee197 Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Tue, 22 Aug 2023 16:56:59 +0200 Subject: [PATCH 4/6] Reworked PTS mode to be set in ENV parts of the build-verification.yml workflow --- .github/workflows/build-verification.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-verification.yml b/.github/workflows/build-verification.yml index e92faef1..f0d135d3 100644 --- a/.github/workflows/build-verification.yml +++ b/.github/workflows/build-verification.yml @@ -13,22 +13,18 @@ on: type: boolean jobs: - generate_versions_pts: - name: Generate versions and prepare PTS + generate_versions: + name: Generate versions runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - id: setup-matrix run: echo "matrix=$(jq -cM '.supportedVersions | keys' src/main/resources/versions.json | sed -e 's/\./_/g' -e 's/-/_/g')" >> $GITHUB_OUTPUT - - id: choose-pts-mode - run: echo "pts-mode=$(if ${{ github.ref_name == 'main' }}; then echo 'REMAINING_TESTS'; else echo 'RELEVANT_TESTS'; fi)" >> $GITHUB_OUTPUT - name: debug run: | echo "matrix=${{ steps.setup-matrix.outputs.matrix }}" - echo "pts-mode=${{ steps.choose-pts-mode.outputs.pts-mode }}" outputs: matrix: ${{ steps.setup-matrix.outputs.matrix }} - pts-mode: ${{ steps.choose-pts-mode.outputs.pts-mode }} sanity_check: name: Sanity check @@ -49,7 +45,6 @@ jobs: tests: name: Tests runs-on: ubuntu-latest - needs: [ generate_versions_pts ] steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 @@ -64,19 +59,20 @@ jobs: -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false - -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} + -Dpts.mode=$PTS_MODE env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} + PTS_MODE: "${{ github.ref_name == 'main' && 'REMAINING_TESTS' || 'RELEVANT_TESTS' }}" android_version_tests: name: Android version tests - needs: [ generate_versions_pts, sanity_check ] + needs: [ generate_versions, sanity_check ] runs-on: ubuntu-latest strategy: fail-fast: false matrix: - versions: ${{ fromJson(needs.generate_versions_pts.outputs.matrix) }} + versions: ${{ fromJson(needs.generate_versions.outputs.matrix) }} steps: - uses: actions/checkout@v3 # Patch issue in platform-tools 31.0.3 where platform-tools/api/api-versions.xml is missing (see https://issuetracker.google.com/issues/195445762) @@ -120,7 +116,8 @@ jobs: -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false - -Dpts.mode=${{ needs.generate_versions_pts.outputs.pts-mode }} -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} + -Dpts.mode=$PTS_MODE env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} + PTS_MODE: "${{ github.ref_name == 'main' && 'REMAINING_TESTS' || 'RELEVANT_TESTS' }}" From 277464dd61238eb3f041e5bd2c73c7f456983cd9 Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Tue, 22 Aug 2023 16:58:08 +0200 Subject: [PATCH 5/6] Cleanup --- .github/workflows/build-verification.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build-verification.yml b/.github/workflows/build-verification.yml index f0d135d3..60b234b0 100644 --- a/.github/workflows/build-verification.yml +++ b/.github/workflows/build-verification.yml @@ -21,8 +21,7 @@ jobs: - id: setup-matrix run: echo "matrix=$(jq -cM '.supportedVersions | keys' src/main/resources/versions.json | sed -e 's/\./_/g' -e 's/-/_/g')" >> $GITHUB_OUTPUT - name: debug - run: | - echo "matrix=${{ steps.setup-matrix.outputs.matrix }}" + run: echo "matrix=${{ steps.setup-matrix.outputs.matrix }}" outputs: matrix: ${{ steps.setup-matrix.outputs.matrix }} From 21ffe455322eb859abefb6830c57336478d9a859 Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Mon, 28 Aug 2023 10:30:15 +0200 Subject: [PATCH 6/6] Removed the workflow_dispatch.input, which was used to disable PTS by default (also for staging builds). --- .github/workflows/build-verification.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/build-verification.yml b/.github/workflows/build-verification.yml index 60b234b0..f716308c 100644 --- a/.github/workflows/build-verification.yml +++ b/.github/workflows/build-verification.yml @@ -5,12 +5,6 @@ on: branches: [ main, citest ] pull_request: workflow_dispatch: - inputs: - pts_enabled: - description: Is PTS enabled - required: true - default: false - type: boolean jobs: generate_versions: @@ -58,7 +52,6 @@ jobs: -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false - -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} -Dpts.mode=$PTS_MODE env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} @@ -115,7 +108,6 @@ jobs: -x signPluginMavenPublication -x signAndroidCacheFixPluginPluginMarkerMavenPublication -Porg.gradle.java.installations.auto-download=false - -PisPTSEnabled=${{ github.event.inputs.pts_enabled }} -Dpts.mode=$PTS_MODE env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }}