一尘不染

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

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标记Parameterized构建 。 __
  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 标记…

所以我的问题是:有没有更好的方法来配置 一个 可以在所有分支上工作的詹金斯工作?

谢谢。


编辑 :我发现了Validating String
Jenkins插件,它很有趣,可以确保用户定义的值遵守某些正则表达式。这对我来说很有帮助…


阅读 336

收藏
2020-07-25

共1个答案

一尘不染

您需要版本1.32的subversion插件。该版本中已实现了JENKINS-10678问题

然后,只给它提供项目URL(它需要包含主干,分支和标签),它将为您提供主干以及分支。

2020-07-25