Jenkins + Git / Gerrit + Инкрементальные сканирование

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

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

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

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

Ive попробовал $ GIT_PREVIOUS_SUCCESSFUL_COMMIT, но он, похоже, не работал и, казалось, был неправильным для нас, потому что предыдущий компилятор Jenkins мог быть основан на совершенно другой ветке (родительской), поэтому Diff of whats changed не имеет смысла.

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

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

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

Спасибо!

Всего 1 ответ


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


Есть идеи?

10000