Jenkins延遲觸發構建項目


一、背景

1. 需求

公司采用藍綠發布模式上線代碼,當把代碼通過 Jenkins 發布到綠色環境上的時候,測試大概有2個小時的時間去測試,如果測試沒有問題的話,通過腳本調用阿里雲SLBAPI的方式更改藍綠環境服務器的權重實現發布。

我們打算把改權重的腳本在 Jenkins 上,當執行完綠色環境的 job 后,延遲兩個小時自動執行更改權重的job(這段時間用於測試)。
image-20200412164343851

2. 環境說明

Job名稱 對應關系 說明
release-chaifen-fabu Job A 通過文本參數進行傳參,輸入要發布的環境(藍、綠)和要發布的服務
change_weight_test Job B 通過文本參數進行傳參,輸入要上線的環境為藍色還是綠色

release-chaifen-fabu
image-20200412170248260

change_weight_test
image-20200412170322139

二、配置

1. 配置延時觸發

1.1 非Pipeline配置

需要使用到 Join插件 ,自行安裝,在構建后操作中配置,可參考利用Jenkins插件實現多個job並行后再觸發job
image-20200412165954925

1.2 Pipeline配置

需要在 Job B 中配置延遲觸發機制,由於是測試環境,所以將延遲時間設置為150秒.

release-chaifen-fabu 構建用完后,等待150S再構建此 Job
image-20200412170900109

測試可以成功,但是有個新的問題,我的 Job B 也需要傳參,傳入 Blue 或者 Green ,這個該如何實現?

2. Job間傳參

2.1 非Pipeline配置

需要使用到 Parameterized Trigger plugin插件 ,自行安裝,安裝不成功的話,可以重啟 Jenkins 試試
image-20200412172402966

接下來操作可參考Jenkins:多job之間帶參數觸發的實現

2.2 Pipeline配置

由於我們采用的是 Pipeline 沒有 構建后操作 選項,我們將 Job A 中的參數傳到文本中

Get-Date -Format 'yyyy.M.d.H.m' >> C:\fabulogs\test.txt
echo "SystemName:$xinxi" >> C:\fabulogs\test.txt
echo "BusinessEnv:$system" >> C:\fabulogs\test.txt
echo "SystemEnv:$huanjing"  >> C:\fabulogs\test.txt

C:\fabulogs\test.txt 內容如下

########################
2020.4.13.22.44
SystemName:OscarSystem.BatchDownWorker
BusinessEnv:0
SystemEnv:Blue
########################
上線藍色環境
2020.4.13.22.45
########################
2020.4.13.23.6
SystemName:OscarSystem.BatchDownWorker;OscarSystem.Service;OscarSystem.ServiceWorker
BusinessEnv:0
SystemEnv:Green
########################
上線綠色環境
2020.4.13.23.6
########################
2020.4.13.23.7
SystemName:OscarSystem.BatchDownWorker;OscarSystem.Service;OscarSystem.ServiceWorker
BusinessEnv:0
SystemEnv:Blue

Job B 執行的腳本中,規定其通過讀取發布的日志文件( C:\fabulogs\test.txt )方式傳參

# 取出包含SystemEnv內容的最后一條信息
# $a=SystemEnv:Blue
$a=(cat C:\fabulogs\test.txt | findstr "SystemEnv"  | C:\tools\tail.exe -n 1 )
# $huanjing=Blue
$huanjing=($a -split ":")[1]

使用的是 Windows 環境,需要下載 tail for windows


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM