#git #github #jenkins #непрерывная_интеграция
Есть 2 jobs, в них один и тот же проект; один job запускается только тогда, когда обнаруживается новая версия git; второй job должен запускать последнюю версию git, build которой был успешным в 1-ом job. Как сделать, чтобы 2-ой job запускал последний успешный build 1-го job?
Ответы
Ответ 1
Я не очень большой специалист в jenkins, но я бы делал так. Первая задача по выполнению компиляции проекта, копирует скомпилированные файлы, нужные для работы программы, в отдельную папку. Грубо говоря, она делает инсталляцию. Вторая задача при запуске проверяет наличие файлов в папке и запускает, если они есть. Так как неудачная компиляция проекта в первом случае не будет удалять скомпилированные файлы с специальной папки, то вторая задача всегда будет иметь возможность запускать "последний успешный билд".Ответ 2
Способов много. Я бы в первом проекте сохранял GIT_COMMIT в файл (echo GIT_COMMIT=$GIT_COMMIT > env.properties, а во втором проекте копировал бы этот файл из последней успешной сборки первого проекта (плагин Copy artifact) и использовал бы в shell-скрипте или импортировал информацию плагином EnvInject, что безопаснее. А большие мальчики делают HTTP-запрос к API (URL вида http://твой_сервер/job/твой_проект/lastStableBuild/api/json?tree=actions[lastBuiltRevision[branch[*]]]) и анализируют полученный JSONОтвет 3
В идеальной CI системе эта схема должна работать так: первый билд делает сборку и публикует результат (например, бинарники) в качестве артефакта второй билд должен зависеть от первого: брать из последнего успешного первого билда его артефакты и запускаться либо вручную, либо автоматически В ТимСити, например, это все есть из коробки. Что касается Дженкинса: артефакты для первого билда он сгенерит плагин Copy Artifacts поможет второму билду скопировать артефакты из первого билда (причем нужно указать, что брать нужно из Last successful build), а автоматического запуска второго билда есть разные способы, в т.ч. и встроенные
Комментариев нет:
Отправить комментарий