【发布时间】:2015-04-18 10:05:40
【问题描述】:
我的案例是关于在 Jenkins 作业定义中具有太多复杂的项目配置逻辑,随着时间的推移,这变得越来越难以处理。这也使您无法在其他构建/CI 工具下轻松执行构建作业。
如果这些项目是基于 Java 的,那么任何人都可能会告诉我使用 maven,因为我可以将大部分内容放在 pom.xml 文件中并将它们与项目一起使用。尽管如此,在我的情况下,更多的是关于 C/C++ 甚至 .NET 项目的所有构建脚本通常都在 bash 中(cygwin 是 Windows 的依赖项)。
我确实知道,理论上我可以在这些 bash 文件中对 jenkins 作业配置中的部分进行编码,但这显然需要付出巨大的努力,并且很难调整它们以允许基于外部启用和禁用不同的步骤条件。
所以,我在这里尝试的是实现构建系统的高度独立性,所以如果我愿意,我可以在很长一段时间内切换它。
您会推荐什么作为解决方案?显然,我需要可以在多平台上使用且不局限于特定构建系统的东西。
使用 maven 是否有意义,即使这些项目不是 Java 项目? 我个人不是 XML 配置文件的忠实粉丝,YAML、JSON 和 INI 被视为更多友好。
我们在谈论 Jenkins 配置中存在什么样的额外逻辑? 一种是部署,因为我希望能够部署到 Nexus 或类似的存储库,执行测试、代码覆盖,并可能在某处发布结果。
作为旁注,查看 Travis 配置文件让我想知道为什么 Jenkins 不采用这种方法。
【问题讨论】:
-
选择任何构建工具。不仅是 maven - 这是一个非常 Java 的工具。尝试 gradle、rake、make 等 :)
-
感谢@DracoAter - 我们已经在一些项目中使用了
make,但显然没有用于制作的部署插件之类的东西。我在rake方面有一些有限(良好)的经验,但 Ruby 在这里并不受欢迎,Python解决方案显然更容易接受,因为它在公司内部非常流行并且已经被列为依赖项(而不是红宝石)
标签: maven jenkins build-process travis-ci