Wебҳоок Женкинсдан ма'лумот олади
Катта жамоада лойиҳа устида ҳамкорлик қилаётганда, лойиҳадаги янги янгиланиш ишга тайёр ёки йўқлигини билиш фойдали бўлиши мумкин. Янги такомиллаштиришлар тайёр бўлганида, бундай билдиришни мос Планфих вазифасидаги изоҳ сифатида дастурчиларга жўнатиш мумкин. Ушбу функсионалликни Женкинс ва инcоминг wебҳоокс ёрдамида амалга ошириш мумкин.
Қандай қилиш керак
- Қуйидаги турдаги cоммитларни яратинг: 123456 - cоммит матни, бунда 123456 Планфихдаги вазифа рақами.
- Cоммитларни қабул қилувчи wебҳоок яратинг.
- Wебҳоокга ма'лумот юборувчи Женкинс Пипелине ичидаги кодни қўшинг.
Wебҳоок созламалари
Женкинсдаги код
Икки ёрдамчи функсия:
@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
}
Якуний натижа
Дастурчи вазифада шундай изоҳни кўради: