现在我是TeamCity + Maven + Git的快乐用户。
我有一个像mvn deploy
这样的构建,它应该由每次提交到Git中触发。所有测试都运行,一切都很好。 =)
但是这个方案有一个问题,在我的机器上运行mvn release:prepeare
后,它会在Git中央创建两个提交(包括版本,1.1
和1.2-SNAPSHOT
)其中一个标有1.1
。
由于TeamCity每N秒检查一次最新版本,因此它实际上只构建版本为1.2-SNAPSHOT
的最新版本。这种方式构建1.1
实际上永远不会进入Maven回购。安全策略不允许我从我自己的机器运行mvn deploy
,Maven repo部署只能从TeamCity机器上完成。
因此,我想针对两个提交对repo运行两个构建。据我所知,只有在TeamCity中配置了一个版本,这是不可能的。
现在我正在使用变通方法:还有另外的构建只构建“发布”提交,这是使用提交正则表达式的触发器触发的。 另一种可能的解决方法是使用针对专门的“发布”分支构建的附加构建。
但是,我不想有变通办法,并希望强制TeamCity针对Git的每次提交运行构建。这也有助于我理解失败的测试。
答案 0 :(得分:0)
在TeamCity中使用一个单个版本构建内容的问题是该特定版本与分支绑定(让我们假设它是主干)。但是,当Maven执行release:prepare
时,它实际上会创建一个标记。当它创建此标记时,您没有它的构建,因为您的现有项目与原始分支绑定。
我的建议是弯曲公司政策,或为每个标签创建单独的构建。我们曾经使用TeamCity,我们遇到了你的问题。我是公司的构建经理,我也做了发布。我相信只要原始版本在CI服务器中正确传递,那么您完全可以mvn release:prepare release:perform
甚至mvn deploy
。