Вебхук принимает данные из Jenkins: различия между версиями

Материал из Planfix
Перейти к: навигация, поиск
Нет описания правки
Нет описания правки
Строка 23: Строка 23:
Две вспомогательные функции:
Две вспомогательные функции:


<code>
<pre>
@NonCPS
@NonCPS
def getTaskNumber(text) {
def getTaskNumber(text) {
Строка 30: Строка 30:
   return taskNumber
   return taskNumber
}
}
</code>
</pre>


<nowiki>
<pre>
@NonCPS
@NonCPS
def getChangesByTaskNumber() {
def getChangesByTaskNumber() {
Строка 56: Строка 56:
   return changes
   return changes
}
}
</nowiki>
</pre>




== Перейти ==
== Перейти ==
*[[Входящие вебхуки]]
*[[Входящие вебхуки]]

Версия от 13:46, 16 апреля 2021

Вебхуки ПланФикса умеют принимать данные из Jenkins. Это реализовано следующим образом:

Есть Jenkins, который делает build & deploy, настроенные через Jenkins Pipeline. Нам необходимо по завершению действия deploy получать в соответствующих задачах ПланФикса комментарий об этом.


Пошаговый план реализации:

  • Коммиты отправляем в таком виде: 123456 - текст коммита, где 123456 - номер задачи в ПланФиксе.
  • Создаём вебхук, на который отправляем данные.
  • В Jenkins Pipeline допишем код, который будет слать данные на вебхук.


Настройка вебхука

Bvldiw.png


Код в 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
}


Перейти