Вебхук приймає дані з Jenkins
Матеріал з Planfix
У великій команді, яка працює над спільним проєктом, іноді важливо знати, готове чи до роботи нове оновлення в проєкті. Таке повідомлення у вигляді коментаря можна відправляти розробникам в відповідне завдання в Planfix саме в той момент, коли нові доробки готові до використання. Такий функціонал можливо реалізувати, використовуючи Jenkins і вхідні вебхуки.
Як це зробити
- Сформуйте комміти такого виду: 123456 - текст комміту, де 123456 - номер завдання в Planfix.
- Створіть вебхук, який отримає комміти.
- В 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 + "<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.ua/webhook/json/b7mh-dead-687f-lpwq", consoleLogResponseBody: true }
Кінцевий результат
Розробник побачить в завданні такий коментар: