Docker——Jenkins + Git + Registry構建自動化持續集成環境(CI/CD)


 

前言

在互聯網時代,對於每一家公司,軟件開發和發布的重要性不言而喻,目前已經形成一套標准的流程,最重要的組成部分就是持續集成(CI)及持續部署、交付(CD)。

本文基於Jenkins+Docker+Git\Svn實現一套CI自動化發布流程,同時支持撤回。

 

 

一、發布流程設計

工作流程:

  1. 開發人員提交代碼到Git或Svn版本倉庫;
  2. Jenkins人工/定時觸發項目構建;
  3. Jenkins拉取代碼、代碼編碼、打包鏡像、推送到鏡像倉庫;
  4. Jenkins在Docker主機創建容器並發布。

 

 

二、環境設計

1、服務器部署信息

服務器 主機名 IP 運行服務
jenkins服務器 jenkins 10.0.xxx.100 安裝docker、 運行jenkins容器、git客戶端、jdk、maven
docker服務器 docker 10.0.xxx.103 安裝docker、創建鏡像運行java項目:bsm
Git和私有倉庫服務器 git_registry 10.0.xxx.104 安裝docker、git服務、運行registry私有倉庫容器

2、版本信息

名稱 版本 軟件包 說明
服務器 Centos 7.4 linux系統
docker 17.12.0-ce yum安裝 docker引擎服務
jdk 1.8.0_45 jdk-8u45-linux-x64.tar.gz 運行jenkins需要的JDK環境
maven 3.5.0 apache-maven-3.5.0-bin.tar.gz 構建java項目需要的工具
jenkins 最新版本 docker hub下載最新jenkins鏡像 持續集成工具
registry 最新版本 docker hub下載最新registry鏡像 docker私有倉庫

jdk官方下載地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
maven官方下載地址:https://maven.apache.org/download.cgi
jenkins官方鏡像地址:https://hub.docker.com/_/jenkins/
registry官方鏡像地址:https://hub.docker.com/_/registry/

3、操作系統信息

  CentOS7.4

 

 

三、部署Git或Svn倉庫

在【git_registry】主機安裝r。

具體方法請參考網上教程 

 

 

四、部署Jenkins

在【jenkins】主機安裝Jenkins。

安裝方法請參考:https://www.cnblogs.com/caoweixiong/p/12306340.html

 

 

五、安裝Docker

在【jenkins、docker、git_registry】3台主機安裝Docker。

安裝方法請參考:https://www.cnblogs.com/caoweixiong/p/12186736.html

 

 

六、部署私有鏡像倉庫

Docker Hub作為Docker默認官方公共鏡像;這里搭建私有鏡像倉庫,官方也提供registry鏡像,使得搭建私有倉庫非常簡單。

在【git_registry】主機上搭建私有鏡像倉庫,具體方法請參考:https://www.cnblogs.com/caoweixiong/p/12197602.html

 

 

七、構建Tomcat基礎鏡像

項目需要使用tomcat,這里使用Dockerfile來制作鏡像。

具體方法請參考:https://www.cnblogs.com/caoweixiong/p/12230725.html

 

 

八、Jenkins配置全局工具配置

  • 主頁面 -> 系統管理 -> 全局工具配置

指定JDK、Git、Maven路徑:

 

 如果Jenkins主機沒有git命令,需要安裝Git:

# yum install git -y

 

 

九、Jenkins安裝必要插件

  • 主頁面 -> 系統管理 ->管理插件:

安裝SSH與Git Parameter插件。

插件說明:

  1. SSH:用於SSH遠程Docker主機執行Shell命令
  2. Git Parameter:動態獲取Git倉庫Branch、Tag

 

  • 配置SSH插件

第一步:先創建一個用於連接Docker主機的憑據。

主頁面 -> 憑據 -> 系統 -> 右擊全局憑據 -> 添加憑據:

 

 

第二步:添加SSH遠程主機
主頁面 -> 系統管理 -> 系統設置 -> SSH remote hosts:

 

 

十、Jenkins創建項目並發布測試

自己准備1個web項目,我這里的項目名字為bsm,通過svn管理代碼。

  • 主頁面 -> 新建任務 -> 輸入任務名稱,構建一個Maven項目

 注意:如果沒有顯示“構建一個Maven項目”選項,需要在管理插件里安裝“Maven Integration”插件。

  • 設置參數化構建過程:

  • 設置源碼管理

 注:這里使用svn管理源碼

  • 設置maven構建命令選項:

利用pom.xml文件構建項目。

  • 在Jenkins本機,構建鏡像並推送到私有鏡像倉庫:

上述命令說明:

  1. 根據參數 type 來判斷是部署還是撤回;
  2. 部署項目:創建Dockerfile文件,使用當前編譯序號做為鏡像的版本號;
    •   基於私有鏡像倉庫的 tomcat 鏡像;
    •   先刪除webapps目錄下的war包;
    •   將jenkins編譯好的war包,復制到tomcat鏡像中的webapps目錄下
    •   啟動tomcat
  3. 部署項目:構建鏡像;
  4. 部署項目:上傳鏡像到私有倉庫;
  5. 部署項目:刪除本地鏡像;
  6. 撤回項目:什么也不做;

 

  • 在Jenkins本機,通過SSH遠程連接到Docker主機,下載並使用推送的鏡像創建容器

 

上述命令說明:

  1. 根據參數 type 來判斷是部署還是撤回;
  2. 部署項目:獲取當前編譯版本號,從私有鏡像倉庫下載鏡像進行部署;
    •   停止容器;
    •   刪除容器;
    •   刪除本地歷史鏡像
    •   啟動容器,並暴露端口
  3. 撤回項目:參數【version】為空,默認返回到上一版本;
  4. 撤回項目:參數【version】不為空,撤回到指定版本;
  5. 部署項目:刪除本地鏡像;
  6. 撤回項目:什么也不做;

 

  • 選擇tag,開始構建:

注:type=deploy,部署項目;type=rollback,撤回項目

 

 

 

 

 

 

十一、驗證

瀏覽器訪問bsm項目:http://10.0.xxx.103:8888

 

 

 

參考:

https://blog.51cto.com/lizhenliang/2159817


免責聲明!

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



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