Jenkins與Docker的自動化CI/CD實戰
一、釋出流程設計


工作流程:

二、環境規劃:

三、 部署過程
1,部署git
如果公司內部有直接克隆就可以

2,部署Jenkins環境
部署傳送門: ofollow,noindex"> Jenkins+Maven+Svn實現程式碼自動打包與釋出

3,部署私有映象倉庫
注意:docker 倉庫 由於https 認證,所有需要pull的客戶端,需要修改配置檔案

4,所有主機安裝docker
1)安裝依賴包

2)新增Docker軟體包源:

3)安裝Docker CE

4)配置加速器

5)啟動並開機啟動

四、構建基礎映象
【Apache、Nginx、Tomcat、LNMP、LAMP、LNTP】
JAVA程式必須有JDK環境才可以執行,為了減少映象大小及提高效能,這裡直接把JDK放到宿主機上,容器以掛載形式使用。
1,安裝jdk

2,擬寫Dockerfile

3,構建映象


4,上傳到docker 映象倉庫

5,啟動映象 測試


五、Jenkins 配置
1.主頁面 -> 系統管理 -> 全域性工具配置
指定JDK、Maven路徑,Git保持預設:

2.jenkins安裝必要外掛
主頁面 -> 系統管理 ->管理外掛:


3,配置SSH外掛
第一步:先建立一個用於連線Docker主機的憑證 (有許可權的使用者)
主頁面 -> 憑據 -> 系統 -> 右擊全域性憑據 -> 新增憑據:

輸入連線Docker主機的使用者名稱和密碼:

第二步:新增SSH遠端主機
主頁面 -> 系統管理 -> 系統設定 -> SSH remote hosts:

問題:當以普通使用者身份去使用docker images時,出現以下錯誤:

六、將從github上下載的JAVA專案,上傳到自己的gitlab倉庫

登陸gitlab檢視solo專案:

七、Jenkins建立專案併發布測試
1.主頁面 -> 新建任務 -> 輸入任務名稱,構建一個Maven專案:

注意:如果沒有顯示“構建一個Maven專案”選項,需要在管理外掛裡安裝“Maven Integration plugin”外掛。
配置Git引數化構建:

2.動態獲取Git倉庫tag,與使用者互動選擇Tag釋出:【也可以設定分支】

3.指定專案Git倉庫地址:

修改*/master為$Tag,Tag是上面動態獲取的變數名,表示根據使用者選擇打程式碼版本。
4.設定maven構建命令選項:


利用pom.xml檔案構建專案。
在Jenkins本機映象構建與推送到映象倉庫,並SSH遠端連線到Docker主機使用推送的映象建立容器:

上圖中 命令內容如下:


上圖中Command 內容如下:

注:容器名稱blog-solo,暴露宿主機埠8080,即使用宿主機IP 192.168.56.12:8080 訪問blog-solo專案。
blog-solo專案已配置完成,開始構建:
選擇tag,開始構建:


點選左下角構建歷史裡,右擊第一個檢視控制檯輸出:

構建詳細內容

構建成功
訪問:192.168.56.12:8080 檢視部署結果

調整專案訪問地址
進入容器,切換到專案目錄

調整後,重啟tomcat,再次驗證,OK,結果如下:

至此,自動化CI環境搭建完成,你可以模擬提交程式碼並打tag測試自動化釋出流程。
八、問題總結:
檢視docker.sock許可權


解決方法:【免sudo 使用docker images 】

歡迎工作一到五年的Java工程師朋友們加入Java架構開發:744677563
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!