Уведомления о сбоях в работе jenkins - с конвейером от scm - PullRequest
0 голосов
/ 15 ноября 2018

У нас есть несколько заданий конвейера jenkins, настроенных как «конвейер от scm», которые извлекают файл jenkins из github и запускают его. Внутри jenkinsfile достаточно обработки ошибок, основанных на попытках / перехвате, чтобы перехватить условия ошибок и уведомить нужные каналы. В этом блоге подробно рассказывается о том, как этого добиться.

Однако, если сначала возникает проблема с загрузкой файла jenkins, задание молча завершается неудачей. Как генерировать уведомления об общих сбоях запуска задания еще до запуска конвейера?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете проверить файл Jenkins перед его отправкой в ​​хранилище.

Конвейерная строка Linter

Также имеется несколько Интеграций IDE

0 голосов
/ 29 ноября 2018

В конвейере Jenkins SCM отсутствует условие выполнения, аналогичное catch/finally, которое будет вызываться в случае сбоя загрузки Jenkinsfile, и я не думаю, что оно будет в будущем.

Однакоесть этот global-post-script , который запускает скрипт groovy после каждой сборки каждого задания в Jenkins.Вы должны поместить этот сценарий в каталог $JENKINS_HOME/global-post-script/.

С его помощью вы можете отправлять уведомления или электронную почту администраторам на основании проекта, который провалился, и / или причины / исключения неудачи.

Пример кода, который вы можете поместить в скрипт

if ("$BUILD_RESULT" != 'SUCCESS') {
  def job = hudson.model.Hudson.instance.getItem("$JOB_NAME")
  def build = job.getBuild("$BUILD_NUMBER")
  def exceptionsToHandle = ["java.io.FileNotFoundException","hudson.plugins.git.GitException"]
  def foundExection = build
    .getLog()
    .split('\n')
    .toList()
    .stream()
    .filter{ line -> 
      !line.trim().isEmpty() && !exceptionsToHandle.stream().filter{ex -> line.contains(ex)}.collect().isEmpty()
    }
    .collect()
    .size() > 0;
  println "do something with '$foundExection'"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...