19

我目前正在设置 Jenkins 以使用 SVN 存储库。目前它适用于主干。现在我想设置 Jenkins 来处理新创建的分支。我不想为 SVN 中的每个新分支手动创建一个新项目。

  • 是否已经有一个解决方案允许使用 SVN 并在 Jenkins 中为在 SVN 中创建的每个分支自动创建作业/任务?
  • 您如何将 Jenkins 与 SVN 标签/分支一起使用?
4

3 回答 3

18

如果您对詹金斯不是很熟悉,请查看我的扩展答案。

它提供了带有屏幕截图的分步解决方案。

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

然后你应该配置你的项目如下:

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

检查以下屏幕截图:

在此处输入图像描述

在此处输入图像描述

于 2015-09-17T05:02:11.213 回答
5

Subversion 插件应该包含一个下拉构建参数选项。您可以包含您的基础存储库,然后选择分支、标签或主干。

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

更多信息在这里:https ://issues.jenkins-ci.org/browse/JENKINS-10678

于 2013-06-17T15:46:03.130 回答
2

我们为每个分支机构和卡车都有一份工作。如果我们有 30 个项目,我们有 30 个主干项目,我们当前使用的每个分支都有 30 个项目。这可能超过 150 个工作,但我们使用视图来帮助将它们分开。在 Subversion 中使用分支(甚至是标签)非常简单:只需使用包含分支的 URL。

每当我们创建新分支时,我都会手动复制我的工作。我通常讨厌手动流程(手动流程 => 犯错 => 主要是搞砸 => 被解雇 => 在沃尔玛工作),但我的工作实际上只有两个必须做的改变。我必须更改 Subversion URL 和描述。其他一切都设置为使用 Jenkins 的默认值。没有古怪的工作目录,没有时髦的构建工件复制(我们将它们存储在 Jenkins 中)。我们有大约 30 个左右的工作,我可以在不到半小时的时间内复制所有这些工作。

我只是在自动化方面遇到了问题,如果无论如何我都必须完成所有工作以确保一切正常,我还不如手动完成。

您可以参数化您的构建。也就是说,让用户输入分支的名称(或从下拉列表中选择它。这意味着为所有分支创建一个作业。但是,这会破坏 Jenkins 的连续构建方面,因为您必须手动触发每个作业.

一些站点具有可以大量生成新分支的脚本。您只需config.xml从一项作业中复制(和一些其他文件)并修改它。一些站点创建了模板作业,使这更容易一些。模板作业被禁用,并且由于 REST API,很容易通过wget. 他们只需复制模板作业,修改一些参数,然后重新启用所有这些作业。

有一个JobCopy builder Plugin允许您定义模板构建项目,然后替换模板中的字符串以创建实际作业。

Jenkins Wiki上还有一个 Ant 脚本,可以为您复制作业。

于 2013-06-17T17:35:58.753 回答