Webhook primește date de la Jenkins
De la Planfix
Într-o echipă mare care colaborează la un proiect, uneori este util să știți dacă o actualizare nouă din proiect este gata pentru lucru. O astfel de notificare sub forma unui comentariu poate fi trimisă dezvoltatorilor în Sarcina corespunzătoare din Planfix atunci când noile îmbunătățiri sunt gata. Această funcționalitate poate fi implementată folosind Jenkins și incoming webhooks.
Cum se face
- Creați commit-uri de acest tip: 123456 - textul commit-ului, unde 123456 este numărul Sarcinii în Planfix.
- Configurați un webhook pentru a primi commit-urile.
- Adăugați cod în Jenkins Pipeline care trimite date către webhook.
Configurare webhook
Cod în Jenkins
Două funcții auxiliare:
@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
}
Cod pentru inserare după finalizarea operațiunilor:
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
}
Rezultat final
Dezvoltatorul va vedea un comentariu similar în Sarcină: