python+selenium批量修改jenkins項目分支

一、寫在前面

開發(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對應的項目中


六、寫在最后

在日常中,當你開始重復做一件事時,這時候你可以考慮寫代碼啦!

希望本文對你有幫助,也希望你我共同進步

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,929評論 2 59
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評論 19 139
  • 最近兒子有點不太聽話,用我媽媽的話說:只要他爸媽都不在家,他就沒那么多事。 到底是事多的小孩子好,還是事少的小孩子...
    朱團輝閱讀 670評論 0 6
  • 收獲了有很多…… 第一 兩個月時間,一共寫了31篇文章。 第二 寫了36226個文字,獲得了142個喜歡。 第三 ...
    傲雪如梅閱讀 312評論 3 13

友情鏈接更多精彩內(nèi)容