Изменение электронной почты получателей электронной почты на основе ветки, развернутой в плагине email-ext

Плагин Email-ext прекрасно работает, когда дело доходит до отправки электронной почты.

Чтобы реализовать условия для соответствия перед отправкой электронной почты, я обнаружил, что у него есть функция для написания сценариев предварительной отправки. Но я не могу найти подходящую документацию о том, как написать сценарий.

Мое требование:

Если развертываемая ветвь является основной или развиваемой, я хочу использовать один набор получателей электронной почты, а другой набор электронных писем.

Подскажите, как правильно начать работу со сценариями

  1. Можем ли мы написать там bash-скрипт
  2. Можем ли мы использовать переменные, установленные в сценарии bash, для сценария отправки

person Tara Prasad Gurung    schedule 15.05.2018    source источник
comment
Есть два простых варианта: (1) использовать две отдельные сборки, (2) предпочтительнее: использовать сборку Jenkins Multibranch Pipeline и зафиксировать конкретную конфигурацию ветки непосредственно в исходном коде соответствующей ветки.   -  person Oleg Sklyar    schedule 15.05.2018
comment
@OlegSklyar, но с Multipbranch Pipeline у ​​нас будет большое количество развернутых веток, так как может быть большое количество веток в битбакете, когда большое количество разработчиков работает рядом с мастером и правильно разрабатывает, так что в этом случае это может быть ужасно правильно, если я прав   -  person Tara Prasad Gurung    schedule 15.05.2018
comment
Вы можете использовать регулярное выражение, чтобы исключить все ветки, которые вам не нужны в спецификации задания. Мы используем его, чтобы включить все ветки релиза + master + dev, но исключить все ветки функций. Конечно, вы можете найти регулярное выражение, которое вам подходит.   -  person Oleg Sklyar    schedule 15.05.2018


Ответы (2)


2) вы можете использовать любые переменные, которые вы хотите, переменные Jenkins env или любую переменную, которую вы добавляете с помощью плагина «env inject».

Что касается вашего вопроса:

Если развертываемая ветка является основной или разрабатывается, я хочу использовать один набор получателей электронной почты, а другой набор электронных писем.

Пример:

1) выполнить шаг оболочки в действиях после сборки

if [ $BRANCH == "develop" ];then
   echo DEV_RECIPIENTS=dev1@mail,dev2@mail,dev3@mail > recipient.txt
else
   #assuming only master branch is left
   echo MASTER_RECIPIENT=master@mail,master2@mail > recipient.txt
fi

2) С помощью плагина EnvInject добавить шаг "Внедрить переменные среды" и указать ранее созданный файл receive.txt

Теперь вы можете использовать DEV_RECIPIENT или MASTER_RECIPIENT (зависит от построенной ветки) с помощью ${DEV_RECIPIENT} или ${MASTER_RECIPIENT}.

3) просто вставьте эту переменную в поле шага extEmail «Список получателей»: ${DEV_RECIPIENT}

person hopetds    schedule 15.05.2018
comment
я не могу найти параметры execute shell в шагах действий после сборки jenkins. Также может быть небезопасно использовать плагин ENVInject, так как предупреждение появляется на странице его установки. - person Tara Prasad Gurung; 15.05.2018

Выглядит сложно, но я решил это так:

Сценарий предварительной отправки:

if ("develop"=="${BRANCH_TAG_NAME}" || "master"=="${BRANCH_TAG_NAME}") {
          recipients = msg.getRecipients(javax.mail.Message.RecipientType.TO)
          msg.setRecipients(javax.mail.Message.RecipientType.TO, "email1,email2")
        }

     else{
recipients = msg.getRecipients(javax.mail.Message.RecipientType.TO)
msg.setRecipients(javax.mail.Message.RecipientType.TO,"email2,email3")
    }

Где:

BRANCH_TAG_NAME — это имя ветки, значение которой задается в сценарии bash. Похоже, мы можем легко получить доступ к переменной, определенной в скрипте bash, в скрипт preSend.

person Tara Prasad Gurung    schedule 16.05.2018