我目前正在加强Jenkins(1.430)项目的发布过程。
当前发布的工作
今天,对于一个特定项目,我们有一个专门负责发布流程的工作。 完整的程序如下:
mvn versions:set -DnewVersion=2.0
)以删除-SNAPSHOT
。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
参数。
此解决方案的问题是用户必须输入trunk
或branches/BRANCH_Vx
,这可能会导致错误。
理想情况下,我希望有一个构建参数让我可以选择分支(包括主干),因为参数 List Subversion tags 可用于选择标签...
所以我的问题是:有没有更好的方法来配置可以在所有分支上运行的一个 Jenkins作业?
感谢。
编辑:我找到了Validating String Jenkins插件,可以确保用户定义的值尊重某些正则表达式。这对我的情况很有帮助......
答案 0 :(得分:17)
如果你不熟悉詹金斯,只是为彼得的答案添加一些注释。
默认情况下,在最新版本中安装了subversion插件(截至2015年9月)。
然后您应该按如下方式配置项目:
答案 1 :(得分:9)
您需要版本1.32的subversion插件。 issue JENKINS-10678已在该版本中实施。
然后你只给它你的项目URL(需要包含主干,分支和标签),它会为你提供主干和你的分支。