由API触发的Hudson构建

sha*_*jan 1 integration hudson build process continuous

我想知道是否有办法在Hudson(或任何各种插件)中执行此操作.我的IDEAL场景:

我想通过类似REST的API触发基于作业的构建,并且在该构建上,我希望它返回一个作业ID.之后,我想调查此ID以查看其状态.完成后,我希望看到状态和内部版本号.

现在,因为我似乎无法实现这一点,这是我目前尚未实施的解决方案:

当你做一个REST调用来做一个构建时,它不是非常RESTful.它只是返回HTML,我将不得不进行一种解析来获取作业ID.或者,我可以为列出所有作业的所有历史记录执行REST调用,最新的作业将是我刚刚构建的作业.有了这个,我可以轮询控制台输出以获得构建的输出.

任何人都知道我可以实现"理想"解决方案吗?

Dav*_*her 5

是的,您可以使用Hudson Remote API(如@Dan所述).具体来说,您需要将作业配置为接受远程触发器(作业配置 - > 构建触发器 - > 远程触发器构建),然后您可以使用简单的HTTP GET将构建发送到正确的URL.

(如果您的Hudson需要身份验证,您可能需要跳过几个额外的箍.)

我可以用wget开始一个Hudson工作:

wget --auth-no-challenge --http-user=test --http-password=test "http://localhost:8080/job/My job/build?TOKEN=test"
Run Code Online (Sandbox Code Playgroud)

这将返回一堆HTML,其中包含#20您可以解析的内部版本号.然后可以使用构建号来查询作业是否已完成/成功.

您可以直接从浏览器检查Hudson Remote API,以查看您通常通过附加/api(或/api/xml查看实际的XML输出)访问的大多数Hudson网页,例如http://your-hudson/job/My job/api/.


更新:我从你的问题中看出你可能对我写的很多东西都很了解.值得探讨一下内置的Hudson API文档.我刚发现这个可能有帮助的小贴士.

您可以从URL获取最新版本的内部版本号(以纯文本格式): http://your-hudson/job/My job/lastBuild/buildNumber

一旦你有了内部版本号,我认为一旦你理解了API,轮询和工作状态就会很简单.