Jenkins+Maven+Git标签-通过标签构建的依赖关系解析



我目前正处于第一份编程工作的第一个月,有几天的时间来看看我是否可以通过新的Jenkins安装来自动化我们的构建过程。我已经开始工作了,但需要在Jenkins中手动做一些事情,比如用参数化构建生成特定的JAR版本,尽管这可以工作,但我想进一步自动化。感谢您提前抽出时间!

因此,我有一个使用Maven进行依赖解析的项目。我正在使用Jenkins来实现构建过程的自动化。我在Jenkins上使用了git参数插件,这样我就可以选择要构建的项目和子项目的标记版本。

该项目依赖于各种子项目,所有子项目都有自己的git版本标记,而主项目的Dev/Prod版本依赖于这些子项目的不同版本,这些版本在各自的POM文件中指定。

例如:

  • DEV:Pom.xml依赖于lib-A 2.0.0/lib-B 1.5.0
  • PROD: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 repo上,我能够指定在Jenkins中手动构建哪个标记版本作为参数化作业,以便在本地.M2存储库中创建JAR工件的那个版本,供DEV和PROD查找。例如,如果我需要lib-A 1.5.0作为DEV中的依赖项,我必须手动单击参数1.5.0并点击build

然而,有没有任何方法可以自动化这个过程,从而能够解决maven依赖版本,并将这些版本作为参数发送到子项目的当前工作参数化构建中?

也就是说,在一台拥有Jenkins配置的干净机器上,我可以开始构建DEV,它会:

  • git克隆DEV、lib-A和lib-B
  • 检查pom.xml中的lib-A和lib-B版本
  • 将这些版本作为git参数插件参数发送给lib-A和lib-B,以生成编译主DEV项目所需的相关JAR

我知道这似乎很模糊。但我并不是真的在排除问题,只是问这是否可能,也许它会被称为什么,这样我就可以用谷歌自学如何做到这一点。非常感谢!!

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

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

当你说你想自学,这是非常值得赞扬的,我就到此为止。从这里弄清楚它会很有趣,或者可以再问一次。

最新更新