The parallel forks configuration of Test tasks can have a big impact on their execution time. This commit updates the build can configuration to capture each Test task's maxParallelForks configuration as custom values in the build scan. This will make this data available when comparing scans which will be useful as we experiment with different parallel fork settings to reduce the build's overall execution time. Closes gh-23691
91 lines
1.9 KiB
Groovy
91 lines
1.9 KiB
Groovy
tagOs()
|
|
tagIde()
|
|
tagCiOrLocal()
|
|
addCiMetadata()
|
|
addGitMetadata()
|
|
addTestTaskMetadata()
|
|
|
|
void tagOs() {
|
|
buildScan.tag System.getProperty('os.name')
|
|
}
|
|
|
|
void tagIde() {
|
|
if (System.getProperty('idea.version')) {
|
|
buildScan.tag 'IntelliJ IDEA'
|
|
} else if (System.getProperty('eclipse.buildId')) {
|
|
buildScan.tag 'Eclipse'
|
|
}
|
|
}
|
|
|
|
void tagCiOrLocal() {
|
|
buildScan.tag(isCi() ? 'CI' : 'LOCAL')
|
|
}
|
|
|
|
void addGitMetadata() {
|
|
buildScan.background {
|
|
def gitCommitId = execAndGetStdout('git', 'rev-parse', '--short=8', '--verify', 'HEAD')
|
|
def gitBranchName = execAndGetStdout('git', 'rev-parse', '--abbrev-ref', 'HEAD')
|
|
def gitStatus = execAndGetStdout('git', 'status', '--porcelain')
|
|
|
|
if(gitCommitId) {
|
|
def commitIdLabel = 'Git Commit ID'
|
|
value commitIdLabel, gitCommitId
|
|
link 'Git commit build scans', customValueSearchUrl([(commitIdLabel): gitCommitId])
|
|
}
|
|
if (gitBranchName) {
|
|
tag gitBranchName
|
|
value 'Git branch', gitBranchName
|
|
}
|
|
if (gitStatus) {
|
|
tag 'dirty'
|
|
value 'Git status', gitStatus
|
|
}
|
|
}
|
|
}
|
|
|
|
void addCiMetadata() {
|
|
def ciBuild = 'CI BUILD'
|
|
if (isBamboo()) {
|
|
buildScan.link ciBuild, System.getenv('bamboo_resultsUrl')
|
|
}
|
|
}
|
|
|
|
void addTestTaskMetadata() {
|
|
allprojects {
|
|
tasks.withType(Test) { test ->
|
|
doFirst {
|
|
buildScan.value "Test#maxParallelForks[${test.path}]", test.maxParallelForks.toString()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
boolean isCi() {
|
|
isBamboo()
|
|
}
|
|
|
|
boolean isBamboo() {
|
|
System.getenv('bamboo_resultsUrl')
|
|
}
|
|
|
|
String execAndGetStdout(String... args) {
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine(args)
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
}
|
|
|
|
String customValueSearchUrl(Map<String, String> search) {
|
|
def query = search.collect { name, value ->
|
|
"search.names=${encodeURL(name)}&search.values=${encodeURL(value)}"
|
|
}.join('&')
|
|
|
|
"$buildScan.server/scans?$query"
|
|
}
|
|
|
|
String encodeURL(String url) {
|
|
URLEncoder.encode(url, 'UTF-8')
|
|
}
|