使用XPath筛选获取Jenkins作业指定参数yaml_data的值
问题原因
Jenkins XML API的tree参数仅支持字段层级裁剪,不支持你写的contains(text(),yaml_data)这类XPath函数式文本过滤规则,你写的过滤谓词会被直接忽略,因此接口会返回所有参数的name和value字段,达不到过滤效果。
可用方案
方案1:使用xpath参数精准提取(推荐)
Jenkins XML API原生支持xpath参数传入标准XPath表达式做内容过滤,直接用下面的请求即可精准拿到yaml_data对应的value节点:
https://jenkins.myorg.com/job/architecture-shared-services/job/nyjobdata/lastBuild/api/xml?xpath=//parameter[name[text()='yaml_data']]/value
返回结果示例:
<value>mycoredatahere</value>
如果不需要外层XML标签、只想拿纯文本内容,把XPath改成取文本节点即可:
https://jenkins.myorg.com/job/architecture-shared-services/job/nyjobdata/lastBuild/api/xml?xpath=//parameter[name='yaml_data']/value/text()
方案2:tree参数仅做字段裁剪+本地过滤
tree参数本身不支持内容维度的过滤,如果一定要用tree,可以先裁剪掉不需要的冗余字段,拿到返回结果后在本地代码里过滤出yaml_data对应的取值,裁剪字段的请求写法如下:
https://jenkins.myorg.com/job/architecture-shared-services/job/nyjobdata/lastBuild/api/xml?tree=actions[parameters[name,value]]
注意:该请求仍然会返回所有构建参数,仅会去掉参数节点上的
_class等无关属性,无法在接口侧完成过滤。
内容的提问来源于stack exchange,提问作者Chennai Cheetah
相关产品推荐
相关产品推荐

