Итак, у нас есть сервер Jenkins, мы используем gerrit для проверки кода нашей ветки разработки, у нас установлен плагин сообщества Klocwork.
Наш Jenkins порождает сборки, которые получают +1 голос за проверку при отправке патчей Gerrit.
В настоящее время мы сканируем Klocwork только каждые несколько часов в нашей объединенной ветке Develop, и я хотел бы вместо этого выполнять инкрементное / дифференциальное сканирование при каждой отправке набора исправлений, чтобы предотвратить появление плохого кода в первую очередь.
Поэтому я настраиваю плагин Klocwork в нашей конфигурации сборки Jenkins, но когда я добавляю шаг сборки с инкрементным сканированием, поскольку мы используем Git, мне требуется ввести SHA предыдущей фиксации. Я пробовал все, но безуспешно.
Я пробовал $GIT_PREVIOUS_SUCCESSFUL_COMMIT, но это не сработало и в любом случае показалось нам неправильным, потому что предыдущая фиксация Jenkins могла быть основана на совершенно другой ветке (родительской), поэтому разница в том, что изменилось, не имела бы смысла.
Затем у нас возникла идея, что предыдущий коммит, с которым он должен сравниваться, является родительским SHA, а не обязательно последней сборкой Jenkins, которая может быть или не быть в той же ветке.
Поэтому я добавил шаг сборки пакетного файла Windows перед нашим сборка, которая получает родительский SHA1 с помощью журнала git, передает его в файл, а затем использует SET для установки переменной env, такой как PARENT_COMMIT, с этим SHA1, который я затем попытался использовать %PARENT_COMMIT% в области «Previous Commit SHA» Klocwork инкрементный и сборка завершается неудачно, потому что не может найти var.
Я чувствую, что это обычное дело, поэтому решение должно быть до глупости простым, и мы делаем его намного сложнее, чем нужно, но я не могу найти никакой документации, которая говорит мне, что, черт возьми, поставить. в этой коробке.
Пожалуйста помоги :)
Спасибо!