Skip to content

Wебҳоок Женкинсдан ма'лумот олади

Катта жамоада лойиҳа устида ҳамкорлик қилаётганда, лойиҳадаги янги янгиланиш ишга тайёр ёки йўқлигини билиш фойдали бўлиши мумкин. Янги такомиллаштиришлар тайёр бўлганида, бундай билдиришни мос Планфих вазифасидаги изоҳ сифатида дастурчиларга жўнатиш мумкин. Ушбу функсионалликни Женкинс ва инcоминг wебҳоокс ёрдамида амалга ошириш мумкин.

Қандай қилиш керак

  • Қуйидаги турдаги cоммитларни яратинг: 123456 - cоммит матни, бунда 123456 Планфихдаги вазифа рақами.
  • Cоммитларни қабул қилувчи wебҳоок яратинг.
  • Wебҳоокга ма'лумот юборувчи Женкинс Пипелине ичидаги кодни қўшинг.

Wебҳоок созламалари

0Зваве.жпг

Женкинсдаги код

Икки ёрдамчи функсия:

@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
}


Якуний натижа

Дастурчи вазифада шундай изоҳни кўради:

Э6ҳГЙ1.жпг


Ўтиш