使用python腳本操作Jenkins-job

今天在翻有道雲筆記,看到了曾經在LS寫過的一段python腳本,拿來給大家分享下

<code>#!/usr/bin/python
#-*- coding: utf-8 -*-

import jenkins
import time
import sys
import json
def jenkins_job(job_name,kw=""):
\tserver = jenkins.Jenkins('http://172.16.1.134:8080/jenkins', username='leo.li', password='111111')
\treload(sys)
\tsys.setdefaultencoding('utf-8')
\tjob_name=job_name.decode('gbk').encode('utf-8')
\t#kw={"app":"search-service","ip": "172.16.1.130","bantch":"master"}
\tprint kw
\tkw_len=len(kw)
\tr1= server.get_job_info(job_name)['lastCompletedBuild']['number']#最後一次完成的構建號
\tr2= server.get_job_info(job_name)['lastBuild']['number']
\tprint type(kw)
\tif kw_len != 0:

\t\tkwj1=eval(kw)
\t\tprint kwj1
\t\tkwj2=json.dumps(kwj1)
\t\tprint kwj2
\t\tkwj=json.loads(kwj2)
\t\tprint kwj
\t\tprint type(kwj)
\t\tparameters=kwj
\telse:
\t\tparameters={}

\tprint u'構建號','r2=',r2
\tif r1 == r2:
\t\tserver.build_job(job_name,parameters=parameters)
\t\tprint u'正在發送構建命令,請等待10秒'
\t\ttime.sleep(10)
\t\tnum_id=server.get_job_info(job_name)['lastBuild']['number']
\t\tprint u'新的構建號numb_id=',num_id
\t\ta=num_id-r2
\t\tprint u'新舊構建號差值為a=',a
\t\tif a == 1:
\t\t\tre_rn=server.get_build_info(job_name,num_id)['building']
\t\t\twhile re_rn :
\t\t\t\tprint u'構建還在執行中,請等待10秒'
\t\t\t\ttime.sleep(10)
\t\t\t\tre_rn=server.get_build_info(job_name,num_id)['building']
\t\t\tprint u"構建完畢"
\t\t\tresult1=server.get_build_info(job_name,num_id)['result']
\t\t\tprint "構建結果是:%s" %result1
\t\telse:

\t\t\tprint u'構建編號異常,請重試'
\telse:
\t\tprint u'還有job正在執行中,請稍後再試'

if __name__ == '__main__':
\t
\tjob_name=sys.argv[1]
\t
\tif len(sys.argv) == 3 :
\t\tkw=sys.argv[2]
\t\tjenkins_job(job_name,kw)
\tif len(sys.argv) == 2 :
\t\tjenkins_job(job_name)/<code>


分享到:


相關文章: