Skip to content

Commit 3c2e27a

Browse files
authored
Always publish a build scan in CI (#48348)
* 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. * Pass env vars to vagrant VM * Enable running in parallel in the VM * Add job name and build nomber as custom values
1 parent 0a26667 commit 3c2e27a

File tree

3 files changed

+36
-24
lines changed

3 files changed

+36
-24
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java

+7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import java.util.Map;
6060
import java.util.Random;
6161
import java.util.stream.Collectors;
62+
import java.util.stream.Stream;
6263

6364
import static org.elasticsearch.gradle.vagrant.VagrantMachine.convertLinuxPath;
6465
import static org.elasticsearch.gradle.vagrant.VagrantMachine.convertWindowsPath;
@@ -187,6 +188,12 @@ private static List<Object> configureVM(Project project) {
187188
vagrant.setBox(box);
188189
vagrant.vmEnv("SYSTEM_JAVA_HOME", convertPath(project, vagrant, systemJdk, "", ""));
189190
vagrant.vmEnv("PATH", convertPath(project, vagrant, gradleJdk, "/bin:$PATH", "\\bin;$Env:PATH"));
191+
// pass these along to get correct build scans
192+
if (System.getenv("JENKINS_URL") != null) {
193+
Stream.of("JOB_NAME", "JENKINS_URL", "BUILD_NUMBER", "BUILD_URL").forEach(name ->
194+
vagrant.vmEnv(name, System.getenv(name))
195+
);
196+
}
190197
vagrant.setIsWindowsVM(isWindows(project));
191198

192199
return Arrays.asList(systemJdk, gradleJdk);

buildSrc/src/main/java/org/elasticsearch/gradle/test/GradleDistroTestTask.java

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ private List<String> getScript(boolean isWindows) {
8080
line.append(" --project-cache-dir ");
8181
line.append(isWindows ? convertWindowsPath(getProject(), cacheDir) : convertLinuxPath(getProject(), cacheDir));
8282
line.append(" -S");
83+
line.append(" --parallel");
8384
line.append(" -D'org.gradle.logging.level'=" + getProject().getGradle().getStartParameter().getLogLevel());
8485
if (testClass != null) {
8586
line.append(" --tests=");

gradle/build-scan.gradle

+28-24
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,34 @@ import org.elasticsearch.gradle.OS
33
buildScan {
44
URL jenkinsUrl = System.getenv('JENKINS_URL') ? new URL(System.getenv('JENKINS_URL')) : null
55
String buildNumber = System.getenv('BUILD_NUMBER')
6+
String buildUrl = System.getenv('BUILD_URL')
67
String jobName = System.getenv('JOB_NAME')
78

89
tag OS.current().name()
10+
if (jobName) {
11+
value 'Job name', jobName
12+
}
13+
if(buildNumber) {
14+
value 'Job number', buildNumber
15+
}
916

10-
// Accept Gradle ToS when project property org.elasticsearch.acceptScanTOS=true or this is an Elastic CI build
11-
if (jenkinsUrl?.host?.endsWith('elastic.co') || Boolean.valueOf(project.findProperty('org.elasticsearch.acceptScanTOS') ?: "false")) {
12-
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
13-
termsOfServiceAgree = 'yes'
17+
if (jenkinsUrl?.host?.endsWith('elastic.co')) {
18+
publishAlways()
19+
buildScan.server = 'https://gradle-enterprise.elastic.co'
1420
}
1521

1622
// Jenkins-specific build scan metadata
1723
if (jenkinsUrl) {
1824
tag 'CI'
19-
tag System.getenv('JOB_NAME')
20-
link 'Jenkins Build', System.getenv('BUILD_URL')
21-
link 'Additional Logs',
22-
"https://console.cloud.google.com/storage/elasticsearch-ci-artifacts/jobs/${jobName}/build/${buildNumber}.tar.bz2"
23-
System.getenv('NODE_LABELS').split(' ').each {
25+
tag jobName
26+
link 'Jenkins Build', buildUrl
27+
link 'GCP Upload', "https://console.cloud.google.com/storage/elasticsearch-ci-artifacts/jobs/${jobName}/build/${buildNumber}.tar.bz2"
28+
System.getenv().getOrDefault('NODE_LABELS', '').split(' ').each {
2429
value 'Jenkins Worker Label', it
2530
}
2631

27-
def isPrBuild = System.getenv('ROOT_BUILD_CAUSE_GHPRBCAUSE') != null
28-
29-
// Capture changes included in this CI build except for pull request builds
30-
if (System.getenv('GIT_COMMIT') && !isPrBuild) {
31-
background {
32-
def changes = "git diff --name-only ${System.getenv('GIT_PREVIOUS_COMMIT')}..${System.getenv('GIT_COMMIT')}".execute().text.trim()
33-
value 'Git Changes', changes
34-
}
35-
}
36-
3732
// Add SCM information
33+
def isPrBuild = System.getenv('ROOT_BUILD_CAUSE_GHPRBCAUSE') != null
3834
if (isPrBuild) {
3935
value 'Git Commit ID', System.getenv('ghprbActualCommit')
4036
value 'Git Branch', System.getenv('ghprbTargetBranch')
@@ -44,11 +40,19 @@ buildScan {
4440
link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('ghprbActualCommit')}"
4541
link 'Pull Request', System.getenv('ghprbPullLink')
4642
} else {
47-
def branch = System.getenv('GIT_BRANCH').split('/').last()
48-
value 'Git Commit ID', System.getenv('GIT_COMMIT')
49-
value 'Git Branch', branch
50-
tag branch
51-
link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('GIT_COMMIT')}"
43+
if (System.getenv('GIT_BRANCH')) {
44+
def branch = System.getenv('GIT_BRANCH').split('/').last()
45+
value 'Git Branch', branch
46+
tag branch
47+
}
48+
if (System.getenv('GIT_COMMIT')) {
49+
value 'Git Commit ID', System.getenv('GIT_COMMIT')
50+
link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('GIT_COMMIT')}"
51+
background {
52+
def changes = "git diff --name-only ${System.getenv('GIT_PREVIOUS_COMMIT')}..${System.getenv('GIT_COMMIT')}".execute().text.trim()
53+
value 'Git Changes', changes
54+
}
55+
}
5256
}
5357
} else {
5458
tag 'LOCAL'

0 commit comments

Comments
 (0)