如何远程触发 CruiseControl 构建?

How do I trigger a CruiseControl build remotely?

我有一个 CruiseControl.net (v1.8.4.1) 服务器,它基于检查 Git 中更改的触发器运行构建。我希望能够通过将参数提供给 URL 来远程启动参数化构建。类似于“http://cruisecontrol.local/api/build?job=PreCommitBuild&project=widgets&branch=feature/story123”。

最终目标是通过使用网络 API 调用将一些参数发布到 CruiseControl 服务器,让 Gerrit 或 Stash 中内置的审查系统能够为特定分支启动构建.

这可能吗?如果可能,怎么做?

您可以使用 UrlTrigger 来监视磁盘上的文件,它需要通过 http(iis?)公开,并带有 Last-Modified header。 Iis 应该能够在本机为您执行此操作。

例如http://aserver/triggers/project1.txt

然后使用其他工具修改文件(在磁盘上)以触发构建。

虽然这不支持构建参数。

否则,您将陷入为 api 编写 .net 远程客户端的境界。

编辑

由于上面的选项不包括将参数传递给最初询问的 build/integration 以下可能是您唯一的选择 - 创建与巡航控制的连接并以编程方式触发构建。

查看之前的一个问题:CruiseControl.net Remoting - ForceBuild with reason 其中显示了调用构建的方法。

本文中的 link 是展示如何实现这一目标的重要部分。

稍加修改后,我最终从 GitHub 获得了 Remote 程序集的代码。客户端代码工作正常,但服务器暴露的API(至少我的服务器)似乎容易出现意外的空引用异常。