
一、寫在前面
開發(fā)小哥哥說:需要把現(xiàn)在jenkins的分支進行切換一下,換到一個新的分支上
我說:好噠
結(jié)果我打開jenkins一看,現(xiàn)在測試環(huán)境有接近30個的服務,我暈.....如果繼續(xù)往里面添加服務,每次切換分支都要手動重新配置每個服務的分支,那不得累死啦[/尷尬]......
今天要講的是,使用selenium,完成jenkins配置的批量修改
二、批量修改的思路
批量修改項目的分支思路可以分為以下兩步:
1、獲取目前所有的項目清單,填寫好每個項目需要切換到哪個分支上
2、打開項目的配置頁面,從步驟1中查詢這個項目的分支值是多少,然后修改分支的值,保存
三、項目清單獲取
步驟:打開jenkins,獲取項目名稱,將結(jié)果保存在csv文件中

項目列表
源代碼:
#coding=utf-8
from selenium import webdriver
import os
#設置瀏覽器驅(qū)動,chromedriver.exe為我本機下載好的瀏覽器驅(qū)動
driver = webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
#最大化窗口
driver.maximize_window()
jenkinsPage = 'http://10.10.4.176:8089/view/test-206/'
projectFileName = 'jenkinsProject.csv'
def getProjects(driver):
projects = []
project_tr_list = driver.find_element_by_id('projectstatus').find_elements_by_tag_name("tr")
file = open(projectFileName,'w')
for i in range(len(project_tr_list)):
project_tr = project_tr_list[i]
#print (project_tr.text)
text = project_tr.text
project_td_list = [str(n) for n in text.split()]
#projects.append(projectName)
if len(project_td_list) > 0 and i!=0:
file.write(project_td_list[0] +'\n')
print (project_td_list[0])
file.close()
driver.get(jenkinsPage)
getProjects(driver)
driver.quit()
運行結(jié)果為,在python命令運行目錄下生成名為jenkinsProject.csv的文件,文件內(nèi)容如下:

項目清單
四、項目配置填寫
在文件jenkinsProject.csv的第二列,填寫每個項目的分支配置,如下圖所示:

設置項目分支值
五、項目配置修改與保存
步驟:讀取jenkinsProject.csv文件,根據(jù)文件里內(nèi)容,打開每個項目的配置頁面,修改配置,并且保存
源代碼:
#coding=utf-8
from selenium import webdriver
import os
#設置瀏覽器驅(qū)動,chromedriver.exe為我本機下載好的瀏覽器驅(qū)動
driver = webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
#最大化窗口
driver.maximize_window()
jenkinsPage = 'http://10.10.4.176:8089/view/test-206/'
#jenkinsPage = 'http://10.10.4.176:8089/view/server-11-176/'
defaultProject = []
defaultValue = []
projectFileName = 'jenkinsProject.csv'
def getDataFromFile(projectFileName):
file = open(projectFileName,'r')
while 1:
line = file.readline()
if not line:
break
data = [str(n) for n in line.split(',')]
defaultProject.append(data[0])
defaultValue.append(data[1])
print (data[0] + ' ' + data[1] + '\n')
file.close()
def setProjectBranch(driver,strBranch):
branch_key = driver.find_element_by_xpath('//*[@id="main-panel"]/div/div/div/form/table/tbody/tr[79]/td[3]/div/div[1]/table/tbody/tr[1]/td[3]/input')
branch_key.clear()
branch_key.send_keys(strBranch)
#driver.find_element_by_id('yui-gen90-button').click()
def setProjects(driver):
for i in range(len(defaultProject)):
url = jenkinsPage + 'job/' +defaultProject[i]+ '/configure'
driver.get(url)
print ('項目'+defaultProject[i]+'的分支為: '+defaultValue[i])
setProjectBranch(driver, defaultValue[i])
getDataFromFile(projectFileName)
setProjects(driver)
運行結(jié)果,以上的代碼能夠?qū)⑽募enkinsProject.csv分支值設置到jenkins對應的項目中
六、寫在最后
在日常中,當你開始重復做一件事時,這時候你可以考慮寫代碼啦!
希望本文對你有幫助,也希望你我共同進步