我们已经将构建系统从CruiseControl移至jenkins以获得多平台产品。这是一个单一的整体工作:
1.检查更改
在性能 2.更新产品版本号文件
3.提交文件,以颠覆
4.通过SVN版本号到其他平台的本地结帐(性能原因)
5.构建(C++,Java)来
6.测试Jenkins - 将更新后的修订版传递给下游作业
在詹金斯,我们构建和测试分成2点的作业,建立触发测试。所有平台构建必须成功才能运行测试。我想让平台A上的测试运行,而不管平台B上的构建失败,但这是一个不同的问题。
我现在要解决的问题是构建阶段。当Jenkins开始时,它在开始工作时知道存储库的SVN_REVISION。我们在作业期间编译前增加构建编号,这是我们需要传递给下游作业的svn修订版本。我们需要确保在所有平台上检出相同的修订版,并且测试作业也检出相同的修订版。编译需要2-3个小时并测试大约7个小时,所以在构建过程中发生的一些新的提交已经足够正常,这些提交将包含在测试工作中。由于结账速度不同,我们在建立阶段也有提交,这些提交包含在一个平台中,但不包含在其他平台中。
我们已经尝试过参数化触发器插件,它可以通过SVN_REVISION - 修订时间作业开始,但没有通过版本号修改后的文件修订版。在其他情况下,我们使用参数化触发器,它可以满足我们的需求。
我正在考虑将svn修订号添加到属性文件中。我可以从其他作业的属性文件中读取修订,假设文件没有被更改,这可能是有风险的。 svn使用':'分隔属性,IIRC,其他属性使用key = value的'=',因为我们还读取了shell脚本中要使用的属性。还有其他的依赖项目,所以我会在我回到办公室并设置一个沙箱(半天的工作)时尝试这个。
任何人有任何建议或意见?
我会研究这一点。然而,我确实需要检查这个属性文件,因为这个项目的构建和测试以及其他项目都使用它。 –