Интеграция Git Slave с Дженкинсом
Как лучше всего интегрировать git-slave с jenkins? Было бы возможно сделать это без написания полного плагина? Любые ярлыки я мог бы взять? Меня больше всего интересует тиражирование:
(1) Опрос и запуск сборки на основе изменения git-slave-репозитория git или его дочерних элементов.
(2) Распечатка коммитов во всех репозиториях со времени предыдущей сборки.
Просто посмотреть, сделал ли кто-нибудь еще что-нибудь в этой области. Мне нравится git-slave, так как он кажется менее подверженным ошибкам для среднего пользователя scm, чем другие методы с несколькими хранилищами (т.е. подмодуль git, поддерево git). Я вижу, что в репо есть плагин, но, к сожалению, репо слишком тесно связано с герритом.
1 ответ
Без особых подробностей о Дженкинсе, я думаю, что для
(1) Опрос и запуск сборки на основе изменения в git-slave git-репозитории или его дочерних элементах.
Вы должны будете написать плагин на одном конце или другом. Если вы не хотите писать плагин Jenkins, вам нужно написать перехват Git после получения или что-то в этом роде, что может вызвать сборку Jenkins для репо (или его родителя, если он является подчиненным). Настройка перехвата пост-получения, вероятно, более приятна, поскольку устраняет накладные расходы на опрос, и этот вопрос дает ссылку на сообщение в блоге, в котором говорится об этом.
Для (2) Распечатка коммитов во всех репозиториях с момента предыдущей сборки
наиболее вероятным подходом, по-видимому, будет сборка Jenkins с размещением тега в репозитории, а подчиненные / дочерние - с помощью gits tag
когда он завершает сборку, а затем использует что-то вроде gits log $last_build_tag..HEAD
чтобы показать все коммиты, начиная с этой сборки. Я бы не рекомендовал перерабатывать теги, а использовать несколько меток времени (например, jenkins-build-2013-06-19-10-24) и извлекать $last_build_tag из вывода git tag | sort -nr | sed '/jenkins-build/q'
(нет необходимости использовать gits tag
предположительно, набор тегов Jenkins будет одинаковым для всех репозиториев).
Эти теги определенно загромождают пространство тегов, в идеале вы должны делать это в репо, который извлекает только у других, чтобы вы не выдвинули эти теги и не испортили все остальные репо.