持續整合 Jenkins API簡單使用

2022-09-24 05:48:12 字數 2820 閱讀 6226

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...