Рабочий процесс Git диспетчера интеграции с использованием Jenkins / Hudson

Я пытаюсь реализовать модифицированный рабочий процесс Integration-Manager, аналогичный тому, который описан в ProGit .

Diagram of the Integration-Manager workflow

Вместо диспетчера интеграции , выполняющего слияние, я хочу, чтобы разработчики выполняли слияние локально перед публикацией своего кода, и мне нужен шлюз качества , который обеспечивает соблюдение наших стандартов непрерывной интеграции, таких как минимальный уровень покрытия кода и прохождение 100% тестов, прежде чем разрешить коду войти в благословенный репозиторий для проверки другими разработчиками. Идея состоит в том, что код в благословенном репозитории всегда соответствует минимальным стандартам, которые мы определяем и всегда строим.

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

Пока что я настроил систему так, чтобы были следующие общедоступные репозитории: благословенный репозиторий, репозиторий на сервере сборки для Jenkins, который представляет собой чистый репозиторий, доступный через gitosis, и, конечно же, собственные репозитории разработчика.

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

Пока что единственный вариант, который я видел, похоже на то, что я пытаюсь достичь, - это параметр « Push Only If Build Succeeds » в настройках Git Publisher в действиях Post Build Actions. в конфигурации проекта Дженкинса. Однако эти параметры не позволяют указать URL-адрес или удаленный пульт для отправки.

Насколько я понимаю, настройки Git Publisher будут перемещать репозиторий Jenkins клонов в его рабочее пространство обратно в публичное репозиторий Jenkins, но я хочу протолкнуть на другой удаленный, благословенный репозиторий.

Есть ли у кого-нибудь предложения, как я могу заставить Дженкинса нажать на благословенное репозиторий?

РЕДАКТИРОВАТЬ 0 : Я попытался поместить шаг публикации, чтобы выполнить команду push в мой благословенный репозиторий. Кажется, это работает, поскольку ошибок нет. Однако никаких изменений не вносится, и журналы показывают, что git думает, что все обновлено:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO]     ------------------------------------------------------------------------ 
[INFO] Total time: 1 minute 7 seconds 
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 
[INFO] Final Memory: 19M/45M 
[INFO] ------------------------------------------------------------------------ 
channel stopped 
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push git@example.com:my-project.git --all
Everything up-to-date

Я не знаю, почему git думает, что нечего нажимать, потому что это определенно есть.

8
задан chrisbunney 18 November 2011 в 16:19
поделиться