Дженкинс + Мерзавец / Геррит + Добавочные сканов - PullRequest
0 голосов
/ 11 октября 2018

Итак, у нас есть сервер Jenkins, мы используем gerrit для проверки кода нашей ветки разработки, у нас установлен плагин сообщества Klocwork.

Наши Jenkins порождают сборки, которые +1 проверяют голоса при нажатии Gerrit patchset.

В настоящее время мы выполняем только сканирование Klocwork каждые несколько часов в нашей объединенной ветке Develop, и я хотел бы вместо этого выполнять инкрементное / разностное сканирование при каждом нажатии набора исправлений, чтобы в первую очередь предотвратить прохождение плохого кода.

Итак, я настроил плагин Klocwork в нашей конфигурации сборки Jenkins, но когда я добавляю шаг сборки инкрементного сканирования, так как мы используем Git, мне нужно войти в Previous Commit SHA.Я пробовал все, но безуспешно.

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

У нас тогда возникла идея, что предыдущий коммит, с которым он должен сравниваться, - это Parent SHA, а не последняя сборка Jenkins, которая может находиться или не находиться в одной ветви.
Итак, я добавил шаг сборки пакетного файла Windows перед нашей сборкой, которая получает Parent SHA1 с помощью git log, передает его в файл, а затем использует SET, чтобы установить переменную env, такую ​​как PARENT_COMMIT, с этим SHA1, который я затем попытался использовать с помощью%PARENT_COMMIT% в области «Предыдущий коммит SHA» Klocwork инкрементно, и сборка завершается неудачно, потому что она не может найти переменную.

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

Пожалуйста, помогите:)

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Вы используете плагин Jenkins Gerrit-Trigger для запуска сборок, верно?Таким образом, вы можете попытаться использовать $ GERRIT_PATCHSET_REVISION ^, который является первым родителем SHA1, определяемым переменной среды GERRIT_PATCHSET_REVISION.

...