前面在jenkins中安裝的gitlab hook支持不一樣的參數,具體能夠參考gitlab hook文檔https://github.com/jenkinsci/gitlab-hook-plugin#parameterized-projects。其中BRANCH表示觸發構建的分支名,咱們能夠在構建腳本中使用這個參數,進行不一樣的構建。要使用這個參數,須要在jenkins中進行配置git
接下來就是要編寫配置腳本了github
找到」構建「, 點擊「增長構建步驟", 選擇「Execute shell", 而後在裏面寫構建腳本spring
#應用名稱shell
export appname="example-springbootmvc"springboot
#master - dev環境構建配置,服務器
#登陸到服務器時使用的用戶名mvc
export master_user="root"app
#應用部署的目錄 構建完成後會/apps下(須要預先建立好這個目錄)會有example-springbootmvc目錄,這個就是你的應用部署的位置。
export master_appsdir="/apps"gitlab
#服務器去的IP地址列表 格式 ip1,ip2,ip3 ip地址直接用","分割gradle
export master_iplist="192.168.1.41"
#一下分別是 test-test環境構建, release-prepublish環境和publish-realpublish環境環境的構建,每一項參數的的含義和master同樣。
export appname="example-springbootmvc"
export master_user="root"
export master_appsdir="/apps"
export master_iplist="192.168.1.41"
export test_user="root"
export test_appsdir="/apps"
export test_iplist="192.168.1.42"
export release_user="root"
export release_appsdir="/apps"
export release_iplist="192.168.1.43,192.168.1.44"
/root/jenkins/scripts/distanddeploy.sh
#執行構建和部署腳本,這個腳本將使用以上配置的環境變量,
#distanddeploy.sh和它調用的一系列腳本代碼能夠在這裏下載https://github.com/brandonlyg/ci-scripts,
#把這些腳本方192.168.1.36的/root/jenkins/scripts中。
/root/jenkins/scripts/distanddeploy.sh
下面以master-dev配置爲例解釋一下,配置致使腳本的行爲
當把修改master分支代碼,push到gitlab上以後,將會觸發master構建。腳本將會執行一下步驟的動做:
1. 將master分支pull到本地。
2. 使用gradle build命令構建應用
3. example-springbootmvc下建立dist目錄,在這個目錄下建立分發包。
4. 將用multiconfig/master中的配置文件覆蓋分發包中config目錄下的配置文件
5. 將分發包打包成zip
6. 將zip包傳到192.168.1.41, 並部署在/apps下
7. 調用example-springbootmvc/bin/start.sh 啓動服務。
test和master分支的構建部署過程是同樣的。
和master,test相比,release構建部署過程有兩點不一樣:
1. 觸發方式不一樣,須要在Build with Parameters中觸發
2. 代碼處理方式不一樣,腳本會自動將test分支的代碼合併到release上再構建release分支
驗證方法:
dev環境
http://192.168.1.41:9300/rest/get
test環境
http://192.168.1.42:9301/rest/get
prepublish環境
http://192.168.1.43:9302/rest/get
返回相似於
{"retCode":0,"errMsg":null,"data":{"userId":"11111","timeStamp":1521293702385,"info":"this is 9 env:prepublish"}}