我想知道是否有办法在Hudson(或任何各种插件)中执行此操作。我的IDEAL场景:
我想通过类似REST的API触发基于作业的构建,并且在该构建上,我希望它返回一个作业ID。之后,我想调查此ID以查看其状态。完成后,我希望看到状态和内部版本号。
现在,由于我似乎无法实现这一点,这是我目前尚未实施的解决方案:
当你做一个REST调用来做一个构建时,它不是非常RESTful。它只是返回HTML,我将不得不进行一种解析来获取作业ID。或者,我可以为列出所有作业的所有历史记录执行REST调用,最新的作业将是我刚刚构建的作业。有了这个,我可以轮询控制台输出以获得构建的输出。
任何人都知道我可以实施“理想”解决方案吗?
答案 0 :(得分: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"
这将返回一堆HTML,其中包含您可以解析的内部版本号#20
。然后可以使用构建号来查询作业是否已完成/成功。
您可以通过附加/api
(或/api/xml
来查看实际的XML输出),通过浏览器检查您通常访问的大多数Hudson网页的Hudson Remote API,例如: http://your-hudson/job/My job/api/
。
更新:我从您的问题中看出,您可能对我所撰写的内容了如指掌。值得探讨一下内置的Hudson API文档。我刚发现这个可能有帮助的花絮。
您可以从网址获取最新版本的内部版本号(以纯文本格式):http://your-hudson/job/My job/lastBuild/buildNumber
获得内部版本号后,我认为一旦您了解了API,轮询和作业状态就会很简单。
答案 1 :(得分:2)
如果您不想要最新的内部版本号,但是您想要通过点击构建URL触发的构建版本号,该怎么办?
据我所知,点击该URL会返回一个302,将您重定向到作业的主页,而不会显示您触发的内容编号是什么。