Webhook primește date de la Jenkins

De la Planfix
Versiunea din 30 noiembrie 2025 02:23, autor: PlanfixBot (discuție | contribuții)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)
Salt la: navigare, căutare

Î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

0Zvave.jpg

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ă:

E6hGY1.jpg


Mergeți la