2016-07-26 91 views
0

我目前在我的第一个月,在我的第一份编程工作,并已获得了几天,看看我是否可以用新鲜的詹金斯安装我们的自动化构建过程。我有它的工作,但需要在Jenkins中手动执行一些操作,例如生成具有参数化构建的特定JAR版本,虽然这可行,但我希望将其进一步自动化。提前感谢您的时间!Jenkins + Maven + Git标签 - 通过标签构建依赖项解析?

所以,我有一个使用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的依赖版本,并作为参数传递给当前工作参数化构建子项目发送这些版本?

也就是说,一个干净的机器与我詹金斯配置上我能为DEV开始构建,它会:

  • 混帐克隆DEV,LIB-A和lib-B。
  • 检查pom.xml以获得lib-A和lib-B版本
  • 发送这些版本作为git-parameter-plugin参数来为lib-A和lib-B构建作业,以生成编译所需的相关JAR主要的DEV项目?

我知道这看起来很模糊。但我并没有真正解决问题,只是询问这是否可能,以及可能会调用什么,以便我可以使用Google来教我自己如何去做。提前谢谢了!!

+0

有些东西我不明白:您可能有一个公司范围的工件存储库(不仅仅是Jenkins服务器上的本地m2存储库)。对于所有发布版本,罐子应该已经在那里。你是否在谈论SNAPSHOT版本的一些机制? –

+0

目前没有工件存储库,该公司太小以至于现有的开发人员已经手动构建和部署。 我想有一种方法可以从pom.xml获取一个属性,将它作为参数传递给参数化构建,现在看看:) –

+0

实际上,如果使用Maven构建,则应该有一个存储库。在Jenkins服务器上处理(仅)本地存储库并没有意义。看看Nexus或Artifactory。我们使用Nexus,这很容易处理。# –

回答

0

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

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

正如你所说,你想教自己,这是非常值得赞扬的,我会留下它。从这里玩得开心,或者随时再问一次。

+0

我一直试图在午餐中准确地预先建立预备阶段!我读过,如果构建项目是一个Maven模板,那么可以从pom.xml访问maven属性,所以如果我查找的参数是作为参数化作业中来自git的标记$ Version传递的,那么我应该能够设置Version = $ lib-A,其中pom.xml中的lib-A属性是一个版本号。我在正确的道路上吗?它目前不工作哈哈 –