使用Jenkins/Git增加Maven项目版本

Eng*_*_DJ 7 git hudson maven maven-release-plugin jenkins

我正在使用Jenkins构建Maven Java项目并将它们部署到Nexus存储库.我也使用Git,虽然我更习惯Subversion,所以我的Git知识有限.

我想Jenkins/Maven:

  1. 将功能分支合并到集成分支中
  2. 构建合并代码,运行单元测试
  3. 如果它们通过,则增加Maven版本号
  4. 将合并代码推送到origin的集成分支
  5. 将工件部署到Nexus存储库

我收集Git合并可以实现:http://twasink.net/2011/09/20/git-feature-branches-and-jenkins-or-how-i-learned-to-stop-worrying-about-破碎构建/

我也读了很多关于maven-release-plugin.

我不确定如何达到上述结果.如果我将SCM细节硬编码到每个项目的POM中,那么不会maven-release-plugin仅仅在存储库上而不是Jenkins的本地存储库中执行操作吗?

如果我使用Jenkins将环境变量传递给Maven以指定版本号的解决方案,那么我希望在我的IDE中有本地版本解析问题.

Łuk*_*nek 9

好的,这个很难做到.但这是可行的.让我一步一步地解释这个想法.

  1. 首先,我们需要将两个分支合并在一起.使用Jenkins Git插件非常容易,因为它具有内置的这个功能:在项目配置的" 高级"部分中可以使用" 构建前合并"选项.

  2. 所以我们得到了这两个分支之间的代码合并,我们可以转移到构建项目 - 像往常一样,Maven风格的Jenkins项目.

  3. 现在我们需要增加项目的版本及其模块,提交合并的分支并将工件推送到存储库.在这里,我们有两个选择:

    1. 使用maven-release-plugin进行工作.是的,这是可能的,因为没有人说你需要把URL放在你的pom中,因为它可以用两种不同的方式提供.该插件将使用随命令行开关提供的插件-DconnectionUrl=.如果没有提供,它将检查release.properties文件以从那里获取它.最后保留是去pom.xml ang get ${project.scm.connection}变量.因此,您可以轻松地使用该插件执行所有脏工作而不会有任何麻烦,并使用Jenkins提供的不同技术引入该属性.
    2. 您可以将maven-versions-plugin(特定版本:setversions:commit targets)与maven-scm-plugin结合使用来进行标记并提交更改.

    在这两种情况下,只有在构建成功选项时才能使用Post Steps with Run,并像往常一样调用顶级Maven目标.对于上面提到的或特定插件所描述的所有设置,可以选择在文本字段中轻松提供它们.为了将您的工件上传到Nexus repo,我将使用Jenkins内置功能将工件部署到Maven存储库,这可以在您的项目配置中使用.这将要求您在POM定义或属性中提供存储库配置.

希望涵盖您的所有问题.如果您需要我在答案的任何范围内更具体,请不要犹豫.