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 pregătită pentru lucru. O astfel de notificare, sub formă de comentariu, poate fi trimisă dezvoltatorilor în Sarcina corespunzătoare din Planificator 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.
- Creați un webhook care primește commit-urile.
- Adăugați cod în Jenkins Pipeline care trimite date către webhook.
Configurarea webhook-ului
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ă ce operațiunile au fost finalizate:
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
}
Rezultatul final
Dezvoltatorul va vedea un comentariu similar în sarcină: