91 lines
3.5 KiB
Groovy
91 lines
3.5 KiB
Groovy
import org.elasticsearch.gradle.OS
|
|
import org.gradle.initialization.BuildRequestMetaData
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
long startTime = project.gradle.services.get(BuildRequestMetaData).getStartTime()
|
|
|
|
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')
|
|
String nodeName = System.getenv('NODE_NAME')
|
|
|
|
tag OS.current().name()
|
|
|
|
// Automatically publish scans from Elasticsearch CI
|
|
if (jenkinsUrl?.host?.endsWith('elastic.co')) {
|
|
publishAlways()
|
|
buildScan.server = 'https://gradle-enterprise.elastic.co'
|
|
}
|
|
|
|
// Link to Jenkins worker logs and system metrics
|
|
if (nodeName) {
|
|
link 'System logs', "https://infra-stats.elastic.co/app/infra#/logs?" +
|
|
"&logFilter=(expression:'host.name:${nodeName}',kind:kuery)"
|
|
buildFinished {
|
|
link 'System metrics', "https://infra-stats.elastic.co/app/infra#/metrics/host/" +
|
|
"${nodeName}?_g=()&metricTime=(autoReload:!f,refreshInterval:5000," +
|
|
"time:(from:${startTime - TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES)},interval:%3E%3D1m," +
|
|
"to:${System.currentTimeMillis() + TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES)}))"
|
|
}
|
|
}
|
|
|
|
// Jenkins-specific build scan metadata
|
|
if (jenkinsUrl) {
|
|
// Parse job name in the case of matrix builds
|
|
// Matrix job names come in the form of "base-job-name/matrix_param1=value1,matrix_param2=value2"
|
|
def splitJobName = jobName.split('/')
|
|
if (splitJobName.length > 1 && splitJobName.last() ==~ /^([a-zA-Z0-9_\-]+=[a-zA-Z0-9_\-]+,?)+$/) {
|
|
def baseJobName = splitJobName.dropRight(1).join('/')
|
|
tag baseJobName
|
|
value 'Job Name', baseJobName
|
|
def matrixParams = splitJobName.last().split(',')
|
|
matrixParams.collect { it.split('=') }.each { param ->
|
|
value "MATRIX_${param[0].toUpperCase()}", param[1]
|
|
}
|
|
} else {
|
|
tag jobName
|
|
value 'Job Name', jobName
|
|
}
|
|
|
|
tag 'CI'
|
|
link 'Jenkins Build', buildUrl
|
|
link 'GCP Upload', "https://console.cloud.google.com/storage/elasticsearch-ci-artifacts/jobs/${jobName}/build/${buildNumber}.tar.bz2"
|
|
value 'Job Number', buildNumber
|
|
|
|
System.getenv().getOrDefault('NODE_LABELS', '').split(' ').each {
|
|
value 'Jenkins Worker Label', it
|
|
}
|
|
|
|
// 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')
|
|
tag System.getenv('ghprbTargetBranch')
|
|
tag "pr/${System.getenv('ghprbPullId')}"
|
|
tag 'pull-request'
|
|
link 'Source', "https://github.com/elastic/elasticsearch/tree/${System.getenv('ghprbActualCommit')}"
|
|
link 'Pull Request', System.getenv('ghprbPullLink')
|
|
} else {
|
|
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'
|
|
}
|
|
}
|