Запустить скрипт, если есть определенные изменения до и после слияния в Jenkins

#bash #git #jenkins

#bash #git #дженкинс

Вопрос:

Я пытаюсь заставить Jenkins запускать определенный скрипт, если есть фиксация слияния в главной ветке, в которой изменена конкретная строка в файле конфигурации. Проверить фиксацию слияния в master легко. Проблема в том, что я не могу понять, как проверить разницу до и после слияния.

Я пытался использовать git diff , чтобы сделать это в скрипте с помощью инструкции if. Лучший пример, который я нашел, который казался близким к правильному diff, это:

 git diff -G'changed_field=' HEAD^ HEAD -- config.cfg
  

Поскольку трудно точно увидеть, что происходит в Jenkins, из вывода на консоль задания, все, что я могу понять, это то, что он не улавливает изменения, поскольку я не вижу никакого вывода из этого. Разница действительно работает, когда я запускаю ее в своей локальной ветке, чтобы проверить мои последние 2 коммита на master.

Ответ №1:

Если HEAD является фиксацией слияния, вы могли бы, по крайней мере, сделать:

 git show @
# or, more precisely:
git show @:/config.cfg
  

Из git показать справочную страницу:

Для фиксаций он показывает сообщение журнала и текстовую разницу.
Он также представляет фиксацию слияния в специальном формате, созданном git diff-tree --cc .

Это покажет, что было до и что было добавлено / удалено в результате этого слияния.