【发布时间】:2011-05-17 08:34:04
【问题描述】:
我在哈德逊从事大约 30 个左右的项目。现在,它们都在提交时自动构建。有没有办法在主干和分支之间切换所有项目,同时保持基于提交的构建能力?
虽然我想让构建参数化以指定分支,但这会破坏自动构建。
【问题讨论】:
标签: build tags continuous-integration hudson branch
我在哈德逊从事大约 30 个左右的项目。现在,它们都在提交时自动构建。有没有办法在主干和分支之间切换所有项目,同时保持基于提交的构建能力?
虽然我想让构建参数化以指定分支,但这会破坏自动构建。
【问题讨论】:
标签: build tags continuous-integration hudson branch
嗯,你有几个选择:
1) 您可以使用参数化构建:您仍然可以进行自动构建,但其中一个选项将是默认的(主干或分支将是默认的)
2) 为每个项目分别构建主干和分支
3)(这是我在我们的地方设置的)有两台构建服务器:一台用于主干项目,一台专门用于分支。
【讨论】:
我不完全确定您打算如何使用“开关”,但我想这取决于您如何使用分支。 (在我们的设置中,具有持续构建的分支往往是持久的项目或版本。因此,我们为每个分支设置了与主干构建分开的构建。如果您的分支是长期存在的,那是我推荐的方法。 )
有几种方法可以解决这个问题:
编写脚本以通过Hudson Remote API 重新配置(或复制)作业。如果您查看http://your-hudson/job/JOB_NAME/api,您可以看到有关如何提交新作业配置的更多说明。这是编辑scm/location/remote 属性的自动化方式。
在您的 scm 中使用提交后挂钩来运行参数化构建。 post on the Hudson Labs blog 描述了如何设置 subversion post-commit 钩子(用于推送提交而不是轮询)。您需要在脚本中做更多的工作来确定要构建的内容。这个解决方案对我来说似乎很挑剔。
【讨论】:
+1 或 sagar:乍一看,我会建议第一个选项作为 bobnix 问题的解决方案。
不过,问题又问了几次,我不确定他到底想完成什么。如果他想从分支或主干触发构建,那么使用 post commit 钩子可能会更好。为 Dave B +1。(解决方案 2)
如果他只是想在一段时间内建造树枝而不是树干,那么最好的解决方案就是 Dave 的 1 号解决方案。
还有另一种选择,即 Bobnix 实际上希望在一段时间内建立分支,但不花精力建立新工作。解决方案是重新配置现有作业,直到切换回主干。如果开发很少,当分支上有开发时,那么这可能是一个有效的思路。但是,由于复制如此简单,您应该更好,只需复制您的主干作业并将 scm 调整为分支。当您不再需要分支时,只需将其删除即可。
【讨论】: