我对哈德森构建系统很陌生。我目前的构建是通过 perl/cgi 脚本的组合运行的,并且能够从浏览器启动。我需要的是 hudson 能够从 perforce 签出文件(可以这样做),解析该文件(我可以为此编写脚本)并根据解析的结果让用户能够选择各种不同的选项构建(编译)什么。这可能吗?我不确定我是否应该将几个不同的项目结合在一起来做到这一点?任何可以实现的想法都会非常有帮助。
3 回答
Hudson 是一个持续集成 (CI) 服务器。所有 CI 服务器的共同点是,它们可以帮助您自动化构建过程,这样您就不需要进行用户交互。除了构建之外,您还可以添加单元测试、功能测试、代码分析、打包您的解决方案......所以显然 CI 的概念不能满足您当前的需求或期望(至少如果您打算以这种方式使用它它打算被使用)。
在您的情况下,我将对您的构建过程进行批判性研究,并确定该过程的设计是否可以适应完全自动化。使用 CI 解决方案构建所有内容是完全可以的,即使需要一段时间。这样,您就不需要用户交互,并且如果组件损坏了(CI 的实际目的),您现在就可以立即进行操作。一定要调查所有许多Hudson 插件。根据您的构建参数实际更改的频率,您可能能够在一项作业中运行矩阵构建和所有可能(和有效)的构建参数组合。毋庸置疑,在触发作业之前需要知道可能的选项。
对于您想要做的事情,一个(许多)可能的解决方法可能是有两个工作,第一个工作从每个强制中检查文件并创建一个带有可能选项的 HTML 页面并将其存储为工件。HTML 页面允许您选择选项并根据您的请求触发在哈德逊的第二份工作。选择的选项将作为一个(或多个)参数传递给第二个作业。而不是根据传递给它的选项来构建项目。您还可以使用远程 API更改第二个作业配置,在这种情况下,可用选项将设置为第二个作业中的选择参数。当您手动触发第二个作业时,您只需要设置您选择的参数就可以了。这是一个丑陋的解决方法,我不会推荐它。
您可以使用 Hudson 参数化构建 - 应该有一个复选框允许您选择构建参数化并添加参数。
当然,这不会让您从构建本身获取参数列表,因为它无法展望未来,但如果您提前知道它们将是什么,您可以将它们从 Hudson 传递到您的脚本在适当的位置。
http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build
不,没有办法。Hudson 设计为无需用户交互即可运行。这就是重点——您可以设置按计划运行或在签入代码时运行的作业。
无需用户交互,而是为最常见的任务创建单独的作业。这样他们就可以点击适合他们需要的任何工作。