我正在通过http POST请求从jenkins外部触发参数化的Jenkins:
我在作业配置中启用了可以从外部触发作业的功能,并且我可以通过向詹金斯发送包含以下内容的请求来真正触发它:
POST http://myJenkins.com/myJob/buildWithParameters?token=MYTOKEN
参数:SCREEN_SIZE:27
触发作业创建将返回成功的201 CREATED http响应。
我的问题是我不知道所创建的构建作业的ID。我想监视工作状态。为了做到这一点,我需要知道ID。否则,如果我只是接受这份工作的最新版本,那我可能会接受错误的工作。
是否有可靠的方法来获取所创建作业的ID?
更新:
在其他的答案矿后〜8月加入。当时我没有意识到 位置
标头在响应中。在某些情况下,这确实是一个不错的选择。就是说,根据答案和评论中的警告(尤其是关于 _参数化_构建),该答案似乎在某些情况下仍具有一定的实用性。
原始答案:
不幸的是,他们并没有使事情变得如此简单。也就是说,例如,返回带有 ID之 类的信息的 JSON 响应。 __
但是,我相信一个可靠的解决方法(虽然肯定是不平凡的)是利用您用于触发构建的URL中的 cause 参数,并在该原因内添加 唯一的文本
,您稍后可以解析该 文本 以确定您是否从您的自动化触发了它。
为了进一步使特定作业具有 唯一性 ,即使是在自动化的情况下,多个作业同时运行,也要在cause参数内包括某种类型的 唯一ID (可能只是
RDBMS 或类似的序列ID )。
然后,您可以使用 JSON API 获取有关您正在远程触发的 作业的 信息。同样,它有点间接,但是可行:
点击以下形式的网址:
http://<server>:<port>/job/<jobname>/lastBuild/api/json
您可以?pretty=true
在浏览器中添加漂亮的打印效果,以提高人类可读性。
这将为您提供上一版本的 JSON 。它会在 actions 属性中包含 causes 属性,并且在其中(在另一个名为
shortDescription的 嵌套属性中),您将找到添加的 cause 参数(如果这是您触发的构建之一)。 __
您可以同时解析特殊的静态文本和生成的ID,以查看它们是否匹配。如果他们这样做,那么您也可以从 JSON中 获取 Jenkins id (搜索嵌套的
buildNumber )。
如果该构建不是完全由自动化触发的,或者根本不是由您的自动化触发的,但是ID不匹配,则可以重复进行 N-1构建 的过程,直到找到所需的内容。
JSON将采用以下形式:
http://<server>:<port>/job/<jobname>/<buildNumber>/api/json
问题内容: 我有一个脚本,可以使用令牌远程触发Jenkins上的作业。这是我的脚本: 运行它之后,我得到以下响应: 我注意到它返回标题中的队列URL:http : //jenkins.myserver.com/jenkins/queue/item/91。但我不知道该如何使用此返回URL。 1)我想知道是否有人知道如何检查我刚刚创建的工作的状态? 2)由于上述回应并未传回工作编号,因此我无法真正使用
问题内容: 当我尝试使用以下命令触发构建时,出现以下错误: 卷曲http:// jenkins_server:port / jenkins / job / job_name / build?token = token_name 输出: 需要验证 <-您的身份验证为:您所在的匿名 组: 权限,你需要有(但没有):hudson.model.Hudson.Read …这是暗示:hudson.securi
Jenkins Jira插件,有没有办法配置插件以触发按需构建?。 我目前正在研究集成Jenkins和Jira,其中可以从Jira触发自动测试用例,Jenkins的结果将作为评论发布到Jira。(但上述触发应基于案例,不应在状态更改为Jira票证时触发) 我已经使用Zapier(试用版)评估了该场景,但无法根据需要获得它。欢迎提出任何建议
问题内容: 我想以编程方式从Java程序启动Maven发行版。该网页显示了一般的操作方法。这就是我所做的: 该论坛建议“在发布之前,请先查看一下表格,您就应该能够提出cURL请求”,这就是我所做的。发行至少开始。 我现在不知道如何逃避一切。浏览器将空格显示为“ +”,但是如果我以这种方式发送数据,它将无法正常工作。实际上,“”,“ +”或“%20”都不用作空格。 我仍然可以进入构建,因此我可以肯定
问题内容: 我正在使用以下方法远程调用Jenkins作业: 这里job被调用,并且是我使用的安全令牌。 现在,我需要将一些参数传递给此作业的build.xml文件,即。 我还没有弄清楚如何传递变量。 问题答案: 请参阅Jenkins文档: 参数化构建 以下是您感兴趣的行:
问题内容: 我正在使用Perl脚本使用LWP模块在Jenkins中触发构建。这行得通,但是执行完作业后,我想解析控制台输出。 有办法得到这个吗? 问题答案: 登录到Jenkins,并查看网页底部右侧附近的内容,然后单击链接。这将为您提供有关Jenkins RESTful API的信息 ,这是在您了解如何构造URL后从Jenkins提取信息的好方法。 并且,这是获取控制台文本的方法: 您可以使用Pe