From 9fb1b19abfc0136e2ae3e77eea50a2fdcc6f822d Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 8 Jul 2024 16:54:58 +0300 Subject: [PATCH 1/3] Build: Add dependency analysis plugin FYI: This commit adds a previous version of the plugin (1.28.0) and not the latest version (1.32.0). This is because the latest version gets stuck during the 'computeActualUsage' phase and increases the build time of the 'buildHealth' task by as much as five times (5x). For more info see: Stuck in computeActualUsageDebug for many minutes #1186 (https://github.com/autonomousapps/ dependency-analysis-gradle-plugin/issues/1186) --- build.gradle | 1 + settings.gradle | 2 ++ 2 files changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 72decc280..4f3f2ac08 100644 --- a/build.gradle +++ b/build.gradle @@ -13,6 +13,7 @@ plugins { id "com.android.application" apply false id "org.jetbrains.kotlin.android" apply false id "com.automattic.android.publish-to-s3" apply false + id "com.autonomousapps.dependency-analysis" } allprojects { diff --git a/settings.gradle b/settings.gradle index f9ae76171..62d922a23 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,12 +2,14 @@ pluginManagement { gradle.ext.kotlinVersion = '1.9.22' gradle.ext.agpVersion = '8.1.0' gradle.ext.automatticPublishToS3Version = '0.8.0' + gradle.ext.dependencyAnalysisVersion = '1.28.0' plugins { id "com.android.library" version gradle.ext.agpVersion id "com.android.application" version gradle.ext.agpVersion id "org.jetbrains.kotlin.android" version gradle.ext.kotlinVersion id "com.automattic.android.publish-to-s3" version gradle.ext.automatticPublishToS3Version + id "com.autonomousapps.dependency-analysis" version gradle.ext.dependencyAnalysisVersion } repositories { maven { From 164a3236d12217eecd2bd9f19e3ddf958b1b3017 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 8 Jul 2024 16:59:16 +0300 Subject: [PATCH 2/3] Build: Ignored variants configuration for dependency analysis plugin FYI: With this configuration only the 'debug' variant (build type) for for all modules is going to be included, with the rest of the variants ignored. --- gradle.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gradle.properties b/gradle.properties index a288b9792..e8b57edfa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,3 +22,6 @@ android.enableJetifier=false android.useAndroidX=true android.nonTransitiveRClass=true + +# Dependency Analysis Plugin +dependency.analysis.android.ignored.variants=release From de8a00a4c7c01ee237b10acbe7cac701a533744f Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 8 Jul 2024 17:02:19 +0300 Subject: [PATCH 3/3] CI: Add a scheduled dependency analysis job FYI: 1. This job will be then used by 'buildkite-ci' and configured as a 'buildkite_pipeline_schedule' with a weekly frequently. 2. This job will also notify on the android-core-notifs slack channel on a build failure. --- .buildkite/schedules/dependency-analysis.yml | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .buildkite/schedules/dependency-analysis.yml diff --git a/.buildkite/schedules/dependency-analysis.yml b/.buildkite/schedules/dependency-analysis.yml new file mode 100644 index 000000000..dcd893c01 --- /dev/null +++ b/.buildkite/schedules/dependency-analysis.yml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + +# Nodes with values to reuse in the pipeline. +common_params: + # Common plugin settings to use with the `plugins` key. + - &common_plugins + - automattic/a8c-ci-toolkit#2.14.0 + +# Run everything on the `android` queue +agents: + queue: android + +steps: + - label: "dependency analysis" + command: | + echo "--- 📊 Analyzing" + ./gradlew buildHealth + plugins: *common_plugins + artifact_paths: + - "build/reports/dependency-analysis/build-health-report.*" + notify: + - slack: "#android-core-notifs" + if: build.state == "failed"