2014-03-04 58 views
3

我打個電話,如:如何通過API獲取完成的Jenkins作業的最終狀態?

http://jenkins.mysite.com/job/MYJOB/api/json?depth=2&tree=builds%5Bactions%5Bparameters%5Bname%2Cvalue%5D%5D%2Cnumber%2Cresult%5D

,並得到這樣的結果:

{ 
    "builds": [{ 
     "actions": [{ 
      "parameters": [{ 
       "name": "JT_BUILD_ID", 
       "value": "1274" 
      }] 
     }, {}, {}, {}, {}], 
     "number": 3, 
     "result": "SUCCESS" 
    }, { 
     "actions": [{ 
      "parameters": [{ 
       "name": "JT_BUILD_ID", 
       "value": "1273" 
      }] 
     }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], 
     "number": 2, 
     "result": "SUCCESS" 
    }, { 
     "actions": [{ 
      "parameters": [{ 
       "name": "JT_BUILD_ID", 
       "value": "0" 
      }] 
     }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], 
     "number": 1, 
     "result": "SUCCESS" 
    }] 
} 

我傳遞JT_BUILD_ID這樣我就可以匹配這個MYJOB的運行。

當我找到匹配的JT_BUILD_ID時,我看結果,當我看到成功時,我認爲我完成了。但這項工作仍在繼續發佈構建操作。

我該如何匹配構建實例(使用參數JT_BUILD_ID)並檢測作業的最終狀態?

+0

你對API使用哪種腳本? javascript/python? 「如何通過JT_BUILD_ID」直接在API中提問? –

+0

只是在python(沒有庫,只是原始代碼) 像: /job/MYJOB/buildWithParameters?delay = 0sec&token = XBUILD&JT_BUILD_ID = 1276 – pbx

+0

在你的情況下,爲什麼不使用if語句來檢查?讓我們假設json_result在字符串之上,build_no是你想要的。然後'filter(lambda x:x [「actions」] [0] [「parameters」] [0] [「name」] =='JT_BUILD_ID'and x [「number」] == build_no,json_result [「builds」 ])' –

回答

3

還有buildingbuilds下的另一個關鍵,如果後期構建仍在工作,狀態將保持爲true。當作業完成後,它將變爲false

因此,你可以添加額外的檢查building == false,最終的URL看起來像下面

https://ci.jenkins-ci.org/view/Libraries/job/lib-jira-api/api/json/?pretty=true&depth=2&tree=builds[actions[parameters[name,value]],number,result,building]

結果也能像你的情況之下,如果最新版本正在進行(在建後階段)

{ 
    "builds": [{ 
    "actions": [{ 
     "parameters": [{ 
      "name": "JT_BUILD_ID", 
      "value": "1274" 
     }] 
    }, {}, {}, {}, {}], 
    "building" : true, 
    "number": 3, 
    "result": "SUCCESS" 
    }, { 
    "actions": [{ 
     "parameters": [{ 
      "name": "JT_BUILD_ID", 
      "value": "0" 
     }] 
    }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], 
    "building" : false, 
    "number": 1, 
    "result": "SUCCESS" 
    }] 
} 
相關問題