如何使用与hudson相同的svn修订版号构建许多项目?

时间:2010-05-17 20:18:15

标签: svn continuous-integration hudson

我刚刚开始使用哈德森,我想像我之前制作的手工解决方案一样构建我的项目:

  1. 检索当前的svn修订号 rev
  2. 使用修订号 rev 构建所有项目(每个项目都有单独的结果)。
  3. 无论同时是否有任何更改(以检测每次测试运行中未发生的非确定性错误),请再次从步骤1开始。
  4. 如何使用hudson配置?

4 个答案:

答案 0 :(得分:3)

只是为了扩展sjohnston帖子。您可以使用Clone Workspace SCM Plugin,而不是将代码检查到已知位置。现在您可以参考第一份工作的结帐。

此外,您只需传递修订号,并将其作为参数传递给构建作业。构建作业可以使用修订号来检索正确版本的代码。

答案 1 :(得分:2)

Hudson并没有真正支持单个SVN签出然后将其用于几个不同的工作。

你可以试试这个:

  • 设置一个只签出已知目录的作业。检查post-build-actions>构建其他项目框并添加所有构建作业。
  • 设置每个构建作业,以便从第一个作业放置的任何位置复制最新的签出。将这些设置为定期构建,以便即使没有签入也会继续构建。
  • 可能使用Locks and Latches插件在结账作业和构建作业之间设置锁定,这样您就不会有两个同时尝试复制/修改文件的作业。

这听起来很混乱,可能充满了问题,但它可能有用。

或者,如果您想将所有这些项目链接在一起,您可以设置一个执行结帐的作业,并为每个项目创建一个构建步骤。然后你可以检查Build Periodically触发器,让它按照你想要的频率运行(或者至少和Hudson可以完成任务一样频繁)。

答案 2 :(得分:1)

我对这个问题的看法:

使用SVN post-commit hook触发初步工作,a)检查代码; b)获取SVN修订版(例如通过SVNVERSION.EXE); c)使用Parameterized Trigger plugin触发特定SVN修订版ID的“真实”构建作业。

这样您就可以将SCM连接与实际建筑分开,这样您就可以非常具体地构建每个修订版本。

答案 3 :(得分:0)

您始终可以添加shell脚本作为构建步骤。

使用参数化构建,将修订声明为参数,在shell脚本中使用该参数(完全跳过Hudson SCM管理)

http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build