git - TeamCity 触发 pull 请求与触发 merge

标签 git github teamcity

我们在 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 代码,则无需指定括号。

https://blog.jetbrains.com/teamcity/2013/02/automatically-building-pull-requests-from-github-with-teamcity/

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/

相关文章:

ios - 为什么在我尝试更新我的解决方案时 Xamarin Studio 说 "version control operation failed due to unmerged path error"?

mercurial - 设置要使用 Mercurial 标签拉取的 TeamCity VCS 根

regex - 按缩进模式处理文本文件

java - 如果您从标签创建 git 功能分支而不是发布分支,会发生什么?

ruby-on-rails - Heroku:帐户无权访问应用程序

带有日期的 git ls 文件?

git - 使用 GitHub Actions 自动更新 repo 的子模块

svn - 当项目树有二进制文件时,GIT、Mercurial、SVN 或其他版本控制工具能否正常工作?

git - 使用Rails推送到github错误

android - 在 flavor 中启用 proguard