我目前正在设置 Jenkins 以使用 SVN 存储库。目前它适用于主干。现在我想设置 Jenkins 来处理新创建的分支。我不想为 SVN 中的每个新分支手动创建一个新项目。
- 是否已经有一个解决方案允许使用 SVN 并在 Jenkins 中为在 SVN 中创建的每个分支自动创建作业/任务?
- 您如何将 Jenkins 与 SVN 标签/分支一起使用?
我目前正在设置 Jenkins 以使用 SVN 存储库。目前它适用于主干。现在我想设置 Jenkins 来处理新创建的分支。我不想为 SVN 中的每个新分支手动创建一个新项目。
如果您对詹金斯不是很熟悉,请查看我的扩展答案。
它提供了带有屏幕截图的分步解决方案。
subversion 插件默认安装在最新版本中(截至 2015 年 9 月)。
然后你应该配置你的项目如下:
检查以下屏幕截图:
Subversion 插件应该包含一个下拉构建参数选项。您可以包含您的基础存储库,然后选择分支、标签或主干。
我们为每个分支机构和卡车都有一份工作。如果我们有 30 个项目,我们有 30 个主干项目,我们当前使用的每个分支都有 30 个项目。这可能超过 150 个工作,但我们使用视图来帮助将它们分开。在 Subversion 中使用分支(甚至是标签)非常简单:只需使用包含分支的 URL。
每当我们创建新分支时,我都会手动复制我的工作。我通常讨厌手动流程(手动流程 => 犯错 => 主要是搞砸 => 被解雇 => 在沃尔玛工作),但我的工作实际上只有两个必须做的改变。我必须更改 Subversion URL 和描述。其他一切都设置为使用 Jenkins 的默认值。没有古怪的工作目录,没有时髦的构建工件复制(我们将它们存储在 Jenkins 中)。我们有大约 30 个左右的工作,我可以在不到半小时的时间内复制所有这些工作。
我只是在自动化方面遇到了问题,如果无论如何我都必须完成所有工作以确保一切正常,我还不如手动完成。
您可以参数化您的构建。也就是说,让用户输入分支的名称(或从下拉列表中选择它。这意味着为所有分支创建一个作业。但是,这会破坏 Jenkins 的连续构建方面,因为您必须手动触发每个作业.
一些站点具有可以大量生成新分支的脚本。您只需config.xml
从一项作业中复制(和一些其他文件)并修改它。一些站点创建了模板作业,使这更容易一些。模板作业被禁用,并且由于 REST API,很容易通过wget
. 他们只需复制模板作业,修改一些参数,然后重新启用所有这些作业。
有一个JobCopy builder Plugin允许您定义模板构建项目,然后替换模板中的字符串以创建实际作业。
Jenkins Wiki上还有一个 Ant 脚本,可以为您复制作业。