Как заставить TeamCity автоматически объединить ветку функций Git с master и не выполнить сборку в случае конфликтов слияния?
наш цикл разработки/выпуска работает следующим образом:
- разработчик создает ветку, реализует функцию
- разработчик указывает, что функция готова к приемочному тестированию (UAT)
- Tester развертывает ветвь функции и принимает (или отклоняет) функцию
принятые функции затем объединяются в главную ветвь тестер, и поэтому будет выпущен во время следующего цикла выпуска (мы развертываем Транк / мастер-код еженедельно).
У нас есть разочарования с конфликтами слияния, потому что к тому времени, когда тестер удалил функцию и обнаружил, что она не будет сливаться чисто, разработчик, который работал в ней, обычно переходил к чему-то другому.
мы рассматриваем решение, в соответствии с которым каждая ветвь функций автоматически объединяется TeamCity против текущей главной ветви, а любая сборка, приводящая к конфликту слияния, считается неудачной сборкой - это будет дайте нам раннюю видимость проблемных слияний, чтобы мы могли исправить их раньше.
TeamCity, похоже, не имеет встроенной поддержки для этого рабочего процесса (т. е. когда толчок происходит с веткой X, checkout master, merge branch X на него, build, unit-test, create package). Кто - нибудь создал аналогичный рабочий процесс с помощью TeamCity и Github-возможно, используя пользовательские цели msbuild?
EDIT: я должен уточнить, что мы используем Github, но в настоящее время мы не используем pull запросы - похоже, это то, что я должен расследовать. :)
1 ответов
Если вы используете запросы GitHub и Pull, то проверьте сообщение в блоге Хади Харири о том, как получить запрос pull после его слияния с master:
http://hadihariri.com/2013/02/06/automatically-building-pull-requests-from-github-with-teamcity/
Github делает автоматическое слияние для каждого запроса на вытягивание, и результирующее слияние доступно (хотя в значительной степени недокументировано) как
git fetch origin +refs/pull/298/merge
где ИД запроса тяги 298. И таким образом, все объединенные запросы pull могут быть извлечены с подстановочным знаком вместо идентификатора в Teamcity и построены автоматически. Спецификация ветви будет выглядеть следующим образом:
+refs/pull/*/merge
EDIT: вы говорите, что не используете запросы pull, поэтому я думаю, что вы можете сделать это с помощью некоторых команд git. Я не пробовал это сам, так что это всего лишь несколько советов, чтобы вы начали.
- использовать филиала спецификация в Teamcity, чтобы получить ветку. Установить режим проверки чтобы проверить код на агент
- на шаге сборки объедините главную ветвь в целевую ветвь. Если master недоступен на агенте, вам может потребоваться сначала получить его. Если вы получите какие-либо ошибки, то сборка завершится неудачно.
чтобы проверить конфликты слияния, один из них стратегии должны работать.