1. 程式人生 > >基於Docker、Jenkins和Saltstack的持續部署方案

基於Docker、Jenkins和Saltstack的持續部署方案

一、基礎環境

1、Centos7.2

# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)
# docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      88a4867/1.12.6
 Built:           Mon Jul  
3 16:02:02 2017 OS/Arch: linux/amd64 Server: Version: 1.12.6 API version: 1.24 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64 Go version: go1.7.4 Git commit: 88a4867/1.12.6 Built: Mon Jul 3 16:02:02 2017 OS/Arch: linux/amd64

3、Saltstack版本

# salt --version
salt
2015.5.10 (Lithium)

4、Jenkins版本

二、方案說明

1、開發提交程式碼到git伺服器,通過鉤子觸發Jenkins執行構建;

2、Jenkins將程式碼打包,並通過Dockerfile執行build構建映象;

3、映象構建成功之後,將映象PUSH到Docker倉庫;

4、通過測試伺服器pull新版映象部署,呼叫測試服務介面,檢測服務是否正常;

5、通過salt-api傳送指令到生產環境,進行分發部署。

Flow_Chart

三、Jenkins設定

General

image

配置引數

image

原始碼管理

image

構建觸發器

image

構建環境

image

bash /usr/local/jenkins/home/scripts/jenkins_build.sh
##構建的指令碼 sed -i '/SERVER_PORT/d' /usr/local/jenkins/home/scripts/config.ini ## 清除歷史引數 sed -i '/TARGET/d' /usr/local/jenkins/home/scripts/config.ini ## 清除歷史引數 echo TARGET=${TARGET} >>/usr/local/jenkins/home/scripts/config.ini ##將新的引數寫入配置 echo SERVER_PORT=${SERVER_PORT}>>/usr/local/jenkins/home/scripts/config.ini

構建

構建與構建環境的區別,構建環境有兩個選項:Pre build script(構建指令碼執行之前操作的內容) 和 Post build script(構建指令碼執行之後操作的內容)

在本例中使用Pre build script,先在構建環境中構建好Docker映象,然後在構建中拉取到測試環境執行服務。

image

Salt-api設定  需要安裝<SaltStack plugin>外掛

image