From 920f76b9efeab3a0de160020269ed106d99f3abd Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 9 Feb 2023 15:03:32 +0100 Subject: [PATCH] Add settings convention for Gradle enterprise --- buildSrc/build.gradle.kts | 3 +- buildSrc/settings.gradle | 1 + .../kotlin/common-configuration.gradle.kts | 4 +- buildSrc/src/main/kotlin/testRetry.kt | 23 +++++++++++ gradle/testRetry.gradle.kts | 13 ------- gradle/verification-metadata.xml | 22 ++++------- repo/gradle-settings-conventions/Readme.md | 3 +- .../gradle-enterprise/build.gradle.kts | 19 +++++++++ .../gradle-enterprise.settings.gradle.kts | 39 +++++++++++++++++++ .../settings.gradle.kts | 1 + settings.gradle | 29 +------------- 11 files changed, 96 insertions(+), 61 deletions(-) create mode 100644 buildSrc/src/main/kotlin/testRetry.kt delete mode 100644 gradle/testRetry.gradle.kts create mode 100644 repo/gradle-settings-conventions/gradle-enterprise/build.gradle.kts create mode 100644 repo/gradle-settings-conventions/gradle-enterprise/src/main/kotlin/gradle-enterprise.settings.gradle.kts diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 2f43eeac2fa..cdc43414cfc 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -135,8 +135,7 @@ dependencies { implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.0.1") - implementation("org.gradle:test-retry-gradle-plugin:1.5.1") - compileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.11.2") + compileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.12.3") compileOnly(gradleApi()) diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle index 5881b6e3017..9e781c725e3 100644 --- a/buildSrc/settings.gradle +++ b/buildSrc/settings.gradle @@ -17,6 +17,7 @@ pluginManagement { plugins { id "build-cache" + id "gradle-enterprise" } File versionPropertiesFile = new File(rootProject.projectDir.parentFile, "gradle/versions.properties") diff --git a/buildSrc/src/main/kotlin/common-configuration.gradle.kts b/buildSrc/src/main/kotlin/common-configuration.gradle.kts index d7d3f423ddd..835416d9a1b 100644 --- a/buildSrc/src/main/kotlin/common-configuration.gradle.kts +++ b/buildSrc/src/main/kotlin/common-configuration.gradle.kts @@ -281,9 +281,7 @@ fun Project.configureTests() { // Aggregate task for build related checks tasks.register("checkBuild") - afterEvaluate { - apply(from = "$rootDir/gradle/testRetry.gradle.kts") - } + configureTestRetriesForTestTasks() } // TODO: migrate remaining modules to the new JVM default scheme. diff --git a/buildSrc/src/main/kotlin/testRetry.kt b/buildSrc/src/main/kotlin/testRetry.kt new file mode 100644 index 00000000000..090c04a2ef2 --- /dev/null +++ b/buildSrc/src/main/kotlin/testRetry.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +import org.gradle.api.Project +import org.gradle.api.tasks.testing.Test +import com.gradle.enterprise.gradleplugin.testretry.retry +import org.gradle.kotlin.dsl.withType + +fun Project.configureTestRetriesForTestTasks() { + val testRetryMaxRetries = findProperty("kotlin.build.testRetry.maxRetries") + ?.toString()?.toInt() + ?: (if (kotlinBuildProperties.isTeamcityBuild) 3 else 0) + + tasks.withType().configureEach { + retry { + maxRetries.set(testRetryMaxRetries) + maxFailures.set(20) + failOnPassedAfterRetry.set(false) + } + } +} diff --git a/gradle/testRetry.gradle.kts b/gradle/testRetry.gradle.kts deleted file mode 100644 index 0dcf222d5aa..00000000000 --- a/gradle/testRetry.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ - -apply(plugin = "org.gradle.test-retry") - -val testRetryMaxRetries = findProperty("kotlin.build.testRetry.maxRetries")?.toString()?.toInt() ?: - (if (kotlinBuildProperties.isTeamcityBuild) 3 else 0) - -tasks.withType().configureEach { - configure { - maxRetries.set(testRetryMaxRetries) - maxFailures.set(20) - failOnPassedAfterRetry.set(false) - } -} \ No newline at end of file diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 5f58c2bbe2a..93886a59b16 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2203,16 +2203,16 @@ - - - - + + + + - - - - + + + + @@ -6536,12 +6536,6 @@ - - - - - - diff --git a/repo/gradle-settings-conventions/Readme.md b/repo/gradle-settings-conventions/Readme.md index 2b1c5a472b0..ca0d81faca8 100644 --- a/repo/gradle-settings-conventions/Readme.md +++ b/repo/gradle-settings-conventions/Readme.md @@ -4,4 +4,5 @@ Provides common settings convention plugins for the repo. ### List of plugins -- "build-cache" - local and remote build cache configuration \ No newline at end of file +- "build-cache" - local and remote build cache configuration +- "gradle-enterprise" - configures build scans upload \ No newline at end of file diff --git a/repo/gradle-settings-conventions/gradle-enterprise/build.gradle.kts b/repo/gradle-settings-conventions/gradle-enterprise/build.gradle.kts new file mode 100644 index 00000000000..c43bdd40c79 --- /dev/null +++ b/repo/gradle-settings-conventions/gradle-enterprise/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + `kotlin-dsl` + id("org.jetbrains.kotlin.jvm") +} + +repositories { + maven(url = "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies") + mavenCentral() + gradlePluginPortal() +} + +kotlin.jvmToolchain(8) + +val buildGradlePluginVersion = extra.get("kotlin.build.gradlePlugin.version") +dependencies { + implementation("org.jetbrains.kotlin:kotlin-build-gradle-plugin:$buildGradlePluginVersion") + implementation("com.gradle:gradle-enterprise-gradle-plugin:3.12.3") + implementation("com.gradle:common-custom-user-data-gradle-plugin:1.8.2") +} diff --git a/repo/gradle-settings-conventions/gradle-enterprise/src/main/kotlin/gradle-enterprise.settings.gradle.kts b/repo/gradle-settings-conventions/gradle-enterprise/src/main/kotlin/gradle-enterprise.settings.gradle.kts new file mode 100644 index 00000000000..807e50e0024 --- /dev/null +++ b/repo/gradle-settings-conventions/gradle-enterprise/src/main/kotlin/gradle-enterprise.settings.gradle.kts @@ -0,0 +1,39 @@ +plugins { + id("com.gradle.enterprise") + id("com.gradle.common-custom-user-data-gradle-plugin") apply false +} + +val buildProperties = getKotlinBuildPropertiesForSettings(settings) + +val buildScanServer = buildProperties.buildScanServer +val isTeamCity = buildProperties.isTeamcityBuild + +if (buildProperties.buildScanServer != null) { + plugins.apply("com.gradle.common-custom-user-data-gradle-plugin") +} + +gradleEnterprise { + buildScan { + if (buildScanServer != null) { + server = buildScanServer + publishAlways() + + capture { + isTaskInputFiles = true + isBuildLogging = true + isBuildLogging = true + isUploadInBackground = true + } + } else { + termsOfServiceUrl = "https://gradle.com/terms-of-service" + termsOfServiceAgree = "yes" + } + + val username = if (isTeamCity) "TeamCity" else "concealed" + obfuscation { + ipAddresses { _ -> listOf("0.0.0.0") } + hostname { _ -> "concealed" } + username { _ -> username } + } + } +} diff --git a/repo/gradle-settings-conventions/settings.gradle.kts b/repo/gradle-settings-conventions/settings.gradle.kts index b77a1b474ef..14a5776faad 100644 --- a/repo/gradle-settings-conventions/settings.gradle.kts +++ b/repo/gradle-settings-conventions/settings.gradle.kts @@ -22,6 +22,7 @@ buildscript { } include(":build-cache") +include(":gradle-enterprise") // Unfortunately it is not possible to apply build-cache.settings.gradle.kts as script compilation // could not then find types from "kotlin-build-gradle-plugin" diff --git a/settings.gradle b/settings.gradle index 9ae7ad28dcc..4dc4c4bfc03 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,40 +16,13 @@ pluginManagement { } plugins { - id "com.gradle.enterprise" version "3.11.2" - id "com.gradle.common-custom-user-data-gradle-plugin" version "1.8.1" apply false id "org.gradle.toolchains.foojay-resolver-convention" version "0.4.0" id "build-cache" + id "gradle-enterprise" } def buildProperties = BuildPropertiesKt.getKotlinBuildPropertiesForSettings(settings) -if (buildProperties.buildScanServer != null) { - apply plugin: com.gradle.CommonCustomUserDataGradlePlugin -} - -gradleEnterprise { - def buildScanServer = buildProperties.buildScanServer - def isTeamCity = buildProperties.isTeamcityBuild - - buildScan { - if (buildScanServer != null) { - server = buildScanServer - captureTaskInputFiles = true - publishAlways() - } else { - setTermsOfServiceUrl("https://gradle.com/terms-of-service") - setTermsOfServiceAgree("yes") - } - - obfuscation { - ipAddresses { addresses -> ["0.0.0.0"] } - hostname { host -> "concealed" } - username { name -> isTeamCity ? "TeamCity" : "concealed" } - } - } -} - // modules include ":benchmarks", ":compiler",