【问题标题】:How to minimize build server project specific configuration?如何最小化构建服务器项目的特定配置?
【发布时间】: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


【解决方案1】:

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

然而,上述建议非常依赖于 Jenkins。

另一种可能性是 Ant 脚本。 AntExec 插件允许执行 Ant 脚本,如果需要,还可以使用 ant-contrib,使用与 Jenkins 的其余部分相同的工具安装过程。因此,您无需担心节点上是否安装了 Ant:Jenkins 会按需处理。

Ant 脚本的好处是它不像 Maven 那样依赖于 Java 概念,它是跨平台的(Windows 和 Linux),并且就像上面的 Groovy 脚本示例一样,它可以与源代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2019-02-20
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多