jenkins具有豐富的api介面,可以通過呼叫api介面實現對job的觸發、刪除、檢視任務狀態等操作,支援http協議,支援使用者名稱、密碼認證,提供的這些介面可以實現對 jenkins 的控制。下面介紹jenkins api的使用例項。
先建立乙個有job任務執行和狀態查詢許可權的使用者,可使用admin使用者;新建乙個專案(可參考持續整合平台jenkins介紹)
get請求
url:http://username:password@hostname:port/job/任務名/lastbuild/buildnumber
import requests
url = ""
ret = requests.get(url)
print(ret.text)
輸出:
get請求
url:http://username:password@hostname:port/job/任務名//api/json
import json
import requests
url = ""
ret = requests.get(url)
print(json.dumps(ret.json(),indent=2))
返回的日誌
]
},{},
],"artifacts": ,
"building": false,
"description": null,
"displayname": "#17",
"duration": 109,
"estimatedduration": 222,
"executor": null,
"fulldisplayname": "demo #17",
"id": "17",
"keeplog": false,
"number": 17,
"queueid": 3,
"result": "success",
"timestamp": 1615705287802,
"url": "",
"builton": "",
"changeset": ,
"culprits":
}
使用post請求方法:
url:http://username:password@hostname:port/job/任務名/build
jenkins 跨站請求偽造保護採取 crumb(碎片生成器),可以使用使用者的api token來進行認證:
import requests
url = ""
username = "admin"
api_token = "11f8790b23a9983c0a218ba125aa855f61"
res = requests.post(url, auth=(username, api_token), verify=false)
api token可以在使用者配置中生成。
jenkinsapi庫封裝了jenkins api 的呼叫方法
安裝:
$ pip install jenkinsapi
下面**實現啟動job名為demo的任務
from jenkinsapi.jenkins import jenkins
jk = jenkins('', username='admin', password='admin', usecrumb=true)
# print(jk.keys())
job_name = 'demo'
if jk.has_job(job_name):
my_job = jk.get_job(job_name)
if not my_job.is_queued_or_running():
try:
last_build = my_job.get_last_buildnumber()
except:
last_build = 0
build_num = last_build + 1
# 啟動任務
try:
jk.build_job(job_name)
except exception as e:
print(str(e))
while true:
if not my_job.is_queued_or_running():
print("finished")
print(f"build_num:")
break
輸出:
持續整合(一)
一 提出 整合軟體 的過程不是新問題,如果專案開發的規模比較小,比如乙個人的專案,如果它對 外部系統 的依賴很小,那麼軟體整合不是問題,但是隨著軟體專案複雜度的增加 即使增加乙個人 就會對整合和確保 軟體元件 能夠在一起工作提出了更多的要求 要早整合,常整合 早整合,頻繁的整合幫助專案在早期發現專案...
持續整合簡介
想起我剛畢業後,進入一家以軟體外包為主的外企做開發。它使用傳統的瀑布式的軟體開發流程,沒有使用任何的敏捷實踐。我每天上班開啟電腦,拿到自己的任務,然後從版本控制更新 開啟工程按下build,準備進行今天的開發任務。突然發現build失敗 通常是編譯不過 大喊一聲 誰break build啦 也沒有人...
持續整合 CI
引子 記得剛加入趨勢開始開發工作 的時候曾被告知,趨勢有一套auto build的系統,會每天夜裡自動把當天check in的 進行構建,生成qa可測試 的build。每個rd都得小心提交code,因為專案結束的時候會看auto build的失敗率。可是構建失敗總是在所難免,尤其是每次要提交cand...