【问题标题】:Build from branch in hudson从哈德逊的分支构建
【发布时间】:2011-05-17 08:34:04
【问题描述】:

我在哈德逊从事大约 30 个左右的项目。现在,它们都在提交时自动构建。有没有办法在主干和分支之间切换所有项目,同时保持基于提交的构建能力?

虽然我想让构建参数化以指定分支,但这会破坏自动构建。

【问题讨论】:

    标签: build tags continuous-integration hudson branch


    【解决方案1】:

    嗯,你有几个选择:

    1) 您可以使用参数化构建:您仍然可以进行自动构建,但其中一个选项将是默认的(主干或分支将是默认的)

    2) 为每个项目分别构建主干和分支

    3)(这是我在我们的地方设置的)有两台构建服务器:一台用于主干项目,一台专门用于分支。

    【讨论】:

    • 我正在查看您的第三个选项。 #1 仍然给我带来麻烦,#2 在构建触发器“构建依赖项时构建”时遇到问题。 #3 保持一切美好和独立。
    • 我们选择了选项 #3。
    【解决方案2】:

    我不完全确定您打算如何使用“开关”,但我想这取决于您如何使用分支。 (在我们的设置中,具有持续构建的分支往往是持久的项目或版本。因此,我们为每个分支设置了与主干构建分开的构建。如果您的分支是长期存在的,那是我推荐的方法。 )

    有几种方法可以解决这个问题:

    1. 编写脚本以通过Hudson Remote API 重新配置(或复制)作业。如果您查看http://your-hudson/job/JOB_NAME/api,您可以看到有关如何提交新作业配置的更多说明。这是编辑scm/location/remote 属性的自动化方式。

    2. 在您的 scm 中使用提交后挂钩来运行参数化构建。 post on the Hudson Labs blog 描述了如何设置 subversion post-commit 钩子(用于推送提交而不是轮询)。您需要在脚本中做更多的工作来确定要构建的内容。这个解决方案对我来说似乎很挑剔。

    【讨论】:

      【解决方案3】:

      +1 或 sagar:乍一看,我会建议第一个选项作为 bobnix 问题的解决方案。

      不过,问题又问了几次,我不确定他到底想完成什么。如果他想从分支或主干触发构建,那么使用 post commit 钩子可能会更好。为 Dave B +1。(解决方案 2)

      如果他只是想在一段时间内建造树枝而不是树干,那么最好的解决方案就是 Dave 的 1 号解决方案。

      还有另一种选择,即 Bobnix 实际上希望在一段时间内建立分支,但不花精力建立新工作。解决方案是重新配置现有作业,直到切换回主干。如果开发很少,当分支上有开发时,那么这可能是一个有效的思路。但是,由于复制如此简单,您应该更好,只需复制您的主干作业并将 scm 调整为分支。当您不再需要分支时,只需将其删除即可。

      【讨论】:

      • 复制的想法是最简单的,但我想知道它是否适用于 30 个项目。我设置两个独立的 Hudsons,一个用于分支机构,一个用于 HEAD,唯一原因是我们有 93 个项目。
      • 我不确定 Bobnix 是否想一次性调换所有工作。如果是这样,他可以复制文件系统上的作业(作业的 config.xml 就足够了)并在其上运行一个好的脚本编辑器(例如 sed)。在 Hudson 中重新加载配置(或只是重新启动它),新作业就在那里并指向分支。
      • 我们确实需要移动所有 30 个项目。我选择了 Sager 的第三个选项,因为我们在构建依赖项时有一个构建触发器。如果我们有两个项目构建相同的工件(主干和分支),将足够多的链接在一起,我们最终会遇到竞争条件。
      猜你喜欢
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多