Как получить последний коммит программно в коде Java? Дженкинс / сб

Я начал писать небольшой инструмент, который в основном может что-то делать (например, компилировать или тестировать код), а затем отправлять электронное письмо, если это не удается.

https://github.com/JohnReedLOL/EmailTestingBot

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

Например, я хочу, чтобы он делал что-то вроде: Git: Смотрите мой последний коммит

Где электронная почта в основном говорит:

Тема: Результаты теста

Сообщение: все ваши тесты прошли в dev для коммита 0e39756383662573.

Дженкинс уже предоставляет эту функциональность? Я хочу, чтобы мои настройки были отправлены по электронной почте человеку, который вставил самый последний коммит.

Кроме того, есть ли способ, которым я могу получить электронную почту автора самого последнего коммита программно (например, с http://www.eclipse.org/jgit/ или http://javagit.sourceforge.net/)?

Мне все равно, как я получаю уведомления по электронной почте - я просто хочу их и не могу использовать TravisCI.

1 ответ

Я постараюсь дать решения по частям.

Часть 1: Да, вы можете запустить ShellScript(Команды оболочки) из Jenkins Link.

Часть 2 Как получить идентификатор электронной почты и другие материалы от GitCommit. Для этого на сервере Jenkins должна быть установлена ​​команда git. Создайте один файл конфигурации ex. /conf/reference который имеет

app {
  git {
     commit = "CURRENT_COMMIT"
     repo = "CURRENT_REPO"
     timestamp = "CURRENT_TIMESTAMP"
     emailId = "EMAIL_ID"
     }
}

При сборке запускайте команду

sed -i'' "s/CURRENT_COMMIT/$(git rev-parse HEAD)/g" conf/reference.conf
sed -i'' "s^CURRENT_REPO^$(git config --get remote.origin.url)^g" conf/reference.conf
sed -i'' "s/CURRENT_TIMESTAMP/$(git show -s --format=%ci HEAD)/g" conf/reference.conf
sed -i'' "s/EMAIL_ID/git --no-pager show -s --format='%an <%ae>' CURRENT_COMMIT/g" conf/reference.conf

код выше поместит значения в reference.conf, Теперь вы можете использовать, чтобы получить информацию и отправить письмо. Насколько я знаю, Дженкинс дает возможность отправлять электронную почту. Дженкинс работает над переменными среды, а не помещает это в reference.conf Вы можете поместить это в переменную окружения и использовать переменные окружения для отправки почты.

К вашему сведению: я не тестировал этот код, но, насколько я помню, работая в Jenkins, мы обычно отправляли электронную почту таким способом.

#HappyCoding

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