Webhook Jenkins-ten derekterdi qabıldaýdı
Ülken komandada jobada ıntımaqtastıq jasağanda, jobadağı jaña özgertwler jumısqa daýın ekenin bilw paýdalı boladı. Jaña özgerister daýın bolğanda säýkes Planfix tapsırmasındağı äzirlewşilerge osındaý xabarlama retinde pikir jiberwge boladı. Bul fwnkcïyanı Jenkins jäne incoming webhooks arqılı iske asırwğa boladı.
Qalaý jasaw kerek
- Mınadaý formattağı kommïtter jasañız: 123456 - commit mätini, mundağı 123456 — Planfix-tegi tapsırma nömiri.
- Kommïtterdi qabıldaýtın webhook jasañız.
- Jenkins Pipeline işine webhook-qa derekter jiberetin kod qosıñız.
Webhook baptawı
Jenkins-degi kod
Eki qosalqı fwnkcïya:
@NonCPS
def getTaskNumber(text) {
def m = (text =~ /\d+/);
def taskNumber = m ? m[0] : "";
return taskNumber
}
@NonCPS
def getChangesByTaskNumber() {
def changes = [:]
def maxMessages = 50;
def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items
for (int j = 0; j < entries.length && i + j < maxMessages; j++) {
def entry = entries[j]
def taskNumber = getTaskNumber(entry.msg);
if(taskNumber != "") {
if(!changes.containsKey(taskNumber)) {
changes[taskNumber] = "";
}
changes[taskNumber] += entry.msg + "<br>"
}
}
}
return changes
}
Operacïyalar ayaqtalğannan keýin engiziletin kod:
def deployedTasks = getChangesByTaskNumber()
deployedTasks.eachWithIndex { key, value, i ->
httpRequest contentType: "APPLICATION_JSON_UTF8", httpMode: "POST", requestBody: "{ \"task\" : ${key}, \"comment\" : \"${value.replaceAll('"','\\\\"')}\", \"project\" : \"project-name\", \"branch\" : \"${env.gitlabBranch}\"}", responseHandle: "NONE", url: "https://myacc.planfix.ru/webhook/json/b7mh-dead-687f-lpwq";, consoleLogResponseBody: true
}
Soñğı nätïje
Äzirlewşi tapsırmada uqsas pikirdi köretin boladı: