如何配置单个Jenkins作业以从主干或分支进行发布过程?

时间:2011-10-13 09:02:47

标签: maven hudson jenkins maven-release-plugin

我目前正在加强Jenkins(1.430)项目的发布过程。

当前发布的工作

今天,对于一个特定项目,我们有一个专门负责发布流程的工作。 完整的程序如下:

  1. 负责发布的开发人员手动更改所有pom.xml文件的版本(实际上使用mvn versions:set -DnewVersion=2.0)以删除-SNAPSHOT
  2. 然后,他在SVN中创建了一个标签(例如http://my-svn-repo/project/tags/V_2_0)。
  3. 创建此标记后,他会登录我们的Jenkins服务器,并启动发布版本。
  4. 这个版本会询问他想要用于构建的标记。该作业配置为参数化构建,参数为 List Subversion tags
  5. Jenkins将从此标记构建工件,并将它们部署在我们的Nexus实例上。
  6. 完成此操作后,开发人员将pom.xml版本设置为新的开发版本(即2.1-SNAPSHOT)。
  7. 这种方法的优点是我只有Jenkins作业,因为构建只依赖于标记。

    但是,此过程涉及太多人为干预(更改pom.xml,提交,标签等)。

    新发布的工作

    现在,我使用Maven发布插件。 我创建了一个工作,向启动构建的用户提出三个信息:

    • 发行版的版本(发布插件的参数releaseVersion);
    • 发布版本,发布后(发布插件的参数developmentVersion);
    • 标记的名称(发布插件的参数tag)。

    这项工作正常,除了一点:作业基于中继或SVN的分支。 这意味着如果我有2个分支(除了主干),我将需要创建3个发布作业:每个分支一个。

    保持两个世界中最好的一个想法(即使用mvn发布,但保留1个发布作业),添加一个构建参数,该参数将询问用户中继/分支的路径。 因此,我不会在作业配置中设置http://my-svn-repo/project/trunk(或http://my-svn-repo/project/branches/BRANCH_V1),而是设置http://my-svn-repo/project/$FROM_BRANCH,并要求用户输入FROM_BRANCH参数。

    此解决方案的问题是用户必须输入trunkbranches/BRANCH_Vx,这可能会导致错误。

    理想情况下,我希望有一个构建参数让我可以选择分支(包括主干),因为参数 List Subversion tags 可用于选择标签...

    所以我的问题是:有没有更好的方法来配置可以在所有分支上运行的一个 Jenkins作业?

    感谢。


    编辑:我找到了Validating String Jenkins插件,可以确保用户定义的值尊重某些正则表达式。这对我的情况很有帮助......

2 个答案:

答案 0 :(得分:17)

如果你不熟悉詹金斯,只是为彼得的答案添加一些注释。

默认情况下,在最新版本中安装了subversion插件(截至2015年9月)。

然后您应该按如下方式配置项目:

  1. 选中“此版本已参数化”(此项目已在最新版本中进行参数化)
  2. 选择“List subverion tags(and more)”
  3. 在名称字段中,设置一个可变名称,稍后可以在svn url中引用该名称。我在这里选择了svnbranch。
  4. 在Repository URL字段中,为其提供项目URL(需要包含主干,分支和标签)
  5. 根据您的需要填写其他字段
  6. 在源代码管理中,引用之前在存储库URL中定义的变量。
  7. 查看以下屏幕截图:

    enter image description here

    enter image description here

答案 1 :(得分:9)

您需要版本1.32的subversion插件。 issue JENKINS-10678已在该版本中实施。

然后你只给它你的项目URL(需要包含主干,分支和标签),它会为你提供主干和你的分支。