【发布时间】:2016-07-26 10:59:20
【问题描述】:
我目前是我第一份编程工作的第一个月,我有几天的时间来看看我是否可以通过全新的 Jenkins 安装来自动化我们的构建过程。我已经让它工作了,但需要在 Jenkins 中手动做一些事情,比如生成带有参数化构建的特定 JAR 版本,虽然这可行,但我想进一步自动化。提前感谢您的宝贵时间!
所以,我有一个使用 Maven 进行依赖解析的项目。我正在使用 Jenkins 来自动化构建过程。我在 Jenkins 上使用了 git-parameter 插件,这样我就可以选择项目和子项目的标记版本来构建。
项目依赖于各种子项目,在git中都有自己的版本标签,主项目的Dev/Prod版本依赖于这些子项目的不同版本,在各自的POM文件中指定。
例如:
- DEV:Pom.xml 依赖于 lib-A 2.0.0 / lib-B 1.5.0。
- 产品:Pom.xml 依赖于 lib-A 1.0.0 / lib-B 1.0.0。
lib-A: Git 标签:2.0.0、1.5.0、1.0.0
lib-B: Git 标签:1.5.0、1.0.0
所有项目都存在于私有 git 存储库中,我能够指定在 Jenkins 中手动构建哪个标记版本作为参数化作业,以便在本地 .M2 存储库中为 DEV 和 PROD 创建该版本的 JAR 工件找到。例如,如果我需要 lib-A 1.5.0 作为 DEV 中的依赖项,我必须手动单击参数 1.5.0 并点击构建。
但是,有没有办法自动化这个过程,以便能够解析 maven 依赖版本并将这些版本作为参数发送到当前工作的子项目的参数化构建?
也就是说,在具有我的 Jenkins 配置的干净机器上,我可以开始为 DEV 构建,它会:
- git clone DEV、lib-A 和 lib-B。
- 检查 pom.xml 以获取 lib-A 和 lib-B 的版本
- 将这些版本作为 git-parameter-plugin 参数发送,以便为 lib-A 和 lib-B 构建作业,以生成编译主 DEV 项目所需的相关 JAR?
我知道这似乎很模糊。但我并没有真正解决问题,只是询问这是否可能以及它可能会被称为什么,以便我可以使用谷歌自学如何去做。非常感谢提前!
【问题讨论】:
-
有些事情我不明白:您可能有一个公司范围的工件存储库(不仅仅是 Jenkins 服务器上的本地 m2 存储库)。对于所有发布版本,罐子应该已经在那里。您是在谈论 SNAPSHOT 版本的一些机制吗?
-
目前没有工件存储库,公司太小了,以至于现有的开发人员一直在手动构建和部署。我认为有一种方法可以从 pom.xml 中获取一个属性,将其作为参数传递给参数化构建,现在研究一下 :)
-
其实,如果你使用 Maven 构建,你应该有一个存储库。 (仅)使用 Jenkins 服务器上的本地存储库并没有什么意义。看看 Nexus 或 Artifactory。我们使用 Nexus,这很容易处理。#