From f47b988876d59698635ef24b7c1cc3f4dde7fd16 Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Tue, 22 Oct 2019 15:40:46 +0300 Subject: [PATCH 1/4] Always publish a build scan in CI This PR changes the build scan configuration to alwasy publisha build scan when running in our CI. We should alkready be passing these env vars into the Vagrant VM so this will make it produce a build scan too. The old properties to accept build scan ToS on the public server are thus no longer relevant and will be cleaned up from the Jenkins config once this is merged. --- gradle/build-scan.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gradle/build-scan.gradle b/gradle/build-scan.gradle index 3e47058596c61..04d4349a97610 100644 --- a/gradle/build-scan.gradle +++ b/gradle/build-scan.gradle @@ -8,9 +8,8 @@ buildScan { tag OS.current().name() // 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' + if (jenkinsUrl?.host?.endsWith('elastic.co')) { + publishAlways() } // Jenkins-specific build scan metadata From e7dec7fd616e0beb49a89d3e7df5405507378b7f Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Tue, 22 Oct 2019 16:53:30 +0300 Subject: [PATCH 2/4] Pass env vars to vagrant VM --- .../gradle/test/DistroTestPlugin.java | 7 ++++ gradle/build-scan.gradle | 41 +++++++++---------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java index 2f254b30466a3..12f972c7edf31 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java @@ -59,6 +59,7 @@ import java.util.Map; import java.util.Random; import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.elasticsearch.gradle.vagrant.VagrantMachine.convertLinuxPath; import static org.elasticsearch.gradle.vagrant.VagrantMachine.convertWindowsPath; @@ -187,6 +188,12 @@ private static List configureVM(Project project) { vagrant.setBox(box); vagrant.vmEnv("SYSTEM_JAVA_HOME", convertPath(project, vagrant, systemJdk, "", "")); vagrant.vmEnv("PATH", convertPath(project, vagrant, gradleJdk, "/bin:$PATH", "\\bin;$Env:PATH")); + // pass these along to get correct build scans + if (System.getenv("JENKINS_URL") != null) { + Stream.of("JOB_NAME", "JENKINS_URL", "BUILD_NUMBER", "BUILD_URL").forEach(name -> + vagrant.vmEnv(name, System.getenv(name)) + ); + } vagrant.setIsWindowsVM(isWindows(project)); return Arrays.asList(systemJdk, gradleJdk); diff --git a/gradle/build-scan.gradle b/gradle/build-scan.gradle index 04d4349a97610..c832860c26554 100644 --- a/gradle/build-scan.gradle +++ b/gradle/build-scan.gradle @@ -3,37 +3,28 @@ import org.elasticsearch.gradle.OS buildScan { URL jenkinsUrl = System.getenv('JENKINS_URL') ? new URL(System.getenv('JENKINS_URL')) : null String buildNumber = System.getenv('BUILD_NUMBER') + String buildUrl = System.getenv('BUILD_URL') String jobName = System.getenv('JOB_NAME') tag OS.current().name() - // Accept Gradle ToS when project property org.elasticsearch.acceptScanTOS=true or this is an Elastic CI build if (jenkinsUrl?.host?.endsWith('elastic.co')) { publishAlways() + buildScan.server = 'https://gradle-enterprise.elastic.co' } // Jenkins-specific build scan metadata if (jenkinsUrl) { tag 'CI' - tag System.getenv('JOB_NAME') - link 'Jenkins Build', System.getenv('BUILD_URL') - link 'GCP Upload', - "https://console.cloud.google.com/storage/elasticsearch-ci-artifacts/jobs/${jobName}/${buildNumber}.tar.bz2" - System.getenv('NODE_LABELS').split(' ').each { + tag jobName + link 'Jenkins Build', buildUrl + link 'GCP Upload', "https://console.cloud.google.com/storage/elasticsearch-ci-artifacts/jobs/${jobName}/${buildNumber}.tar.bz2" + System.getenv().getOrDefault('NODE_LABELS', '').split(' ').each { value 'Jenkins Worker Label', it } - def isPrBuild = System.getenv('ROOT_BUILD_CAUSE_GHPRBCAUSE') != null - - // Capture changes included in this CI build except for pull request builds - if (System.getenv('GIT_COMMIT') && !isPrBuild) { - background { - def changes = "git diff --name-only ${System.getenv('GIT_PREVIOUS_COMMIT')}..${System.getenv('GIT_COMMIT')}".execute().text.trim() - value 'Git Changes', changes - } - } - // Add SCM information + def isPrBuild = System.getenv('ROOT_BUILD_CAUSE_GHPRBCAUSE') != null if (isPrBuild) { value 'Git Commit ID', System.getenv('ghprbActualCommit') value 'Git Branch', System.getenv('ghprbTargetBranch') @@ -43,11 +34,19 @@ buildScan { link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('ghprbActualCommit')}" link 'Pull Request', System.getenv('ghprbPullLink') } else { - def branch = System.getenv('GIT_BRANCH').split('/').last() - value 'Git Commit ID', System.getenv('GIT_COMMIT') - value 'Git Branch', branch - tag branch - link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('GIT_COMMIT')}" + if (System.getenv('GIT_BRANCH')) { + def branch = System.getenv('GIT_BRANCH').split('/').last() + value 'Git Branch', branch + tag branch + } + if (System.getenv('GIT_COMMIT')) { + value 'Git Commit ID', System.getenv('GIT_COMMIT') + link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('GIT_COMMIT')}" + 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' From a04bddb1a8794280f9f60b6f8b1ac670a9c856d7 Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Wed, 23 Oct 2019 11:31:38 +0300 Subject: [PATCH 3/4] Enable running in parallel in the VM --- .../java/org/elasticsearch/gradle/test/GradleDistroTestTask.java | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/test/GradleDistroTestTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/test/GradleDistroTestTask.java index cfb960e4e36b0..8671162fa7c7a 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/test/GradleDistroTestTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/test/GradleDistroTestTask.java @@ -80,6 +80,7 @@ private List getScript(boolean isWindows) { line.append(" --project-cache-dir "); line.append(isWindows ? convertWindowsPath(getProject(), cacheDir) : convertLinuxPath(getProject(), cacheDir)); line.append(" -S"); + line.append(" --parallel"); line.append(" -D'org.gradle.logging.level'=" + getProject().getGradle().getStartParameter().getLogLevel()); if (testClass != null) { line.append(" --tests="); From 6441d991a31edf84827f9798c44c6730b30e4a60 Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Wed, 23 Oct 2019 11:33:48 +0300 Subject: [PATCH 4/4] Add job name and build nomber as custom values --- gradle/build-scan.gradle | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gradle/build-scan.gradle b/gradle/build-scan.gradle index f4061c624d019..2cee60c381988 100644 --- a/gradle/build-scan.gradle +++ b/gradle/build-scan.gradle @@ -7,6 +7,12 @@ buildScan { String jobName = System.getenv('JOB_NAME') tag OS.current().name() + if (jobName) { + value 'Job name', jobName + } + if(buildNumber) { + value 'Job number', buildNumber + } if (jenkinsUrl?.host?.endsWith('elastic.co')) { publishAlways()