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

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

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

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

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

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

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

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, добавьте шаг "Внедрить переменные среды" и укажите ранее созданный receient.txt

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

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

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

PreSend Script:

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.

Другие вопросы по тегам