以下REST查询将返回上次成功构建作业的参数:
https://localhost/job/test1/lastSuccessfulBuild/api/json
我有兴趣检索这个构建的一个参数,即BUILD_VERSION:
{
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
"actions": [
{
"_class": "hudson.model.CauseAction",
"causes": [
{
"_class": "hudson.model.Cause$UpstreamCause",
"shortDescription": "Started by upstream project \"continuous-testing-pipeline-for-nightly\" build number 114",
"upstreamBuild": 114,
"upstreamProject": "continuous-testing-pipeline-for-nightly",
"upstreamUrl": "job/continuous-testing-pipeline-for-nightly/"
}
]
},
{ },
{
"_class": "hudson.model.ParametersAction",
"parameters": [
{
"_class": "hudson.model.StringParameterValue",
"name": "BUILD_VERSION",
"value": "1.1.15"
有没有办法直接使用REST Api检索BUILD_VERSION(1.1.15),还是必须手动解析json字符串? 感谢
答案 0 :(得分:3)
简短回答:不。
以编程方式访问通过JSON API公开的任何属性的最简单方法是从Jenkins支持的JSON API之一获取JSON(在您的情况下:https://localhost/job/<jobname>/lastSuccessfulBuild/api/json
)
Wammo,您可以访问整个对象树及其所有值。
我使用这种方法编写了一个名为“BuildDashboard”的MVC5 ASP.NET站点,以提供开发团队可能想要的所有信息,并回答他们所有的问题。
答案 1 :(得分:2)
是的,你可以获得价值,但它只适用于XML API :(
JSON API将使用Tree返回简化的json对象:)
所以Jenkins为您提供api(XML,JSON,PYTHON),您可以从中读取任何项目的Jenkins相关数据。详细文档在https://localhost/job/test1/lastSuccessfulBuild/api
中提供因为它清楚地表明了
XML API - 使用XPath控制所需的片段。例如,.. / api / xml?xpath = / / [0] < / p>
JSON API - 使用树
Python API - 使用st.literal_eval(urllib.urlopen(“...”)。read())
以上所有内容均可用于从API中获取的整个杂乱数据中获取特定片段/片段。
在您的情况下,我们将使用树,原因很明显:)
语法: tree=keyname[field1,field2,subkeyname[subfield1]]
为了检索BUILD_VERSION,即值
//jenkins/job/myjob/../api/json?tree=lastSuccessfulBuild[parameters[value]]
以上应该可以满足您的需求,但需要一些跟踪和错误:)
您还可以在此处参考,以便更好地了解如何在JSON API中使用Tree https://www.cloudbees.com/blog/taming-jenkins-json-api-depth-and-tree
希望有所帮助:)
答案 2 :(得分:0)
这是一个带有公共jenkins实例及其构建之一的示例,以便获取“ lastSuccessfulBuild”构建的“ candidate_revision”参数: