如何强制TeamCity构建每个提交到GIt?

时间:2011-07-05 07:08:56

标签: git maven teamcity

现在我是TeamCity + Maven + Git的快乐用户。 我有一个像mvn deploy这样的构建,它应该由每次提交到Git中触发。所有测试都运行,一切都很好。 =)

但是这个方案有一个问题,在我的机器上运行mvn release:prepeare后,它会在Git中央创建两个提交(包括版本,1.11.2-SNAPSHOT)其中一个标有1.1。 由于TeamCity每N秒检查一次最新版本,因此它实际上只构建版本为1.2-SNAPSHOT的最新版本。这种方式构建1.1实际上永远不会进入Maven回购。安全策略不允许我从我自己的机器运行mvn deploy,Maven repo部署只能从TeamCity机器上完成。

因此,我想针对两个提交对repo运行两个构建。据我所知,只有在TeamCity中配置了一个版本,这是不可能的。

现在我正在使用变通方法:还有另外的构建只构建“发布”提交,这是使用提交正则表达式的触发器触发的。 另一种可能的解决方法是使用针对专门的“发布”分支构建的附加构建。

但是,我不想有变通办法,并希望强制TeamCity针对Git的每次提交运行构建。这也有助于我理解失败的测试。

1 个答案:

答案 0 :(得分:0)

在TeamCity中使用一个单个版本构建内容的问题是该特定版本与分支绑定(让我们假设它是主干)。但是,当Maven执行release:prepare时,它实际上会创建一个标记。当它创建此标记时,您没有它的构建,因为您的现有项目与原始分支绑定。

我的建议是弯曲公司政策,或为每个标签创建单独的构建。我们曾经使用TeamCity,我们遇到了你的问题。我是公司的构建经理,我也做了发布。我相信只要原始版本在CI服务器中正确传递,那么您完全可以mvn release:prepare release:perform甚至mvn deploy