如何最小化构建服务器项目特定配置?

时间:2015-04-18 10:05:41

标签: maven jenkins build-process travis-ci

我的案例是关于在Jenkins作业定义中过多的复杂项目配置逻辑,并且随着时间的推移,这变得越来越难以处理。这也可以防止您在其他构建/ CI工具下轻松执行构建作业。

如果这些项目是基于Java的,那么任何人都可能告诉我使用maven,因为我可以将大部分内容放在pom.xml文件中并将它们与项目一起使用。在我的情况下,更多的是关于C / C ++甚至是.NET项目,所有构建脚本通常都是bash(cygwin是Windows的依赖)。

我知道理论上我可以在这些bash文件中对jenkins作业配置中的部分进行编码,但这显然需要付出很大的努力,并且很难调整它们以允许启用和禁用基于外部的不同步骤条件。

所以,我在这里尝试的是在构建系统上实现高度独立性,所以如果我想要,我可以在很长的将来切换它。

你会建议什么作为解决方案?显然,我需要一些可以用于多平台的东西,而不是针对特定的构建系统。

使用maven是否有意义,即使这些项目不是Java项目?我个人不是XML配置文件的忠实粉丝,YAML,JSON和INI被视为更多友好。

我们在讨论Jenkins配置中存在哪种额外逻辑? 一个人会部署,因为我希望能够部署到Nexus或类似的存储库,执行测试,代码覆盖并可能在某处发布结果。

作为旁注,查看Travis配置文件让我想知道Jenkins为什么不采用这种方法。

1 个答案:

答案 0 :(得分:1)

看看Groovy。 Jenkins允许直接使用Groovy代码来操作几乎所有内容。 Groovy脚本可用于处理项目特定配置中的所有内容,甚至可以与源代码一起检入。然后在Jenkins工作中,您只需要一个构建步骤来调用Groovy脚本。

然而,上述建议非常依赖詹金斯。

另一种可能性是Ant脚本。 AntExec 插件允许执行Ant脚本以及ant-contrib(如果需要),使用与Jenkins其余部分相同的工具安装过程。因此,您不必担心节点上安装了Ant:Jenkins将根据需要对其进行处理。

Ant脚本的好处在于,它不像Maven那样与Java概念相关,它是跨平台的(Windows和Linux),就像上面的Groovy脚本示例一样,它可以是与其他源代码一起签入。