Изменение электронной почты получателей электронной почты на основе ветки, развернутой в плагине email-ext
Плагин Email-ext отлично работает, когда дело доходит до отправки электронной почты.
Чтобы реализовать условия, соответствующие перед отправкой электронного письма, я обнаружил, что в нем есть функция для написания заранее подготовленных сценариев. Но я не могу найти соответствующую документацию для написания сценария.
Мое требование:
Если развертываемая ветка является основной или разрабатываемой, то я хочу использовать один набор получателей электронной почты, а другой набор электронных писем.
Предоставьте мне правильный способ начать работу со сценариями
- Можем ли мы написать сценарий Bash там
- Можем ли мы использовать переменные, установленные в скрипте 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.