From bd9f883bb63937b78824d0bceea52570648fc51b Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 10 Jun 2022 23:27:56 +0530 Subject: Improve Kotlin build caching (#1947) * Update Gradle properties with Kotlin 1.7 build things * Disable build tooling metadata task * Revert "Revert "github: stop disabling configuration cache in CI"" This reverts commit 08951643f51a5a62ca2419cb3a5e935b1d7de413. * Store build reports as artifacts --- .github/workflows/deploy_github_releases.yml | 2 +- .github/workflows/deploy_library_releases.yml | 4 +- .github/workflows/deploy_snapshot.yml | 2 +- .github/workflows/draft_new_release.yml | 4 +- .github/workflows/pull_request.yml | 54 +++++++++++++++++++++++--- .github/workflows/shadow_job.yml | 2 +- .github/workflows/sync_crowdin.yml | 2 +- .github/workflows/update_publicsuffix_data.yml | 4 +- gradle.properties | 7 ++++ 9 files changed, 65 insertions(+), 16 deletions(-) diff --git a/.github/workflows/deploy_github_releases.yml b/.github/workflows/deploy_github_releases.yml index 76c4ef42..3518ef9f 100644 --- a/.github/workflows/deploy_github_releases.yml +++ b/.github/workflows/deploy_github_releases.yml @@ -29,7 +29,7 @@ jobs: - name: Build release binaries uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease + arguments: :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease env: SENTRY_DSN: ${{ secrets.SENTRY_DSN }} diff --git a/.github/workflows/deploy_library_releases.yml b/.github/workflows/deploy_library_releases.yml index 57180a0e..6a1c21d0 100644 --- a/.github/workflows/deploy_library_releases.yml +++ b/.github/workflows/deploy_library_releases.yml @@ -32,7 +32,7 @@ jobs: - name: Upload binaries uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache :${{ steps.task-select.outputs.PROJECT }}:publishAllPublicationsToMavenCentralRepository + arguments: :${{ steps.task-select.outputs.PROJECT }}:publishAllPublicationsToMavenCentralRepository env: ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_PUBLISH_USERNAME }} ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} @@ -42,7 +42,7 @@ jobs: - name: Close and release repository uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache closeAndReleaseRepository + arguments: closeAndReleaseRepository env: ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_PUBLISH_USERNAME }} ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml index c826d29e..8c351d4c 100644 --- a/.github/workflows/deploy_snapshot.yml +++ b/.github/workflows/deploy_snapshot.yml @@ -35,7 +35,7 @@ jobs: SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} with: - arguments: --no-configuration-cache collectFreeReleaseApks collectNonFreeReleaseApks -PsentryUploadMappings + arguments: collectFreeReleaseApks collectNonFreeReleaseApks -PsentryUploadMappings - name: Clean secrets run: scripts/signing-cleanup.sh diff --git a/.github/workflows/draft_new_release.yml b/.github/workflows/draft_new_release.yml index 676dbab8..3dc6f271 100644 --- a/.github/workflows/draft_new_release.yml +++ b/.github/workflows/draft_new_release.yml @@ -69,9 +69,9 @@ jobs: # that the version number is already correct, and we only need to drop the # -SNAPSHOT suffix. if [[ "${CHECKOUT_REF}" == "develop" ]]; then - ./gradlew --no-configuration-cache --no-daemon clearPreRelease + ./gradlew --no-daemon clearPreRelease else - ./gradlew --no-configuration-cache --no-daemon bumpPatch + ./gradlew --no-daemon bumpPatch fi # Commit changes to the versioning diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 41f4ed76..c9a0d166 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -42,7 +42,14 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache spotlessCheck + arguments: spotlessCheck + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ unit-tests: runs-on: ubuntu-latest @@ -76,7 +83,7 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache test -PslimTests + arguments: test -PslimTests - name: (Fail-only) Upload test report if: "${{ failure() }}" @@ -85,6 +92,13 @@ jobs: name: Test report path: app/build/reports + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ + build-apks: runs-on: ubuntu-latest steps: @@ -117,7 +131,14 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache assembleFreeDebug assembleNonFreeDebug + arguments: assembleFreeDebug assembleNonFreeDebug + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ check-api: runs-on: ubuntu-latest @@ -151,7 +172,14 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache apiCheck + arguments: apiCheck + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ lint-debug: runs-on: ubuntu-latest @@ -185,7 +213,14 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache lintDebug + arguments: lintDebug + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ assemble-release-apks: runs-on: ubuntu-latest @@ -219,4 +254,11 @@ jobs: if: "${{ steps.service-changed.outputs.result == 'true' }}" uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache aNFR + arguments: aNFR + + - name: Upload Kotlin build report + if: "${{ always() }}" + uses: actions/upload-artifact@v3.1.0 + with: + name: Build report + path: build/reports/kotlin-build/ diff --git a/.github/workflows/shadow_job.yml b/.github/workflows/shadow_job.yml index c76551b6..547baff2 100644 --- a/.github/workflows/shadow_job.yml +++ b/.github/workflows/shadow_job.yml @@ -44,4 +44,4 @@ jobs: env: GRADLE_VERSION_OVERRIDE_com_android_tools_build_gradle: ${{ matrix.agp-version }} with: - arguments: --no-configuration-cache check + arguments: check diff --git a/.github/workflows/sync_crowdin.yml b/.github/workflows/sync_crowdin.yml index f3ed12f0..3f58942e 100644 --- a/.github/workflows/sync_crowdin.yml +++ b/.github/workflows/sync_crowdin.yml @@ -20,7 +20,7 @@ jobs: - name: Download new translations from Crowdin uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache crowdin + arguments: crowdin env: CROWDIN_LOGIN: ${{ secrets.CROWDIN_LOGIN }} CROWDIN_PROJECT_KEY: ${{ secrets.CROWDIN_PROJECT_KEY }} diff --git a/.github/workflows/update_publicsuffix_data.yml b/.github/workflows/update_publicsuffix_data.yml index ad308bfe..537303c3 100644 --- a/.github/workflows/update_publicsuffix_data.yml +++ b/.github/workflows/update_publicsuffix_data.yml @@ -20,7 +20,7 @@ jobs: - name: Download new publicsuffix data uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --no-configuration-cache updatePSL + arguments: updatePSL - name: Compare list changes run: if [[ $(git diff --binary --stat) != "" ]]; then echo "UPDATED=true" >> $GITHUB_ENV; fi @@ -29,7 +29,7 @@ jobs: uses: gradle/gradle-build-action@v2.2.0 if: "${{ env.UPDATED == 'true' }}" with: - arguments: --no-configuration-cache :autofill-parser:test -PslimTests + arguments: :autofill-parser:test -PslimTests - name: Create Pull Request id: cpr diff --git a/gradle.properties b/gradle.properties index 1e3126f9..b8cf46bf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,6 +24,13 @@ kapt.incremental.apt=true # Turn off AP discovery in compile path to enable compile avoidance kapt.include.compile.classpath=false +# New incremental compilation for Kotlin +kotlin.incremental.useClasspathSnapshot=true +kotlin.build.report.output=file + +# Disable Gradle task that breaks configuration caching +kotlin.mpp.enableKotlinToolingMetadataArtifact=false + # Use R8 instead of ProGuard for code shrinking. android.enableR8.fullMode=true -- cgit v1.2.3