Jenkins 中的 Ivy 构建项目应该如何设置?
我正在运行以下版本:
- Jenkins v1.440
- Jenkins Ivy Plugin v1.20
我当前尝试构建的 SVN 分支如下所示:
- branch
- 产品
- 模块1
- module1.build(ant 构建文件)
- ivy.xml(模块1 ivy描述符文件)
- 模块2
- module2.build(ant 构建文件)
- ivy.xml(module2ivy 描述符文件)
- 模块3
- module3.build(ant 构建文件)
- ivy.xml(module3ivy 描述符文件)
- 模块1
- 产品
目前我已经在 Jenkins 中设置了单独的 Ivy 项目来检查 SVN 中的每个模块,然后直接运行 ant 构建文件。这工作正常(尽管我没有看到任何模块依赖项)。
从插件文档看来,我应该在 Jenkins 中设置一个 Ivy 项目,并从 SVN 中的“branch\product\”获取,而不是“branch\product\module1”、“branch\product\module2”?
如果是这种情况,我如何将这个 Ivy 项目指向每个组件的每个构建文件?我应该为所有组件使用一个构建文件吗?
这如何与多个 SVN 位置一起工作? Ivy 是否能够在其他 SVN 位置找到模块依赖项?如果我有同一组件的多个分支怎么办? Ivy 是否只是在特定路径中的所有 Ivy 描述符文件中搜索二进制依赖项?
如果您需要任何其他信息来帮助,请告诉我。
I'm running the following versions:
- Jenkins v1.440
- Jenkins Ivy Plugin v1.20
The branch in SVN I'm currently trying to build looks like this:
- branch
- product
- module1
- module1.build (ant build file)
- ivy.xml (module1 ivy descriptor file)
- module2
- module2.build (ant build file)
- ivy.xml (module2ivy descriptor file)
- module3
- module3.build (ant build file)
- ivy.xml (module3ivy descriptor file)
- module1
- product
Currenly I've set up separate Ivy projects in Jenkins to check out each module in SVN, and then run the ant build file directly. This works fine (although I see no module dependencies).
From the plugin doc it looks like I should be setting up one Ivy project in Jenkins, and be getting from "branch\product\" in SVN, instead of "branch\product\module1", "branch\product\module2"?
If that is the case, how do I point this one Ivy project to each build file for each component? Am I supposed to use one build file for all components?
How would this work with multiple SVN locations? Would Ivy be able to find module dependencies in other SVN locations? What if I have multiple branches of the same component? Does Ivy simply search for binary dependencies in ALL Ivy descriptor files in a particular path?
Please let me know if you need any other info to help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您当前设置它的方式是一种有效的方法(尽管如果您的模块实际上相互依赖,您应该看到作业依赖关系)。将其设置为一个多模块 Ivy 项目是另一种有效的选择,好处是您只需管理每组相关模块的一个作业配置。
有两种方法可以进行多模块 Ivy 构建。
有关如何执行#1 的示例,请参阅:
要执行#2,您可以展开 Ivy 项目作业配置的 Ivy 模块配置部分中的高级部分,并选中“将模块构建为单独的作业”选项。每个模块中的 Ant 构建文件名需要相同,理想情况下,调用的目标和 ivy.xml 文件的位置也相同(尽管如果需要,可以按模块覆盖最后两个文件)。从那时起,作业配置中的所有路径都必须相对于每个模块目录(例如,要存档的工件将只是“target/**”或其他内容,并且在构建后将应用于每个模块)。
要处理同一组 Ivy 模块的多个分支,您需要为每个分支拥有一个单独的 Ivy 项目,并为 Ivy 项目配置中的“Ivy 分支”字段指定唯一值。
The way you've currently set it up is a valid way to do it (although you should be seeing job dependencies if your modules do actually depend on each other). Setting it up as one multi-module Ivy Project is another valid option, the benefit being that you only have to manage one job configuration per set of related modules.
There are two ways to do a multi-module Ivy Build.
For an example of how to do #1, see:
To do #2 you can expand the Advanced section in the Ivy Module Configuration section of your Ivy Project job configuration and check the "Build modules as separate jobs" option. Your Ant build file names need to be the same in each module, and ideally the targets to call and location of ivy.xml files are identical as well (although those last two can be overridden per-module if you need to). From then on, all the paths in the job config must be relative to each module directory (Ex. artifacts to archive would just be "target/**" or whatever and that would be applied to each module after it builds).
To handle multiple branches of the same set of Ivy modules you need to have a separate Ivy Project for each branch and specify unique values for the "Ivy branch" field in the Ivy Project configuration.