工欲善其事必先利其器,為了解脫程式員的,我們程式員本身發明了很多好用的工具,通過各種工具的組合來達到我們想要的結果
本文采用jenkins docker svn maven作為相關工具,項目spring boot架構
使用 個軟體版本
jenkins
Jenkins ver. 2.90docker 17.10-ce
svn 1.6
maven 3.5
spring boot 1.5.6
centos7
實作目标:當我們遷入代碼時自動更新到測試伺服器,如下圖

第一步 重新建構自己的jenkins鏡像
建構我們自己的jenkins,jenkins 我們在docker容器中運作,但是 我們還要用jenkins來建構docker鏡像這是就需要 jenkins容器中可以執行docker指令,是以我們需要建構自己的jenkins鏡像
這裡借鑒 大橋下的蝸牛 的部落格 同時也向大家推薦一下 https://blog.lab99.org/post/docker-2016-07-14-faq.html#ru-he-zai-docker-rong-qi-nei-shi-yong-docker-ming-ling-bi-ru-zai-jenkins-rong-qi-zhong
更詳細的 請大家浏覽上面的網址檢視。
我并沒有用上面的Dockerfile來建構jenkins鏡像因為上面使用的jenkins版本有點老不過依然能用下面不上我自己的 Dockerfile
FROM jenkinsci/jenkins:2.90-alpine
# 下載下傳安裝Docker CLI
USER root
RUN curl -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz \
&& tar zxvf docker-latest.tgz \
&& cp docker/docker /usr/local/bin/ \
&& rm -rf docker docker-latest.tgz
# 将 `jenkins` 使用者的組 ID 改為宿主 `docker` 組的組ID,進而具有執行 `docker` 指令的權限。
ARG DOCKER_GID=999
USER jenkins:${DOCKER_GID}
然後 docker build -t myjenkins:0.0.1 . 進行建構
運作
docker run --name jenkins \
-d \
-p 8081:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
myjenkins:0.0.1
然後就等待容器起來之後打開界面這樣打鏡像有一個問題(1、很難線上/離線安裝jdk除非在建構鏡像是就進行安裝實際上jenkins基礎鏡像有jdk環境 2、不知道為什麼 不能再挂載volume)
起來之後我們會看到 初始化安裝插件等等 這裡就不截圖展示了
第二步 安裝jenkins插件
系統管理->管理插件->可選插件
安裝相關maven插件
同樣安裝docker相關插件,安裝完後如下圖
上面的插件 有很多都是開始的時候安裝的。
第三步 設定docker遠端通路
本人使用的是centos7作業系統
首先打開docker安裝檔案路徑如下
/usr/lib/systemd/system
修改 docker.service檔案
ExecStart=/usr/bin/docker --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
然後重新整理配置檔案重新開機docker
sudo systemctl daemon-reload
sudo systemctl restart docker
這樣docker就會監聽2375端口我們就可以對他進行遠端操作
docker -H IP:2375 ps
執行docker指令時指定IP和端口号
第四部 配置我們的jenkins
系統管理->系統設定
選擇 svn使用版本
設定Docker builder 位址這裡一定要主要 是tcp協定不是http,填寫完一定要測試一下連結确定是否聯通
然後進行全局工具配置
系統管理->全局工具配置
進行maven配置 其中jdk在jenkins中已經存在jdk環境是以不需要設定
選擇完後點選儲存
第五部 建立item
首先配置svn
然後在設定建構步驟
這裡的基本思想是 首先maven将工程達成jar包,然後用Dockerfile檔案生成docker鏡像然後在上傳到私有倉庫再然後遠端執行部署和更新指令
首先設定maven建構
然後設定鏡像建構
選擇完Execute Docker command 之後在選擇 Create/build image
這裡說明一下
最上面選擇
隻有建構成功才進行下一步操作
然後在進行選擇進行鏡像推送
最後我們遠端執行docker指令進行運作建立容器
$WORKSPACE/src/docker
上面的路徑是java工程的路徑Dockerfile檔案在上面的路徑在工程中寫好另外我們工程生成的java包也是需要生成輸出到這個目錄的
$BUILD_NUMBER 這個全局變量是自增的每次建構都會+1可以用它來标記版本
到這裡我們的jenkins基本上已經設定完成可以儲存進行應用建構執行了。
最後 我們看下我們的項目結構
再附上本人java工程的Dockerfile檔案
FROM java:8
VOLUME /tmp
ADD testdemo-0.0.5.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 10005
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
本文還涉及很多其他知識比如私有倉庫的搭建Spring boot架構等知識
上面忘記了 如果要持續建構的話
需要設定一下
每5分鐘建構一次這樣就可以 我們編輯完代碼 上傳svn就會馬上釋出到測試版
解放Control+c Control+v操作