我们在 GitHub 分支中构建功能(一个功能分支对应一个功能)。我们有一个 develop 分支和一个 master 分支。两者都应始终为绿色。
我们使用 TeamCity 进行构建和部署。我想知道的是,当创建 pull 请求时(从功能分支到开发),TeamCity 会自动构建和测试请求,然后启动 EC2 实例以便可以对其进行手动测试。然后 merge pull 请求时,TeamCity 构建、测试并创建一个 docker 镜像,我们将其推送到 ECS 上。
这一切都有效,除了我们的触发错误。
1) 为了构建 pull 请求,VCS 根有一个默认分支设置为 develop
并且有一个分支规范 +:refs/pull/(*/merge)
- 我们不想单独构建 pull 请求,而是构建 merge 代码。然后我们将其部署到 EC2 实例上以进行手动测试。
2) TeamCity 向 GitHub 报告构建 pull 请求的状态,并在使用 EC2 实例进行手动测试后,将代码从功能分支 merge 到开发中。此时,我们希望在 develop 中构建代码,然后将新的微服务推送到 Amazon ECS 上。对于将 pull 请求 merge 到开发中后的构建,VCS 根目录有一个默认分支设置为 develop
。
实际上,1 总是被触发,例如用于提出 pull 取请求和 merge 到开发中。 2 仅在 merge 到 develop 时触发,这是正确的。
如有任何帮助,我们将不胜感激。
编辑
我已经阐明了我们在上面使用的两个构建配置
最佳答案
根据文档,如果您只想构建 pull 请求的 merge 代码,则无需指定括号。
Now, (...) see whether the particular request was the result of a merge or just the branch itself. For that, we can specify the following in the Branch Specification
+:refs/pull/(*/merge)
创建 pull 请求后,TeamCity 将仅测试 merge 代码的结果到开发中。
使用 TeamCity automatic merge
功能(包含在 TC9 中),将在 develop
分支上触发新提交,这将运行您的配置(构建于 develop,测试开发、部署...) 正确
因此,您可能只需要将分支规范从:+:refs/pull/(*/merge)
替换为 +:refs/pull/*/merge
关于git - TeamCity 触发 pull 请求与触发 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38619518/