1

全部-

我已经使用 Jenkins 大约一年了,现在我正在尝试为我的团队设置一个持续交付管道并且有一个问题。


问题

是否可以让 Jenkins 从一个 SVN 分支签出/编译/测试代码,然后,如果一切通过,将该代码推送到另一个 SVN 分支?


对于我的团队,我正在设想以下分支::

-Our Product Root
  -Individual Issue Branches
    -Issue1
    -Issue2
    -Issue3
  -Integration Branch
  -Stable Branch
  -Production Branch

每个单独的问题分支都将是稳定分支的副本

单个问题分支的提交将转到集成分支


我希望詹金斯::

  1. 在 SVN 中侦听针对集成分支的提交
  2. 从 SVN 下载集成分支
  3. 编译集成分支代码
  4. 运行任何单元测试
  5. 如果一切顺利,将新代码提交到稳定分支

那么,Jenkins 是否可以从一个 SVN 分支签出/编译/测试代码并在成功后将该代码提交到另一个 SVN 分支?

感谢您的时间,

杰夫

4

3 回答 3

1

它取决于您的构建技术。有很多方法可以实现这一目标。1)发布构建步骤-执行shell

 svn commit --file file1 file2

您可以从 SVN 更改请求中获取此文件。

2) 使用 SVN Publisher 插件

https://wiki.jenkins-ci.org/display/JENKINS/SVN+Publisher

3)如果您使用 SVN 和 ant http://subclipse.tigris.org/svnant/svntask.html

更多信息 :

将文件从 Jenkins 工作区提交到 SVN

于 2015-09-09T05:24:36.827 回答
0

是的,这是可能的,但不是 Jenkins 本身自带的……除非(你猜对了)有一个插件可以做到这一点。

我将如何完成此操作是通过一个脚本,在成功构建后将第二个分支签出到新目录,然后将所需的任何内容复制到该工作目录中,然后签入该新分支。

对我来说似乎很浪费,因此可能有提高效率的空间,尤其是在结帐其他分支时。SVN 不是我的强项,所以我假设您必须先将分支签出到某个位置,进行一些更改,然后签入该分支。我不知道是否有办法将当前签出的分支签入另一个分支,并且能够自动处理可能出现的任何冲突。

于 2015-09-08T20:33:08.093 回答
0

我最终使用了Subversion Merge Plugin。基本上,我刚刚创建了一个父 Jenkins 作业来监视我的稳定分支并将其设置为允许使用插件进行功能分支。

从那里,您可以使用插件自动创建功能分支。这允许您在单个功能分支上进行编码。然后,当您确定您的代码可以运行时,您可以使用插件的内置“集成到上游”功能将您的代码合并到您的稳定(主干)代码中。

于 2015-09-15T21:23:42.480 回答