应该如何设置 Jenkins 中的 Ivy 构建项目?

Posted

技术标签:

【中文标题】应该如何设置 Jenkins 中的 Ivy 构建项目?【英文标题】:How are Ivy build projects in Jenkins supposed to be set up? 【发布时间】:2012-01-15 07:00:04 【问题描述】:

我正在运行以下版本:

Jenkins v1.440 Jenkins Ivy 插件 v1.20

我目前正在尝试构建的 SVN 中的分支如下所示:

分支 产品 模块1 module1.build(ant 构建文件) ivy.xml(module1 ivy 描述符文件) 模块2 module2.build(ant 构建文件) ivy.xml(module2ivy 描述符文件) 模块3 module3.build(蚂蚁构建文件) ivy.xml(module3ivy 描述符文件)

目前我已经在 J​​enkins 中建立了单独的 Ivy 项目来检查 SVN 中的每个模块,然后直接运行 ant 构建文件。这很好用(尽管我没有看到任何模块依赖项)。

从插件文档看来,我应该在 Jenkins 中设置一个 Ivy 项目,并从 SVN 中的“branch\product\”获取,而不是“branch\product\module1”、“branch\product\module2” “?

如果是这样,我如何将这个 Ivy 项目指向每个组件的每个构建文件?我应该为所有组件使用一个构建文件吗?

这将如何与多个 SVN 位置一起使用? Ivy 能否在其他 SVN 位置找到模块依赖项?如果我有同一个组件的多个分支怎么办? Ivy 是否只是在特定路径中的所有 Ivy 描述符文件中搜索二进制依赖项?

如果您需要任何其他信息来帮助,请告诉我。

【问题讨论】:

【参考方案1】:

您当前设置它的方式是一种有效的方式(尽管如果您的模块确实相互依赖,您应该会看到工作依赖关系)。将其设置为一个多模块 Ivy 项目是另一种有效的选择,其好处是您只需管理每组相关模块的一个作业配置。

有两种方法可以进行多模块 Ivy 构建。

    创建一个分支级构建文件,智能地委派给所有 Ivy 模块。 在每个模块中标准化您的 Ant 构建文件名(例如 build.xml),并让 Jenkins Ivy 插件将每个模块构建作为单独的作业运行。

有关如何执行 #1 的示例,请参阅:

常春藤文档 - http://ant.apache.org/ivy/history/latest-milestone/tutorial/multiproject.html Jenkins Ivy 项目中的示例 - https://github.com/jenkinsci/ivy-plugin/tree/master/src/test/resources/example-project

要执行 #2,您可以展开 Ivy 项目作业配置的 Ivy 模块配置部分中的高级部分,然后选中“将模块构建为单独的作业”选项。您的 Ant 构建文件名需要在每个模块中相同,理想情况下,要调用的目标和 ivy.xml 文件的位置也相同(尽管如果需要,可以在每个模块中覆盖最后两个)。从那时起,作业配置中的所有路径都必须与每个模块目录相关(例如,归档的工件只是“target/**”或其他任何内容,并且在构建后将应用于每个模块)。

要处理同一组 Ivy 模块的多个分支,您需要为每个分支创建一个单独的 Ivy 项目,并在 Ivy 项目配置中为“Ivy 分支”字段指定唯一值。

【讨论】:

以上是关于应该如何设置 Jenkins 中的 Ivy 构建项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ivy 构建和单元测试?

避免 Jenkins 不必要的 IVY 快照发布

Jenkins Ivy 插件:寻找错误的 ivy.xml 文件

Jenkins:基于linux构建ivy项目

为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?

Jenkins Ivy Job 创建多个工作区