2011-07-05 30 views
0

现在我是TeamCity + Maven + Git的开心用户。 我有一个像mvn deploy这样的构建应该触发每个提交到Git。所有的测试都运行,一切都很好。 =)如何强制TeamCity构建每个提交到GIt?

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

因此,我想运行这两个版本对两个承诺回购。据我所知,只有在TeamCity中配置一个构建时,这是不可能的。

现在我正在使用解决方法:有额外的构建只构建“发布”提交,这是使用提交regex触发器触发的。 另一个可能的解决方法是使用针对专门的“发布”分支构建的附加构建。

但是,我不想有解决方法,并希望强制TeamCity运行构建对每个提交到Git。这也将帮助我理解失败的测试。

回答

0

让事情从构建一个 TeamCity中的单个构建的问题是该特定构建绑定到分支(让我们假设它是中继)。但是,当Maven执行release:prepare时,它实际上会创建一个标签。当它创建这个标签时,你没有构建它,因为你现有的项目绑定到原始分支。

我的建议是要么弯曲您的公司政策,要么为每个标签创建单独的版本。我们过去使用TeamCity,我们遇到了您的问题。我是公司的构建经理,我也做了释放。我相信,只要原始版本在CI服务器上正确传递,那么对于您来说,执行mvn release:prepare release:perform甚至mvn deploy都是完全正确的。

+0

看起来没有解决方法,我应该从教学中释放。因此,我将创建一个没有触发器的额外构建,只应由发布管理器运行,以防万一发布构建并将其部署到内部maven回购。 –

相关问题