我们使用带有 Git/Stash 的 TeamCity Professional 9.1.1 进行版本控制,我正在尝试让自动分支 merge 工作。
我们的场景是开发人员从名为 feature/name-of-feature 的 master 创建功能分支。一旦该功能准备好进行测试,他们就会将该分支 merge 到一个集成分支中。我们希望在 teamcity 中实现自动化。
我已经设法通过将此添加到我们的分支规范来自动构建功能和错误修复分支:在 master 分支的 VCS 根目录中
+:refs/heads/feature/*
+:refs/heads/bugfix/*
但我正在努力让功能分支自动 merge 到集成分支中。我添加了 an automatic merge build feature我已经尝试了“在分支中观察构建”和“merge 到分支中”的各种组合:对于“在分支中观察构建”,我目前有
+:feature*
+:bugfix*
对于“merge 到分支”:
integration
我也试过了
+:feature/*
+:bugfix/*
和
+:refs/heads/feature/*
+:refs/heads/bugfix/*
构建成功,但分支没有 merge 到集成中,日志中也没有消息。
知道我做错了什么吗?
最佳答案
我知道这是一篇旧帖子,但我只是遇到了未触发自动 merge 的相同情况(我使用的是 TC 2017)。请注意,因为我对 OP repo 知之甚少,所以我可能无法解决这个特定问题,但也许我可以帮助 future 的访客。通常,需要配置三样东西,VCS、自动 merge 本身和构建触发器。
- 在 VCS 设置中,您必须包括要监控 merge 的分支。这些将是默认分支的补充。
- 在自动 merge 构建功能中,您指定要 merge 的源分支和要 merge 到的单个分支。
- 触发器 是我失败的地方。在我的配置中,我正在监视 VCS 中默认分支的更改,这意味着在这个特定的构建配置中,从未构建要 merge 的分支(故意)。但根据 Team City 文档(我添加了粗体部分):
The Automatic Merge build feature tracks builds in branches matched by the configured filter and merges them into a specified destination branch if the build satisfies the condition configured (e.g. the build is successful). The merge occurs after the build finishes.
目前还不清楚的是, merge 发生在源分支上的构建完成之后。所以,简而言之,我的问题是我的触发器配置为仅构建默认分支,因此该功能分支永远不会建立,因此永远不会 merge 。
附言如果你问我我会改变行为以便 merge 发生而不管触发它的分支,但我知道很难控制功能分支有错误并且不编译的场景,TC 可能会运行构建在 merge 之前和 merge 之后,但这可能会对运行者产生很大的性能影响。
附言另一种选择是绕过它进行配置(这是我打算进一步做的)。因为我有单独的功能分支构建,所以我将在那里配置自动 merge ,以将刚刚构建的更改推送到主分支中。这应该也会自动触发主分支上的构建,完成循环。
关于git - TeamCity 中功能分支的自动 merge 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315165/