【问题标题】:How to configure a single Jenkins job to make the release process from trunk or branches?如何配置单个 Jenkins 作业以从主干或分支进行发布过程?
【发布时间】:2011-12-06 19:04:16
【问题描述】:

我目前正在改进我们在 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. 此构建将询问他要使用哪个标签进行构建。该作业被配置为 Parameterized build,带有参数 List Subversion tags
  5. Jenkins 将从这个标签构建工件,并将它们部署到我们的 Nexus 实例上。
  6. 完成后,开发人员将 pom.xml 版本设置为新的开发版本(即2.1-SNAPSHOT)。

这种方法的优点是我只有 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 插件可以确保用户定义的值尊重某些正则表达式。这对我来说很有帮助...

【问题讨论】:

标签: maven hudson jenkins maven-release-plugin


【解决方案1】:

如果您对詹金斯不太熟悉,请在彼得的回答中添加一些注释。

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

那么你应该如下配置你的项目:

  1. 选中“此构建已参数化”(此项目在最新版本中已参数化)
  2. 选择“列出 subverion 标签(以及更多)”
  3. 在名称字段中,设置一个可在稍后在 svn url 中引用的变量名称。我这里选择svnbranch。
  4. 在 Repository URL 字段中,为其提供您的项目 URL(需要包含主干、分支和标签)
  5. 根据需要填写其他字段
  6. 在源代码管理中,引用之前在您的存储库 url 中定义的变量。

查看以下截图:

【讨论】:

  • 如果我们使用 $svnbranch,提交后钩子会触发这个构建吗?只是好奇
【解决方案2】:

您需要 1.32 版本的 subversion 插件。 issue JENKINS-10678 是在那个版本中实现的。

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

【讨论】:

  • 谢谢!这几乎是完美的。现在,它提供了主干、分支和标签。我想去掉标签,但不管怎样,现在已经很好了。
  • tags filter 对您有帮助吗?
  • 还没有尝试,但我认为它可能会有所帮助,是的。
  • 有没有办法将它与非标准分支结构一起使用?我项目的repo使用./branches/Users/<user>/<branch>/,所以这个插件认为只有一个分支(Users)..
猜你喜欢
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2011-10-16
  • 2013-04-03
  • 2017-05-19
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
相关资源
最近更新 更多