[CI] Add Slack notifications to ES snapshot build failures (#88292) (#88364)

This commit is contained in:
Brian Seeders 2021-01-14 14:31:47 -05:00 committed by GitHub
parent 8a06bf00df
commit 7a44b5830f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,90 +25,52 @@ def PROMOTE_WITHOUT_VERIFY = !!params.PROMOTE_WITHOUT_VERIFICATION
timeout(time: 120, unit: 'MINUTES') {
timestamps {
ansiColor('xterm') {
node('docker && tests-l') {
catchError {
def VERSION
def SNAPSHOT_ID
def DESTINATION
slackNotifications.onFailure {
node('docker && tests-l') {
catchError {
def VERSION
def SNAPSHOT_ID
def DESTINATION
def scmVars = checkoutEs(ES_BRANCH)
def GIT_COMMIT = scmVars.GIT_COMMIT
def GIT_COMMIT_SHORT = sh(script: "git rev-parse --short ${GIT_COMMIT}", returnStdout: true).trim()
def scmVars = checkoutEs(ES_BRANCH)
def GIT_COMMIT = scmVars.GIT_COMMIT
def GIT_COMMIT_SHORT = sh(script: "git rev-parse --short ${GIT_COMMIT}", returnStdout: true).trim()
buildArchives('to-archive')
buildArchives('to-archive')
dir('to-archive') {
def now = new Date()
def date = now.format("yyyyMMdd-HHmmss")
dir('to-archive') {
def now = new Date()
def date = now.format("yyyyMMdd-HHmmss")
def filesRaw = sh(script: "ls -1", returnStdout: true).trim()
def files = filesRaw
.split("\n")
.collect { filename ->
// Filename examples
// elasticsearch-oss-6.8.7-SNAPSHOT.tar.gz
// elasticsearch-6.8.7-SNAPSHOT.tar.gz
def parts = filename.replace("elasticsearch-oss", "oss").split("-")
def filesRaw = sh(script: "ls -1", returnStdout: true).trim()
def files = filesRaw
.split("\n")
.collect { filename ->
// Filename examples
// elasticsearch-oss-6.8.7-SNAPSHOT.tar.gz
// elasticsearch-6.8.7-SNAPSHOT.tar.gz
def parts = filename.replace("elasticsearch-oss", "oss").split("-")
VERSION = VERSION ?: parts[1]
SNAPSHOT_ID = SNAPSHOT_ID ?: "${date}_${GIT_COMMIT_SHORT}"
DESTINATION = DESTINATION ?: "${VERSION}/archives/${SNAPSHOT_ID}"
VERSION = VERSION ?: parts[1]
SNAPSHOT_ID = SNAPSHOT_ID ?: "${date}_${GIT_COMMIT_SHORT}"
DESTINATION = DESTINATION ?: "${VERSION}/archives/${SNAPSHOT_ID}"
return [
filename: filename,
checksum: filename + '.sha512',
url: "https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${DESTINATION}/${filename}".toString(),
version: parts[1],
platform: 'no-jdk',
architecture: '',
license: parts[0] == 'oss' ? 'oss' : 'default',
]
return [
filename: filename,
checksum: filename + '.sha512',
url: "https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${DESTINATION}/${filename}".toString(),
version: parts[1],
platform: 'no-jdk',
architecture: '',
license: parts[0] == 'oss' ? 'oss' : 'default',
]
)
}
}
sh 'find * -exec bash -c "shasum -a 512 {} > {}.sha512" \\;'
def manifest = [
bucket: "kibana-ci-es-snapshots-daily/${DESTINATION}".toString(),
branch: ES_BRANCH,
sha: GIT_COMMIT,
sha_short: GIT_COMMIT_SHORT,
version: VERSION,
generated: now.format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC")),
archives: files,
]
def manifestJson = toJSON(manifest).toString()
writeFile file: 'manifest.json', text: manifestJson
upload(DESTINATION, '*.*')
sh "cp manifest.json manifest-latest.json"
upload(VERSION, 'manifest-latest.json')
}
if (PROMOTE_WITHOUT_VERIFY) {
esSnapshots.promote(VERSION, SNAPSHOT_ID)
emailext(
to: 'build-kibana@elastic.co',
subject: "ES snapshot promoted without verification: ${params.ES_BRANCH}",
body: '${SCRIPT,template="groovy-html.template"}',
mimeType: 'text/html',
)
} else {
build(
propagate: false,
wait: false,
job: 'elasticsearch+snapshots+verify',
parameters: [
string(name: 'branch_specifier', value: branch_specifier),
string(name: 'SNAPSHOT_VERSION', value: VERSION),
string(name: 'SNAPSHOT_ID', value: SNAPSHOT_ID),
]
)
kibanaPipeline.sendMail()
}
}
kibanaPipeline.sendMail()
}
}
}