From 54194021bf73cd58aa5b161dea5644689dfe1c00 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Tue, 16 Jul 2019 09:34:00 -0700 Subject: [PATCH] Improve build scan metadata (#44247) (cherry picked from commit 2797b2452b1d3696a4c3a367f21630306da5c818) --- build.gradle | 12 ++++------- gradle/build-scan.gradle | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 gradle/build-scan.gradle diff --git a/build.gradle b/build.gradle index f3d683671e4..8dc7f2c3820 100644 --- a/build.gradle +++ b/build.gradle @@ -29,16 +29,13 @@ import org.gradle.util.DistributionLocator import org.gradle.plugins.ide.eclipse.model.SourceFolder plugins { - id 'com.gradle.build-scan' version '2.2.1' + id 'com.gradle.build-scan' version '2.3' id 'base' id 'elasticsearch.global-build-info' } -if (properties.get("org.elasticsearch.acceptScanTOS", "false") == "true") { - buildScan { - termsOfServiceUrl = 'https://gradle.com/terms-of-service' - termsOfServiceAgree = 'yes' - } -} + +apply plugin: 'nebula.info-scm' +apply from: 'gradle/build-scan.gradle' // common maven publishing configuration allprojects { @@ -49,7 +46,6 @@ allprojects { BuildPlugin.configureRepositories(project) -apply plugin: 'nebula.info-scm' String licenseCommit if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) { licenseCommit = scminfo.change ?: "master" // leniency for non git builds diff --git a/gradle/build-scan.gradle b/gradle/build-scan.gradle new file mode 100644 index 00000000000..68d1d1e71ad --- /dev/null +++ b/gradle/build-scan.gradle @@ -0,0 +1,43 @@ +import nebula.plugin.info.scm.ScmInfoExtension + +buildScan { + def jenkinsUrl = System.getenv('JENKINS_URL') ? new URL(System.getenv('JENKINS_URL')) : null + + // Accept Gradle ToS when project property org.elasticsearch.acceptScanTOS=true or this is an Elastic CI build + if (jenkinsUrl?.host?.endsWith('elastic.co') || Boolean.valueOf(project.findProperty('org.elasticsearch.acceptScanTOS') ?: "false")) { + termsOfServiceUrl = 'https://gradle.com/terms-of-service' + termsOfServiceAgree = 'yes' + } + + // Jenkins-specific build scan metadata + if (jenkinsUrl) { + tag 'CI' + tag System.getenv('JOB_NAME') + link 'Jenkins Build', System.getenv('BUILD_URL') + System.getenv('NODE_LABELS').split(' ').each { + value 'Jenkins Worker Label', it + } + + // Capture changes included in this CI build except for pull request builds + if (System.getenv('GIT_COMMIT') && System.getenv('ROOT_BUILD_CAUSE_GHPRBCAUSE') == null) { + background { + def changes = "git diff --name-only ${System.getenv('GIT_PREVIOUS_COMMIT')}..${System.getenv('GIT_COMMIT')}".execute().text.trim() + value 'Git Changes', changes + } + } + } else { + tag 'LOCAL' + } + + // Add SCM information + def scmInfo = project.extensions.findByType(ScmInfoExtension) + if (scmInfo && scmInfo.change && scmInfo.branch) { + value 'Git Commit ID', scmInfo.change + // Don't tag the branch if we are in a detached head state + if (scmInfo.branch ==~ /[0-9a-f]{5,40}/ == false) { + value 'Git Branch', scmInfo.branch + tag scmInfo.branch + } + link 'Source', "https://github.com/elastic/elasticsearch/commit/${scmInfo.change}" + } +} \ No newline at end of file