当前位置: 首页 > 面试题库 >

我如何使用指定参数在jenkns中获取最新版本

林炫明
2023-03-14
问题内容

我的目标是获取具有特定参数的最新Jenkins职位(职位名称hanna)。

我这样做的唯一原因是Jenkins从脚本触发时不返回内部版本号,因此我必须传递一个参数,但稍后必须能够对该参数进行查询。

现在我有Rigth,它不返回构建ID:

curl -X POST 'http://server:8080/api/xml?tree=jobs[name,builds[actions[parameters[name,value]]]]&xpath=/hudson/job[build/action/parameter[name="snapshot"][value="bb"]]&pretty=true'

我得到这样的工作清单:

<job><name>hanna</name><build><action><parameter><name>snapshot</name><value>bb</value></parameter></action><action/><action/><action/><action/></build><build><action><parameter><name>snapshot</name><value>bb</value></parameter></action><action/><action/><action/><action/></build><build><action><parameter><name>snapshot</name><value>aa</value></parameter></action><action/><action/><action/><action/><action/></build><build><action/><action/><action/><action/></build></job>⏎

这不完全是我想要的,因为我也想使用参数来完成作业hanna的最新实例snapshot=bb,该返回snap=aa也将返回,而且我也无法弄清楚Jenkins上存储的版本ID。有人可以告诉我吗?


问题答案:

如果您绝对需要使用Jenkins Rest api调用来查询包含特定构建参数的特定内部版本号,请使用以下查询:

http://localhost:8080/job/MyJenkinsJob/api/xml?tree=builds[actions[parameters[value]],number]&xpath=//build[action[parameter[value="MyParameterValue"]]]/number

这应该返回类似:

<number>49</number>

如果您想了解有关XPath过滤的更多信息,请参见此处的一些示例。

替代方法

要回答您的原始问题“当我从脚本中触发时,我这样做的唯一原因就是詹金斯不返回内部版本号”

您可以使用“ -i”参数运行curl。执行此操作时,您应该看到返回了队列ID#。

例如:
curl -X POST -i http//localhost:8080/job/test123/buildWithParameters?aaa=ABC

返回值:
HTTP / 1.1 201创建
日期:2016年8月17日星期三03:15:28 GMT
X-Content-Type-Options:nosniff
位置:http:// localhost:8080 / queue / item / 44
/
Content-Length:0
伺服器:Jetty(9.2.z-SNAPSHOT)

有了此队列ID,您可以通过以下步骤获取内部版本号:
http://localhost:8080/queue/item/44/api/xml

哪个应该返回带有您要查找的数字的XML。

例如:

<leftItem>
   ...
   <executable _class="hudson.model.FreeStyleBuild">
      <number>11</number>
      <url>http://localhost:8080/job/test123/11/</url>
    </executable>
</leftItem>


 类似资料:
  • 假设mybusiness是MyBusinessInformation类型的初始值设定项,它也负责凭证,locationName是一个字符串,它引用特定的位置,其格式是locations/XXXXXXX。我正在使用这个链接 错误是 通用域名格式。谷歌。应用程序编程接口。客户古格里皮斯。json。GoogleJsonResponseException:400错误请求 提前谢谢你。

  • 鸿蒙开发app,实现-提示用户打开app之后检查版本如果当前版本小于最新版本提示更新版本-功能。 通过getBundleInfo()获取到的是用户安装的版本还是最新版本呢? 如何获取用户安装的app版本?如何获取应用市场的最新版本? 通过getBundleInfo()获取app.json文件中的version字段

  • 我知道如何使用Volley GET方法进行登录,但如果我需要指定一个特定的“id”,该怎么办?我使用intent将列表项的“id”从远程数据库传递给另一个活动。putExtra。在下一个活动中,我将如何利用凌空的GET方法来解析和显示另一个表中使用传递的“id”的数据? 在浏览器中,我可以使用以下内容获得具有指定url和参数的响应: 但是我不知道如何将该url传递给Volley请求并在listvi

  • 什么是最新版本的卡桑德拉火花连接器。根据spark-cassandra-connector网站的最新版本是1.63。 基于spark-cassandra-connector上的兼容矩阵,需要Sparks2的连接器Ver2。那么我们在哪里可以找到Connector 2版本呢?外面有没有? 连接器火花卡桑德拉卡桑德拉Java驱动程序2.0 2.0 2.1.5*,2.2,3.0 3.0 1.6 1.6

  • 我刚刚注意到Gradle发布了2.12版,根据发行说明,脚本的编译速度应该提高20%。我想在Android Studio中升级到那个版本。 我用的是v1。在设置中,我选择了“使用默认gradle包装器”选项,这意味着每个项目将使用特定的gradle版本,而不是使用本地gradle安装。使用的版本是文件。例子: 现在,如果我将其更改为: 然后Android Studio找不到该版本并抛出一个错误。显

  • 问题内容: 我有一个C#/ Selenium / Specflow测试套件,正在使用xunit.console.exe使用Jenkins运行。我需要将这些测试指向不同的环境(Test / QA / Prod等),并想使用命令行参数。 我正在调用的批处理命令是: 并希望包含一个额外的参数,例如: “ -env = PROD”, 以将该作业指向特定的环境。 我愿意采取更好的方法。 问题答案: 对于此解