Итак, у нас есть сервер 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 инкрементно, и сборка завершается неудачно, потому что она не может найти переменную.
Мне кажется, что это обычное дело, поэтому решение должно быть глупо простым, и мысделать его более сложным, чем нужно, но я не могу дляжизнь меня находит любую документацию, которая говорит мне, что, черт возьми, положить в эту коробку.
Пожалуйста, помогите:)
Спасибо!