通過Python腳本+Jenkins實(shí)現(xiàn)項目重啟
一、需求
微服務(wù)項目,服務(wù)很多,重啟服務(wù),基本都是通過Jenkins進(jìn)行發(fā)布,過程差不多如下:
1、登錄后臺,選擇環(huán)境和服務(wù),如下圖:

2、點(diǎn)擊“Build_with_Parameters”,彈出窗口,選擇分支,然后點(diǎn)擊“開始構(gòu)建”,如下圖:

通過上面的操作,就會進(jìn)入構(gòu)建隊列排隊,如果系統(tǒng)沒有正在構(gòu)建的,很快就可以在構(gòu)建執(zhí)行狀態(tài)中看到,受到Maven項目配置的執(zhí)行者數(shù)量的限制,如下圖,公司限制的是同一時間只能有3個在構(gòu)建中

所以,當(dāng)需要重啟很多個服務(wù)時,需要每個都去重復(fù)上面的步驟,選環(huán)境-》選服務(wù)-》Build_with_Parameters-》選分支-》開始構(gòu)建,賊麻煩,很影響效率,這也是我寫這篇文章的原因,下面和大家分享下我的解決方案
二、分析
其實(shí)上面最終就是觸發(fā)構(gòu)建動作,就是選擇了分支后,點(diǎn)擊開始構(gòu)建,這里應(yīng)該是調(diào)用了相關(guān)API,然后傳參就是分支,順著這個思路,我們?nèi)タ纯凑{(diào)用了什么接口,發(fā)現(xiàn)頁面看不到調(diào)用了什么接口,這就可能需要去找官方文檔了,看看有沒有什么說明,使用過Python的同學(xué)應(yīng)該知道,里面提供了強(qiáng)大的類庫,其中就包括了jenkinsapi,可以直接使用
三、實(shí)現(xiàn)
公共代碼
# Jenkins地址和請求參數(shù)
jenkins_url = 'http://xxx.xx.xxx.xxx:端口號'
parameters = {'BRANCH': 'origin/dev-test-common'}
def build_job_with_parameters(jenkins_url, job_name, parameters):
jenkins = Jenkins(jenkins_url, username='forlan', password='forlanxxx')
job = jenkins[job_name]
return job.invoke(build_params=parameters)單個服務(wù)版本
1、寫死某個服務(wù)
def baseWay(): job_name = 'Test-forlan' print(build_job_with_parameters(jenkins_url, job_name, parameters))
2、支持服務(wù)單選
options = [
"Test-forlan1",
"Test-forlan2",
"Test-forlan3"
]
def oneChoiceWay():
while True:
for i, option in enumerate(options):
print(f"{i}: {option}")
choice = int(input("Enter your choice : "))
if choice >= 0:
print(options[choice], "重啟中")
print(build_job_with_parameters(jenkins_url, options[choice], parameters))
elif choice == -1:
break
else:
print("Invalid choice. Please try again.")
print("----------------------------------\n")
print("Loop exited.")多服務(wù)版本
options = [
"Test-forlan1",
"Test-forlan2",
"Test-forlan3"
]
def moreChoiceWay():
exitFlag = False
while True:
for i, option in enumerate(options):
print(f"{i}: {option}")
choiceStr = input("Enter your choices(split by ',') : ")
choices = choiceStr.split(',')
for choice in choices:
choice = int(choice)
if choice >= 0:
print(build_job_with_parameters(jenkins_url, options[choice], parameters))
elif choice == -1:
exitFlag = True
break
else:
print("Invalid choice. Please try again.")
print("----------------------------------\n")
if (exitFlag):
break
print("Loop exited.")最終實(shí)現(xiàn)效果
0: Test-forlan11: Test-forlan22: Test-forlan3Enter your choices(split by ',') : 1,2Test-forlan2 重啟中Test-forlan3 重啟中----------------------------------
0: Test-forlan11: Test-forlan22: Test-forlan3Enter your choices(split by ',') : -1----------------------------------
Loop exited.
將Python程序轉(zhuǎn)換為桌面可執(zhí)行文件(.exe)
安裝pyinstaller庫
pip install pyinstaller
安裝完畢后,使用以下命令將Python程序轉(zhuǎn)為exe文件:
pyinstaller Jenkins.py
這將在當(dāng)前目錄下生成dist文件夾,并在其中包含可執(zhí)行的exe文件。完成后,可以在桌面上找到生成的exe文件,雙擊運(yùn)行即可,效果如下:

到此這篇關(guān)于通過Python腳本+Jenkins實(shí)現(xiàn)項目重啟的文章就介紹到這了,更多相關(guān)Python Jenkins項目重啟內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyCharm中的terminal運(yùn)行從PS修改成cmd方式
這篇文章主要介紹了PyCharm中的terminal運(yùn)行從PS修改成cmd方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Anaconda虛擬環(huán)境配置Python庫與Spyder編譯器的方法
在文章創(chuàng)建Anaconda虛擬Python環(huán)境的方法中,我們介紹了在Anaconda環(huán)境下,創(chuàng)建、使用與刪除Python虛擬環(huán)境的方法,而創(chuàng)建虛擬環(huán)境后,就需要在對應(yīng)的環(huán)境內(nèi)配置各類庫與軟件,本文就對這些操作加以介紹,感興趣的朋友感興趣的朋友一起看看吧2024-04-04
python使用Pandas導(dǎo)出數(shù)據(jù)并保存為CSV文件
Pandas是Python中用于數(shù)據(jù)分析和處理的強(qiáng)大庫,它提供了靈活高效的數(shù)據(jù)結(jié)構(gòu),如DataFrame和Series,使得對數(shù)據(jù)的處理變得簡單易行,在實(shí)際應(yīng)用中,我們經(jīng)常需要將處理后的數(shù)據(jù)保存為CSV,所以本文給大家介紹了python使用Pandas導(dǎo)出數(shù)據(jù)并保存為CSV文件2024-12-12
用python寫一個windows下的定時關(guān)機(jī)腳本(推薦)
由于本人經(jīng)常使用筆記本共享WiFi,但是又不想筆記本開機(jī)一夜,每次都是使用dos命令關(guān)機(jī),感覺好麻煩,然后小編想到用python寫一個定時關(guān)機(jī)的腳本,具體實(shí)例代碼請參考本文2017-03-03
python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03
Python 獲取windows桌面路徑的5種方法小結(jié)
今天小編就為大家分享一篇Python 獲取windows桌面路徑的5種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

