JIRA: Как сделать так, чтобы webhook срабатывал только за один переход рабочего процесса?
Сценарий это:
Git -> JIRA -> Дженкинс
Коммит в Git должен изменить статус проблемы в JIRA, что, в свою очередь, должно вызвать сборку для задания в Jenkins.
Метод попробовал:
- Я создал WebHook в JIRA. Этот веб-крючок содержит URL-адрес работы Дженкинса.
- Прикрепил этот WebHook к рабочему потоку в JIRA в качестве функции публикации.
- Рабочий процесс прост. Там написано: [InReview] ->[InProgress]-(Aprrove)->[Done]
- Веб-крючок привязан к переходу с [InProgress] на [Готово]
- IssueKey и Issue-updated уже упоминались в WebHook. IssueKey заставит этот WebHook работать только для определенной проблемы. Issue-updated - это событие, которое запускает WebHook, когда эта конкретная проблема обновляется.
Теперь, когда я делаю коммит в Git, состояние проблемы Jira меняется с InReview на InProgress, и появляется кнопка "Утвердить". Когда я регистрируюсь в Jenkins, сборка запускается из-за этой проблемы. Я снова вернусь к JIRA, нажму кнопку "Утвердить", измените статус выпуска с InProgress на Done, и это также приведет к сборке в Jenkins.
Мое требование состоит в том, чтобы сборка Jenkins происходила только при изменении состояния InProgress to Done. Я не могу указать причину, по которой переход InReview к InProgress вызывает сборку Jenkins.
Любые указатели на это будут очень полезны. Заранее спасибо.
1 ответ
После многих попыток, наконец, JQL помог мне. Я отредактировал WebHook следующим образом:
В разделе " События (события, связанные с проблемой)", в котором говорится (События для проблем и рабочих журналов. Вы можете указать JQL-запрос для отправки только событий, вызванных совпадающими проблемами.) Я ввел:
issuekey = "Issue-ID" AND status = "In Review"
"Issue-ID", упомянутый в приведенной выше строке кода, предназначен для справки. На самом деле, это трехбуквенное слово, за которым следует номер вопроса, например: ABC-1
Это запустит действие (webhook) для перехода из определенного статуса. Мораль этой истории такова: все переходы, которые происходят из "this value"
в запросе JQL status="this value"
, уволят вешалку.
Изменить 1: Чтобы сделать веб-крюк более специфичным для перехода, чтобы он срабатывал для одного и только одного перехода, мы можем использовать JQL как:
status CHANGED FROM "In Progress" TO "Open"