使用gitlab, jenkins搭建CI(持續集成)系統(4) 灰度發佈publish

publish環境是正式環境,和dev, test, prepublish環境不一樣的是,正式環境通常要更加謹慎一些,發佈的時候須要有一個灰度過程,即:分屢次部署,每次部署幾個服務器節點,驗證沒有問題之後,再部署幾臺,直到全部的節點多部署完成。spring

jenkins提供的一種choice parameter的構建參數類型,能夠使用這種參數類型實現灰度發佈的功能。瀏覽器

添加一個名爲DEPLOY的choice parameter, 添加兩個選項group01, group02。springboot

 

接下來修改構建腳本服務器

############mvc

export appname="example-springbootmvc"app

export master_user="root"
export master_appsdir="/apps"
export master_iplist="192.168.1.41"this

export test_user="root"
export test_appsdir="/apps"
export test_iplist="192.168.1.42"spa

export release_user="root"
export release_appsdir="/apps"
export release_iplist="192.168.1.43,192.168.1.44"rest

export publish_user="root"
export publish_appsdir="/apps"
#定義choice paramter DEPLOY 可選值 group01 group02
export publish_group01_iplist="192.168.1.45"
export publish_group02_iplist="192.168.1.46"blog


/root/jenkins/scripts/distanddeploy.sh

####################

在distanddeeploy.sh中

if [ "$BRANCH" = "publish" ]; then
eval iplist=\$${BRANCH}_${DEPLOY}_iplist
fi

這裏使用了DEPLOY變量,這個變量只會影響publish構建過程。

 

手動觸發構建時,BRANCH填publish,  DEPLOY選擇group01時,對應的是

export publish_group01_iplist="192.168.1.45"

將會部署192.168.1.45節點

當DEPLOY選擇group02時,對應的是

export publish_group02_iplist="192.168.1.46"

將會部署192.168.1.46節點

 

部署完成以後驗證

在瀏覽器上輸入 

http://192.168.1.45:9303/rest/get

http://192.168.1.46:9303/rest/get 

返回相似於:

{"retCode":0,"errMsg":null,"data":{"userId":"11111","timeStamp":1521293070588,"info":"this is 9 env:realpublish"}}

這就表示部署成功啦!! 

相關文章
相關標籤/搜索