4

我想要一种方法让个人用户将 repo 路径发送到 hudson 服务器并让服务器启动该 repo 的构建。我不想留下动态创建的作业配置的痕迹。我想启动同一作业的多个同时实例。显然,这要求不同实例的工作空间不同。我相信使用任何当前的扩展都是不可能的。我对我想要完成的事情的不同方法持开放态度。

我只希望 hudson 服务器能够接收来自外部资源的构建请求,并在有免费执行程序的情况下启动它们。我希望所有构建的构建配置都相同,除了 repo 的位置。我不希望有几十个相同的工作坐在那里自动生成名称。

有没有人使用 Hudson 或 Jenkins 来做这样的事情?你如何设置它?我想有了足够的脚本,我可以通过脚本中的 CLI API 动态创建必要的作业配置,然后在完成后将其销毁。但我想保留工件,因此在运行完成时破坏工作是一个问题。我真的不想编写和维护自己的扩展。

4

1 回答 1

5

使用 Jenkins 应该非常简单,不需要任何插件,尽管这取决于您使用的 SCM 类型。无论如何,
值得从 Hudson升级;自从成为 Jenkins 以来,在许多版本中支持您的用例所需的功能肯定都得到了改进。

您想将 repo 路径作为参数传递给您的构建,因此您应该在构建配置中选择“此构建已参数化”选项。在那里您可以添加一个名为REPO_PATH或类似的字符串参数。

接下来,在您指定从何处签出代码的地方,将路径替换为${REPO_PATH}.
如果您要从脚本中签出代码(或者需要访问 repo 路径),该变量将自动添加到您的环境中,因此您可以${REPO_PATH}从 shell 脚本或 Ant 文件中引用。

此时,当按下 时Build Now,会提示您输入一个 repo 路径,然后再开始构建。如上面的 wiki 页面所述,您可以调用buildWithParametersURL 以直接使用所需参数开始构建,例如http://server/job/myjob/buildWithParameters?REPO_PATH=foo

最后,如果您希望构建同时执行,Jenkins 可以通过为并发构建创建临时工作区来为您管理。只需在您的作业配置中启用“必要时执行并发构建”选项。

工件将可用,与任何其他 Jenkins 构建相同。尽管您可能想管理保留了多少最近的工件;这可以通过选中“Discard Old Builds”来完成,然后在 下Advanced…,您可以选择为“Max # of builds to keep with artifacts”输入一个值。

于 2012-07-07T12:41:59.817 回答