Add separate builds status as verified message
When a change gets verified (+1 or -1) add as companion message
the details of which builds were successful or not in the overall
verification flow, with the associated deep-link into the output
console.
The verification message is included in the e-mail with a
green/red tick indicating the verification status.
Change-Id: I5ab3b569d2420bfcd3ee401b94d7daf2ae65489f
diff --git a/jenkins/gerrit-verifier-change.groovy b/jenkins/gerrit-verifier-change.groovy
index 386e80f..f8a5e36 100644
--- a/jenkins/gerrit-verifier-change.groovy
+++ b/jenkins/gerrit-verifier-change.groovy
@@ -19,6 +19,8 @@
import groovy.json.*
import java.text.*
+verbose = true
+
String.metaClass.encodeURL = {
java.net.URLEncoder.encode(delegate)
}
@@ -53,7 +55,7 @@
'-X', 'POST', '-H', 'Content-Type: application/json',
'--data-binary', jsonPayload,
gerritPostUrl ]
- println "CURL/EXEC> $curl"
+ if(verbose) { println "CURL/EXEC> $curl" }
def proc = curl.execute()
def sout = new StringBuffer(), serr = new StringBuffer()
proc.consumeProcessOutput(sout, serr)
@@ -71,18 +73,28 @@
throw new IOException(error)
}
- if(!serr.toString().trim().isEmpty()) {
+ if(!serr.toString().trim().isEmpty() && verbose) {
println "CURL/OUTPUT> $serr"
}
return 0
}
-def gerritReview(buildUrl,changeNum, sha1, verified, msgPrefix) {
+def gerritReview(changeNum, sha1, verified) {
if(verified == 0) {
return;
}
+ def resTicks = [ 'ABORTED':'\u26aa', 'SUCCESS':'\u2705', 'FAILURE':'\u274c' ]
+
+ def msgList = Globals.buildsList.collect { type,build ->
+ [ 'type': type, 'res': build.getResult().toString(), 'url': build.getBuildUrl() + "console" ]
+ } sort { a,b -> a['res'].compareTo(b['res']) }
+
+ def msgBody = msgList.collect {
+ "${resTicks[it.res]} ${it.type} : ${it.res}\n (${it.url})"
+ } .join('\n')
+
def addReviewerExit = gerritPost("a/changes/" + changeNum + "/reviewers", '{ "reviewer" : "' +
Globals.gerritReviewer + "\" , ${Globals.addReviewerTag} }")
if(addReviewerExit != 0) {
@@ -91,7 +103,7 @@
}
def jsonPayload = '{"labels":{"Code-Review":0,"Verified":' + verified + '},' +
- ' "message": "' + msgPrefix + 'Gerrit-CI Build: ' + buildUrl + '", ' +
+ ' "message": "' + msgBody + '", ' +
' "notify" : "' + (verified < 0 ? "OWNER": "OWNER_REVIEWERS") + "\" , ${Globals.addVerifiedTag} }"
def addVerifiedExit = gerritPost("a/changes/" + changeNum + "/revisions/" + sha1 + "/review",
jsonPayload)
@@ -254,7 +266,7 @@
def res = buildsWithResults.inject(1) { acc, buildResult -> getVerified(acc, buildResult[1]) }
- gerritReview(build.startJob.getBuildUrl() + "console", changeNum, sha1, res, "")
+ gerritReview(changeNum, sha1, res)
switch(res) {
case 0: build.state.result = ABORTED