Я пытаюсь реализовать измененный рабочий процесс Integration-Manager, аналогичный описанному в ProGit .
Вместо выполнения integration manager
слияния, я хочу, чтобы разработчики слились локально, прежде чем публиковать свой код, и я хочу Quality Gateway
, который обеспечивает соблюдение наших стандартов непрерывной интеграции, таких как минимальный уровень покрытия кода и 100% прохождение тестов, прежде чем разрешить коду входить в благословенный репозиторий.быть проверенным другими разработчиками.Идея состоит в том, что код в благословенном хранилище всегда соответствует минимальному стандарту, который мы определяем и всегда строим.
Я хочу, чтобы Дженкинс выполнял роль шлюза качества, только передавая код в благословенное хранилище при успешной сборке.
До сих пор я настроил систему таким образом, чтобы имелись следующие общедоступные репозитории: благословенный репозиторий, репозиторий на сервере сборки для Jenkins, который является голым репозиторием, доступным через gitosis, и, конечно, разработчиком.собственные репозитории.
У меня есть разработчики, извлекающие из благословенного репо и толкающие в интеграционное репо.Теперь я пытаюсь заставить Дженкинса подтолкнуть успешные сборки из репозитория интеграции к благословенному репо.
Пока что я видел только один вариант, похожий на тот, который я пытаюсь достичь, - этоПараметр «Push Only If Build Succeeds
» в настройках Git Publisher в действиях Post Build в конфигурации проекта Jenkins.Однако эти параметры не позволяют вам указать push-адрес или удаленный канал, на который нужно нажать.
Насколько я понимаю, настройки Git Publisher будут толкать клоны репозитория Jenkins в его рабочую область обратно в общедоступную Jenkins.репо, но я хочу отправить на другой пульт, благословенный репозиторий.
У кого-нибудь есть предложения, как заставить Дженкинса толкнуть к благословенному репо?
РЕДАКТИРОВАТЬ 0 : Я попытался поместить шаг Post для выполнения команды 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 считает, что нечего нажимать, потому что определенно есть.