【问题标题】:Jenkins + Maven + Git Tags - Dependency resolution with build via tags?Jenkins + Maven + Git 标签 - 通过标签构建的依赖关系解析?
【发布时间】: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,这很容易处理。#

标签: git maven jenkins


【解决方案1】:

是的,这是可能的。简而言之,只要您的作业都在同一台机器上运行,您就可以在运行作业 B(在您的一个脚本中)的同时轻松访问作业 A 的工作场所。那里没有任何类型的安全或权限限制,所有目录名称都是静态的,即没有神秘的临时目录或类似的东西。

此外,您可以在作业之间建立“父子”关系(在作业配置中查找 Build other projects),因此子作业只有在父作业成功运行后才会被解雇。

正如你所说的你想自学,这是非常值得称道的,我就不说了。从这里开始玩得开心,或随时再次提问。

【讨论】:

  • 我一直在尝试在午餐时设置准确的预构建步骤!我读到如果构建项目是 Maven 模板,则可以从 pom.xml 访问 maven 属性,所以如果我要查找的参数作为 $Version 传递,这是参数化作业中来自 git 的标记,那么我应该能够设置 Version=$lib-A 其中 pom.xml 中的 lib-A 属性是版本号。我在正确的道路上吗?它目前不工作哈哈
猜你喜欢
  • 2015-06-04
  • 2016-06-18
  • 2017-12-25
  • 1970-01-01
  • 2013-07-12
  • 2015-08-18
  • 2012-04-29
  • 2013-06-06
  • 2020-08-16
相关资源
最近更新 更多