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

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

https://github.com/JohnReedLOL/EmailTestingBot

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 08 ноября 2018

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

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

Часть 2 Как получить Email Id и другие вещи от GitCommit. Для этого Jenkins sever должен иметь установленную команду 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

...