Webhook Jenkins-тен деректерді қабылдайды
Үлкен командада жобада ынтымақтастық жасағанда, жобадағы жаңа өзгертулер жұмысқа дайын екенін білу пайдалы болады. Жаңа өзгерістер дайын болғанда сәйкес Planfix тапсырмасындағы әзірлеушілерге осындай хабарлама ретінде пікір жіберуге болады. Бұл функцияны Jenkins және incoming webhooks арқылы іске асыруға болады.
Қалай жасау керек
- Мынадай форматтағы коммиттер жасаңыз: 123456 - commit мәтіні, мұндағы 123456 — Planfix-тегі тапсырма нөмірі.
- Коммиттерді қабылдайтын webhook жасаңыз.
- Jenkins Pipeline ішіне webhook-қа деректер жіберетін код қосыңыз.
Webhook баптауы
Jenkins-дегі код
Екі қосалқы функция:
@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
}
Операциялар аяқталғаннан кейін енгізілетін код:
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
}
Соңғы нәтиже
Әзірлеуші тапсырмада ұқсас пікірді көретін болады: