【问题标题】:Trigger Teamcity build on successful Git merge在成功的 Git 合并上触发 Teamcity 构建
【发布时间】:2017-04-09 17:22:18
【问题描述】:

我们希望我们的 Teamcity 服务器在有人将某些内容合并回主分支时自动构建。

为此,我们创建了一个新的 VCS 触发器并检查了Trigger a build on each check-in-选项。我们禁用了Quiet period mode 并为触发规则添加了正则表达式。 查看Java regex documentation 我创建了以下正则表达式: ^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$Trigger rules 文本块中转换为以下内容:+:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$+:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$:**(我完全不知道 :** 应该做什么,但 TC documentation 使用这有时)

这应该匹配如下内容:

合并分支'test'到'master'

合并分支'feature-cs-200'到'master'

但是,构建永远不会被触发。显然正则表达式与正确的模式不匹配。

有什么想法吗?

完成... 显然,Teamcity 已经决定 +:comment=^Merge branch '[a-zA-Z0-9\p{Punct}]+' into 'master'$ 正则表达式现在很好,只要提交消息与示例匹配,就会触发构建。也许有一些缓存或其他原因导致触发器不触发。

【问题讨论】:

  • 为什么不直接在提交到 master 时触发?合并将创建一个提交...
  • 我们想要这个的原因是因为 Teamcity 会以这种方式触发 2 个(或更多)构建,一个用于“合并人员”,一个用于要合并的分支的作者(因为选项:Include several check-ins in a build if they are from the same committer)。这不是一个大问题,但它会导致一些开销。因此,我们决定,目前,只有以这种方式合并的构建才会被触发。

标签: regex git teamcity


【解决方案1】:

我不确定您为什么只想在包含单词 “merge into” 的提交上触发构建。如果有人进行fast-forward 合并,则提交消息不会记录合并消息。他们将改为记录提交列表。你永远不会得到触发器列表。

无论如何,如果您仍然希望它仅在合并到 master 时运行,您可以在 master(only) 上设置 VCS 触发器,并在消息为 +:comment=into master:** 时运行 teamcity 目标

如果没有任何效果,您可以尝试将正则表达式 '+:comment=Merge branch .* 匹配到 master:**'

【讨论】:

  • Biswajit,我正在尝试做同样的事情,但不同之处在于我使用的是 bitbucket。 bitbucket 的合并注释有点不同。就像这样Merged in feature/my-lovely-awesome-branch 所以根据你的回答,稍微修改后,我为+:comment=Merged in feature* 的喜欢创建了一个触发规则。唉!它不会触发构建,但仍处于挂起状态。我错过了什么吗? bitbucekt 与我正在做的不同吗?提前谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2014-10-03
  • 2015-07-15
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多