From d1892ded3dc6cf1f12509514f67489cdfd88f4bd Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 5 Jul 2024 13:09:32 +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 053dcb333..4aa42004d 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id "com.android.library" apply false id "org.jetbrains.kotlin.android" apply false + id "com.autonomousapps.dependency-analysis" } allprojects { diff --git a/settings.gradle b/settings.gradle index 3e90c0f9d..5b9360df7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,11 +2,13 @@ pluginManagement { gradle.ext.kotlinVersion = '1.9.22' gradle.ext.agpVersion = '8.1.0' gradle.ext.automatticPublishToS3Version = '0.9.0' + gradle.ext.dependencyAnalysisVersion = '1.28.0' plugins { id "org.jetbrains.kotlin.android" version gradle.ext.kotlinVersion id "com.android.library" version gradle.ext.agpVersion id "com.automattic.android.publish-to-s3" version gradle.ext.automatticPublishToS3Version + id "com.autonomousapps.dependency-analysis" version gradle.ext.dependencyAnalysisVersion } repositories { maven { From f22b759ac58d75d1f16ea799747185d9c3d13359 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 5 Jul 2024 13:12:11 +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-example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gradle.properties-example b/gradle.properties-example index cf7de29a8..b7b498698 100644 --- a/gradle.properties-example +++ b/gradle.properties-example @@ -4,3 +4,6 @@ android.useAndroidX=true android.enableJetifier=false android.nonTransitiveRClass=true + +# Dependency Analysis Plugin +dependency.analysis.android.ignored.variants=release From bed6aeb4e85ac1a19e3be43bad6778ac1a117caf Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 5 Jul 2024 13:13:21 +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 | 23 ++++++++++++++++++++ 1 file changed, 23 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..76bb30d63 --- /dev/null +++ b/.buildkite/schedules/dependency-analysis.yml @@ -0,0 +1,23 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + +common_params: + # Common plugin settings to use with the `plugins` key. + - &common_plugins + - automattic/a8c-ci-toolkit#2.15.0 + +agents: + queue: "android" + +steps: + - label: "dependency analysis" + command: | + echo "--- 📊 Analyzing" + cp gradle.properties-example gradle.properties + ./gradlew buildHealth + plugins: *common_plugins + artifact_paths: + - "build/reports/dependency-analysis/build-health-report.*" + notify: + - slack: "#android-core-notifs" + if: build.state == "failed"