1. 程式人生 > >通過Jenkins構建maven專案的Docker映象

通過Jenkins構建maven專案的Docker映象

一、Jenkins是什麼

目前持續整合(CI)已成為當前許多軟體開發團隊在整個軟體開發生命週期內側重於保證程式碼質量的常見做法。它是一種實踐,旨在緩和和穩固軟體的構建過程。並且能夠幫助您的開發團隊應對如下挑戰:

1、軟體構建自動化:配置完成後,CI系統會依照預先制定的時間表,或者針對某一特定事件,對目標軟體進行構建。

2、構建可持續的自動化檢查:CI系統能持續地獲取新增或修改後簽入的原始碼,也就是說,當軟體開發團隊需要週期性的檢查新增或修改後的程式碼時,CI系統會不斷確認這些新程式碼是否破壞了原有軟體的成功構建。這減少了開發者們在檢查彼此相互依存的程式碼中變化情況需要花費的時間和精力。

3、構建可持續的自動化測試:構建檢查的擴充套件部分,構建後執行預先制定的一套測試規則,完成後觸發通知

(Email,RSS等等)給相關的當事人。

4、生成後後續過程的自動化:當自動化檢查和測試成功完成,軟體構建的週期中可能也需要一些額外的任務,諸如生成文件、打包軟體、部署構件到一個執行環境或者軟體倉庫。這樣,構件才能更迅速地提供給使用者使用。

Jenkins是一個可擴充套件的持續整合引擎。主要用於:持續、自動地構建/測試軟體專案以及監控一些定時執行的任務。其擁有的特性包括:

1、易於安裝-只要把jenkins.war部署到servlet容器,不需要資料庫支援。

2、易於配置-所有配置都是通過其提供的web介面實現。

3、整合RSS/E-mail通過RSS釋出構建結果或當構建完成時通過e-mail通知。

4、生成JUnit/TestNG測試報告。

5、分散式構建支援Jenkins能夠讓多臺計算機一起構建/測試。

6、檔案識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。

7、外掛支援:支援擴充套件外掛,你可以開發適合自己團隊使用的工具。

 

CI系統基本結構圖

該系統的各個組成部分是按如下順序來發揮作用的:

1. 開發者檢入程式碼到原始碼倉庫。

2. CI系統會為每一個專案建立了一個單獨的工作區。當預設或請求一次新的構建時,它將把原始碼倉庫的原始碼存放到對應的工作區。

3. CI系統會在對應的工作區內執行構建過程。

4. (配置如果存在)構建完成後,CI系統會在一個新的構件中執行定義的一套測試。完成後觸發通知

(Email,RSS等等)給相關的當事人。

5. (配置如果存在)如果構建成功,這個構件會被打包並轉移到一個部署目標(如應用伺服器)或儲存為軟體倉庫中的一個新版本。軟體倉庫可以是CI系統的一部分,也可以是一個外部的倉庫,諸如一個檔案伺服器或者像Java.net SourceForge之類的網站。

6. CI系統通常會根據請求發起相應的操作,諸如即時構建、生成報告,或者檢索一些構建好的構件。

二、Jenkins的安裝與部署

1、下載yum源:

sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo

2、匯入金鑰:

    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

3、安裝Jenkins:yum install jenkins

4、啟動前檢查是否安裝jdk:java -version(最好是1.8以上的)

5、修改配置檔案:sudo vim /etc/init.d/jenkins

       candidates="路徑後新增java路徑/usr/java/jdk1.8.0_144/bin/java.(根據個人Java安裝地址)

        

vi /etc/sysconfig/jenkins

          找到JENKINS_PORT=“8080”(8080是Jenkins預設埠,若被佔用課修改為其他空閒埠)

6、關閉防火牆

7、啟動應用:sudo service jenkins start

三、Jenkins構建maven專案

1、外掛安裝

  啟動Jenkins服務以後便可登入瀏覽器訪問,因為我們需要從git上拉取原始碼,所以要在Jenkins上安裝相應的git外掛,同時我們也需要安裝maven類的外掛來支援構建maven專案。

--》點選系統管理

--》點選管理外掛

  在可選外掛中找到Git pluginMaven Integration plugin外掛並安裝

  外掛安裝完畢後重啟Jenkins

2、新建maven專案

  新建一個job

  輸入名稱和專案型別

原始碼管理

  在原始碼管理項中選擇git並輸入git地址並在CredentialsAdd倉庫登入賬號密碼,在下方分支選擇中選擇需要構建的專案分支


 構建觸發器

  根據實際要求構建符合要求的觸發器,此圖中觸發器Poll SCM的功能是每個一定時間便檢查原始碼是否有更新,若有則自動構建。(*/60****含義是每隔60分鐘檢查一次git原始碼)


構建選項

  在Root POM輸入pom.xml則會預設為專案中的xml檔案,若xml檔案不在預設檔案下,則需在該欄中填入檔案所在具體目錄。Goals and options為構建目標,輸入maven命令,此處為把maven專案打成war包。

  此時maven專案構建基本就完成,進入將maven專案生成docker映象的步驟。

三、Docker映象構建

  1docker配置

  Jenkins中安裝相應的docker外掛(docker-build-step

   Host伺服器上安裝docker1.12.6版本慎用)

   配置docker的遠端訪問:

     1centos下修改docker的配置檔案/usr/lib/systemd/system/docker.service

     2、在[Service]的部分新增(此處是暴露的6732埠)

         ExecStart=  

         ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6732 -H unix://var/run/docker.sock

3docker重新讀取配置檔案並重啟docker服務

         # systemctl daemon-reload

          # systemctl restart docker

  進入Jenkins,選擇系統管理--》系統設定--Docker Builder



  在Docker URL處填寫暴露的埠tcp://10.10.184.150:6732 然後儲存

  這樣Jenkins便可呼叫host伺服器中的docker功能

2、建立Docker映象

  Host伺服器上構建一個基礎映象並執行

      Dockerfile

         FROM alpine:latest

         MAINTAINER xxx [email protected]

         ADD ./tomcat.tar  /home/skycloud

         RUN  echo \ "https://mirrors.ustc.edu.cn/alpine/v3.6/main" >/etc/apk/repositories && \

              echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community" >> \ /etc/apk/repositories && \

              cat /etc/apk/repositories && \

              apk update && apk add openjdk8 &&chmod 777 \ /home/skycloud/tomcat/bin/*.sh

  登入剛才建立的maven專案,在Post Step中編寫指令碼命令

  此指令碼的內容大致是構建映象並push到倉庫再通過遠端操作啟動映象

  最後可以選擇構建完成進行郵件通知

  儲存後進入操作頁面並點選立即構建


  此時左下角會出現構建進度條,藍色表示構建成功,紅色表示構建失敗,灰色表示構建未完成


  構建結束後點擊構建編號,進入結果檢視介面,點選Console Output檢視構建過程



  這樣就完成了利用Jenkins來夠構建一個maven專案並將其製作成Docker映象的工作。這個構建過程會根據你的觸發器設定來不斷實施,從而達到主監控軟體開發流程,快速顯示問題與部署的目的。保證開發人員以及相關人員省時省力提高開發效率。