在研究jenkinsapi的時候,在百度和google查找資料,總是些零零碎碎的介紹,基於這段時間的研究,有點小成就,所以將研究的工作記錄下來。
jenkinsapi庫的安裝
下載:在https://pypi.python.org/pypi/jenkinsapi/上下載jenkinsapi-0.2.26.tar.gz;
安裝:解壓jenkinsapi-0.2.26.tar.gz,進入jenkinsapi-0.2.26目錄,運行pythonsetup.py install 進行安裝,聯網情況下,程序會直接下載一些包,並進行安裝,運行結束後可以對該庫進行操作。
jenkinsapi庫封裝的類
該庫下封裝了23個類,主要有jenkins.py、job.py、build.py、view.py、node.py等,其主要作用:
1.jenkins.py
主要通過該接口進入jenkins服務器,對job、node進行操作,有:
get_jobs、create_job、build_job、delete_job、get_node、get_queue、get_plugins、get_master_data等;
2.job.py
針對job的構建進行操作,有:
get_first_buildnumber、get_last_stable_buildnumber、get_last_failed_buildnumber、get_next_build_number、is_queued、is_running、is_enabled、delete_from_queue等;
3.build.py
對構建的job的構建結果進行分析有:
get_number、get_status、get_revision_branch、get_master_job_name、get_master_build_number等;
4.view.py
對view視圖進行操作
5.node.py
對node節點進行操作
jenkinsapi庫的使用
獲得jenkins中job的列表
代碼爲:
# -*- coding: gb2312 -*- """ 輸入:jenkins服務器的地址,用戶名和密碼 輸出:已定義的job的列表 """ import datetime, time from jenkinsapi.jenkins import * from jenkinsapi.job import * from jenkinsapi.build import Build def Url_Get_Job_List(url='http://localhost:8080', username='jenkins', password='jenkins'): jenkins = Jenkins(url, username, password) count = 0 for job_name in jenkins.keys(): my_job = jenkins.get_job(job_name) count = count + 1 print "Job" + str(count) + " : "+job_name if __name__ == "__main__": Url_Get_Job_List()
運行後輸出:
Job1 : create
Job2 : JenkinsTest
Job3 : Test_1
根據給定job名獲得job的構建情況
代碼:
# -*- coding: cp936 -*- """ 輸入:jenkins job名稱和日期(年、年-月、年-月-日) 輸出:job的名稱、日期、執行次數、成功次數、失敗次數、未執行次數、不穩定次數 """ import datetime, time from jenkinsapi.jenkins import * from jenkinsapi.job import * from jenkinsapi.build import Build def Get_Date_List(Job_Name): my_job = jenkins.get_job(Job_Name) first_build = my_job.get_first_buildnumber() #獲得jenkins列表中的第一個構建數目,不一定是從1開始的 last_build = my_job.get_last_buildnumber() #獲得最近一次構建的數目 for count in xrange(first_build, last_build+1): #依次獲得每一個job號 count_build = my_job.get_build(count) start_time = count_build.get_timestamp() #獲得構建時間,時區好像不大對 adjust_time = start_time + datetime.timedelta(hours=8) #所以在這裏加了8小時,變成北京時間了 Build_Time = adjust_time.strftime("%Y-%m-%d") #輸出時間的格式 Status =count_build.get_status() #返回這次構建的狀態,成功或失敗 print my_job, count, Build_Time, Status if __name__ == "__main__": jenkins = Jenkins('http://localhost:8080', 'jenkins', 'jenkins') Job_Name = 'create' Get_Date_List(Job_Name)
運行結果如下:
create 1 2015-03-24 FAILURE
create 2 2015-03-24 FAILURE
create 3 2015-03-24 SUCCESS
create 4 2015-03-25 SUCCESS
create 5 2015-03-30 FAILURE
通過該模塊,運行腳本能夠得到jenkins每天的構建的詳細信息,方便每天的統計。
本人接觸python時間不長,研究也比較膚淺,希望能夠和大家一起學習,歡迎一起討論!