Могу ли я прервать отправку сообщений электронной почты или предпринять другое действие, если команды Git не работают

У меня есть работа Дженкинса с:

  • Git SCM, который обновляет локальную рабочую область.
  • Сценарий оболочки, который также запускает некоторые команды Git CLI для выполнения некоторых утверждений и создает динамический файл recipients.txt для отправки ext-email.
  • Электронная почта Ext для отправки сообщений, которые должны быть только при успешном обновлении рабочей области, а затем на основе некоторого ошибочного утверждения, основанного на командах Git в тесте в сценарии оболочки. В настоящее время это запускается с помощью Failure - Any.

Что я хотел бы сделать, так это избежать конкретного электронного сообщения об ошибке в случае удаленного сбоя Git, вызывающего прерывание команды Git - она ​​должна отправляться только в том случае, если все команды Git завершаются успешно, но затем обнаруживают определенное условие.

Есть ли способ прервать сборку и не отправлять сообщения электронной почты Ext в случае сбоя команд Git из-за проблем на удаленном компьютере? Было бы лучше попытаться решить, как прервать сборку и отправить электронное письмо в случае сбоя Git, или есть какой-то триггер Email Ext, который мог бы избежать этого?


person javabrett    schedule 15.11.2016    source источник


Ответы (1)


Если я понимаю суть проблемы, вы просто не хотите, чтобы ошибка вызывалась, если команды Git CLI терпят неудачу. Вы можете выполнять команды оболочки git в блоке try/catch. Это должно предотвратить ненулевой код ошибки, и поэтому электронное письмо не будет отправлено.

sh """
    {
        git clonep https://...
        # oops, typo above would normally exit 1 (error)
    } || {
        echo Continuing
    }
"""
person Fo.    schedule 24.11.2016
comment
Это отлично подходит для 2-го набора процессов Git, тех, что находятся в блоке оболочки. Теперь я ищу, как заставить email-ext игнорировать сбой во встроенном блоке Git SCM. Если это не удастся, блок скрипта не будет выполняться, но Email was triggered for: Failure - Any все равно произойдет. То есть я не знаю, как попробовать/отловить блок SCM workspace. - person javabrett; 25.11.2016
comment
Я добавил некоторые детали к вопросу - я создаю динамический список получателей как recipients.txt. Я обнаружил, что если добавить wiki.jenkins-ci.org/display /JENKINS/pre-scm-buildstep Я могу гарантировать, что этот файл всегда очищается даже до запуска подключаемого модуля Git SCM, тем самым гарантируя, что в этих условиях я не получу сообщение об ошибке по электронной почте. - person javabrett; 25.11.2016