1. 程式人生 > >利用jenkins自動構建基於docker的tomcat容器

利用jenkins自動構建基於docker的tomcat容器

軟體準備

jenkins-2.7.4
maven-3.0.5
git-2.8.0
gitlab-8.7.5
docker-17.05.0-ce
具體的安裝本處不予綴述,該yum的yum,make install或者rpm都可以,自由選擇。git最好不要用yum install git,自動安裝的版本太老,會導致後續jenkins執行git命令失敗。

環境搭建

這次的構建jenkins和docker並不在同一臺機器上,其中jenkins機器需要有maven和git,此外jenkins還需要安裝一些輔助外掛。

除了預設推薦安裝的外掛,還包括:
Publish Over SSH (用於連線到遠端伺服器執行命令)
Environment Injector Plugin(用於宣告變數,當然也可以直接寫死在shell中,這樣就不需要這個外掛了)
Hudson SCP publisher plugin(SCP拷貝war包到遠端主機)

配置jenkins

準備好外掛後我們就可以著手配置jenkins了,首先配置全域性的scp以及SSH,進入jenkins->系統管理->系統設定,找到SCP repository hosts欄目,新增目標伺服器配置(使用者名稱我改了一個假的,所以連線不上,正常情況不應該出現紅字報錯)
這裡寫圖片描述
然後再配置SSH,(為了方便使用賬號密碼方式,多動動手配置.ssh更安全)。找到Publish over SSH欄目進行配置
這裡寫圖片描述

全域性配置好後,就可以新建一個jenkins任務,構建自由風格的軟體專案,整體配置如下——
git配置
變數配置
執行maven命令打包
執行maven命令打包
構建後操作
scp
最後配置ssh登入到伺服器執行shell
ssh


完整shell如下

# 容器在執行
if [[ `docker ps | grep ${SERVICE_NAME}` ]]; 
then 
    # 停止執行中的容器
    docker stop ${SERVICE_NAME}
fi;

# 啟動
if [[ `docker ps -a | grep ${SERVICE_NAME}` ]]; 
then
    # 容器已建立,只重啟
    docker restart ${SERVICE_NAME}
else
    # 如果容器未建立,建立容器
    docker run -d -i -t --privileged=true --name=${SERVICE_NAME} -v ${WORK_DIR}:${CONTAINER_DIR} -p 12000:8080 tomcat:7
fi;

tomcat映象建立

其實直接執行指令碼即可,本地不存在映象docker會自動下載,但這裡還是囉嗦一下。
docker搜尋tomcat

docker search tomcat

選擇評星最高的官方映象下載
這裡寫圖片描述

docker pull tomcat:7

安裝成功後:
這裡寫圖片描述

準備就緒回到我們的jenkins,執行一次立即構建(嘗試失敗了好多次,耐心看日誌錯誤提示),成功。
這裡寫圖片描述
這裡寫圖片描述

接下來就可以配置自動構建
勾選Build periodically(節省資源可以用Poll SCM)
這裡寫圖片描述

儲存,搞定。