Skip to content

Webhook Jenkins-тен деректерді қабылдайды

Үлкен командада жобада ынтымақтастық жасағанда, жобадағы жаңа өзгертулер жұмысқа дайын екенін білу пайдалы болады. Жаңа өзгерістер дайын болғанда сәйкес Planfix тапсырмасындағы әзірлеушілерге осындай хабарлама ретінде пікір жіберуге болады. Бұл функцияны Jenkins және incoming webhooks арқылы іске асыруға болады.

Қалай жасау керек

  • Мынадай форматтағы коммиттер жасаңыз: 123456 - commit мәтіні, мұндағы 123456 — Planfix-тегі тапсырма нөмірі.
  • Коммиттерді қабылдайтын webhook жасаңыз.
  • Jenkins Pipeline ішіне webhook-қа деректер жіберетін код қосыңыз.

Webhook баптауы

0Zvave.jpg

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
}


Соңғы нәтиже

Әзірлеуші тапсырмада ұқсас пікірді көретін болады:

E6hGY1.jpg


Өту