Вебхук принимает данные из Jenkins: различия между версиями
Материал из Planfix
Artem (обсуждение | вклад) Нет описания правки |
Artem (обсуждение | вклад) Нет описания правки |
||
Строка 18: | Строка 18: | ||
== Настройка вебхука == | == Настройка вебхука == | ||
https://p.pfx.so/pf/HW/Bvldiw.png | https://p.pfx.so/pf/HW/Bvldiw.png | ||
== Код в Jenkins == | |||
Две вспомогательные функции: | |||
<code> | |||
@NonCPS | |||
def getTaskNumber(text) { | |||
def m = (text =~ /\d+/); | |||
def taskNumber = m ? m[0] : ""; | |||
return taskNumber | |||
} | |||
</code> | |||
<code> | |||
@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 | |||
} | |||
</code> | |||
== Перейти == | == Перейти == | ||
*[[Входящие вебхуки]] | *[[Входящие вебхуки]] |
Версия от 13:43, 16 апреля 2021
Вебхуки ПланФикса умеют принимать данные из Jenkins. Это реализовано следующим образом:
Есть Jenkins, который делает build & deploy, настроенные через Jenkins Pipeline. Нам необходимо по завершению действия deploy получать в соответствующих задачах ПланФикса комментарий об этом.
Пошаговый план реализации:
- Коммиты отправляем в таком виде: 123456 - текст коммита, где 123456 - номер задачи в ПланФиксе.
- Создаём вебхук, на который отправляем данные.
- В Jenkins Pipeline допишем код, который будет слать данные на вебхук.
Настройка вебхука
Код в 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 + "
"
}
}
}
return changes
}