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

2、點擊“Build_with_Parameters”,彈出窗口,選擇分支,然后點擊“開始構建”,如下圖:

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

所以,當需要重啟很多個服務時,需要每個都去重復上面的步驟,選環(huán)境-》選服務-》Build_with_Parameters-》選分支-》開始構建,賊麻煩,很影響效率,這也是我寫這篇文章的原因,下面和大家分享下我的解決方案
二、分析
其實上面最終就是觸發(fā)構建動作,就是選擇了分支后,點擊開始構建,這里應該是調用了相關API,然后傳參就是分支,順著這個思路,我們去看看調用了什么接口,發(fā)現(xiàn)頁面看不到調用了什么接口,這就可能需要去找官方文檔了,看看有沒有什么說明,使用過Python的同學應該知道,里面提供了強大的類庫,其中就包括了jenkinsapi,可以直接使用
三、實現(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)單個服務版本
1、寫死某個服務
def baseWay(): job_name = 'Test-forlan' print(build_job_with_parameters(jenkins_url, job_name, parameters))
2、支持服務單選
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.")多服務版本
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.")最終實現(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程序轉換為桌面可執(zhí)行文件(.exe)
安裝pyinstaller庫
pip install pyinstaller
安裝完畢后,使用以下命令將Python程序轉為exe文件:
pyinstaller Jenkins.py
這將在當前目錄下生成dist文件夾,并在其中包含可執(zhí)行的exe文件。完成后,可以在桌面上找到生成的exe文件,雙擊運行即可,效果如下:

到此這篇關于通過Python腳本+Jenkins實現(xiàn)項目重啟的文章就介紹到這了,更多相關Python Jenkins項目重啟內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Ubuntu環(huán)境下玩轉Python配置的實戰(zhàn)開發(fā)全指南
本文將從基礎環(huán)境配置出發(fā),逐步深入到 Python 開發(fā)的核心場景,幫助開發(fā)者在 Ubuntu 系統(tǒng)中快速搭建穩(wěn)定、高效的 Python 開發(fā)環(huán)境,并通過實戰(zhàn)案例掌握關鍵開發(fā)技能2026-01-01
Python函數(shù)之zip函數(shù)的介紹與實際應用
zip() 函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關于Python函數(shù)之zip函數(shù)實際應用的相關資料,需要的朋友可以參考下2022-03-03

