Docker+Jenkins持續集成環境(1)使用Docker搭建Jenkins+Docker持續集成環境


本文介紹如何通過Jenkins的docker鏡像從零開始構建一個基於docker鏡像的持續集成環境,包含自動化構建、發布到倉庫\並部署上線。

0. 前置條件

服務器安裝docker,並啟動docker swarm

注意docker啟動時,需要開啟tcp端口

1.Jenkins 安裝

1.1 命令行啟動:

安裝比較簡單,直接運行

docker run -p 8080:8080 -p 50000:50000 -d  -v /home/jenkins-home-docker:/var/jenkins_home  jenkins/jenkins:lts

運行后查看日志,獲取token,打開ip:8080,輸入token,安裝常用插件

1.2 使用swarm集群管理工具

在services里,添加服務

enter description here

2.Jenkins 插件安裝

我們需要一些插件支持

  • Docker plugin : 提供docker 構建和發布
  • SSH plugin : 提供通過SSH在遠程主機執行命令,用於部署服務
  • maven plugin: 支持maven

系統管理-插件管理里進行安裝即可。

2.1 docker 配置

“系統管理-系統設置-雲” 里新增
enter description here

注意docker host url需要加上tcp://

2.2 ssh主機 配置

“系統管理-系統設置-SSH remote hosts” 里配置SSH遠程主機

enter description here

2.3 配置下email

在系統設置里直接設置,配置下smtp

2.4 配置jdk、maven

在系統管理-全局工具配置里設置JDK自動安裝

enter description here

maven同樣配置即可

3.Jenkins 項目配置

3.1 新建項目

我們是maven項目,選擇maven

enter description here

3.2 配置源碼管理

首先配置源碼,可以是git或者svn,項目組用的是svn

enter description here

3.3 配置觸發器

配置自動構建,勾選POLL SCM,配置5分鍾檢查一次,當svn發生變化時,會自動啟動構建

enter description here

3.4 配置Build

簡單的maven項目,構建使用pom.xml,執行package -DskipTests

enter description here

3.5 配置Post Steps

Post Steps是指構建完成執行的步驟,我們會實現構建docker,發布docker和部署服務

3.5.1 配置docker

點擊add post-build step,選擇Build/publish docker image:

enter description here

選擇cloud為先前配置的docker-cloud,image填寫私服發布地址,勾上push image。

enter description here

這樣配置,構建完成后會自動push到私服。

3.5.2 配置遠程部署

我們使用docker stack來部署服務

首先,編寫docker-compose.yml

version: "3"
services:
   backend:
	image: 192.168.86.8:5000/allinone-service-cicd
	deploy:
	  replicas: 1
	  restart_policy:
		condition: on-failure
	ports:
	  - "8007:8006"
	networks:
	  - webnet
networks:
  webnet:

保存到docker服務器,比如/root/allinone/allinone-service/allinone目錄

然后,添加post-build step:

enter description here

選擇配置好的遠程docker主機:

enter description here

填入命令:

cd /root/allinone/allinone-service/allinone
docker stack down allinone-cicd
docker stack deploy -c docker-compose.yml allinone-cicd
  • docker stack down 將原先服務下線
  • docker stack deploy -c 重新部署服務

4 開始構建

4.1 手動構建

回到工程,點擊立即構建,第一次構建會自動下載jdk,maven,會比較慢

enter description here

等待一會,構建成功:

9e70992ebc17: Pushing [===============================================>   ]  42.66MB/45.02MB
9e70992ebc17: Pushing [=================================================> ]  44.96MB/45.02MB
9e70992ebc17: Pushing [==================================================>]  45.02MB
9e70992ebc17: Pushed
latest: digest: sha256:5df6c97d6173527bc92ddc436fcef063069cd1cd3d0da8a0c74d2238443ae4d6 size: 1582
Docker Build Done
[SSH] script:

cd /root/allinone/allinone-service/allinone
docker stack down allinone-cicd
docker stack deploy -c docker-compose.yml allinone-cicd

[SSH] executing...
Removing service allinone-cicd_backend
Removing network allinone-cicd_webnet
Creating network allinone-cicd_webnet
Creating service allinone-cicd_backend

[SSH] completed
[SSH] exit-status: 0

Finished: SUCCESS

如果配置了郵件通知,會收到構建成功郵件。

4.2 自動構建

SVN提交一個變更,等幾分鍾,查看Subversion Polling Log,已經有記錄了,發現已經自動構建了一個版本

enter description here

完美!


作者:Jadepeng
出處:jqpeng的技術記事本--http://www.cnblogs.com/xiaoqi
您的支持是對博主最大的鼓勵,感謝您的認真閱讀。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM