Jenkins + Maven + Git标签 - 通过标签构建的依赖性解决方案?

时间:2016-07-26 10:59:21

标签: git maven jenkins

我目前正处于我第一个编程工作的第一个月,并且已经花了几天时间看看我是否可以使用全新的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。
  • 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仓库中,并且我能够指定在Jenkins中手动构建哪个标记版本作为参数化作业,以在DEV和PROD的本地.M2存储库中创建该版本的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?

我知道这看起来很模糊。但我并没有真正解决问题,只是问这是否可能,也许它会被称为什么,所以我可以用谷歌来教我自己该怎么做。非常感谢提前!!

1 个答案:

答案 0 :(得分:0)

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

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

正如你所说,你想教自己,这是非常值得称道的,我会留下它。玩得开心,或者随意再问。