1、簡介
持續集成(Continuous Integration,CI|CD)是一種軟件開發實踐,對於提高軟件開發效率並保障軟件開發質量提供了理論基礎,持續集成意義如下:
持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減少重複過程以節省時間、費用和工作量;
持續集成保障了每個時間點上團隊成員提交的代碼是能成功集成的。換言之,任何時間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能;
持續集成還能利於軟件本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續集成的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心。
Jenkins是基於Java開發的一種持續集成工具,官網地址爲:http://mirrors.jenkins-ci.org/ 。Jenkins持續集成組件如下:
自動構建過程JOB,JOB的功能主要是:獲取SVN/GIT源碼、自動編譯、自動打包、部署分發和自動測試等;
源代碼存儲庫,開發編寫代碼需上傳至SVN、GIT代碼庫中,供Jenkins來獲取;
Jenkins持續集成服務器,用於部署Jenkins UI、存放JOB工程、各種插件、編譯打包的數據等。
2、部署
第一步:安裝JDK及Tomcat
第二步:部署Jenkins
# 官網下載war包,或者使用清華大學源 https://mirror.tuna.tsinghua.edu.cn/jenkins/war/2.175/jenkins.war
[root@localhost ~]# cd /usr/local/apache-tomcat-8.0.39/webapps/
[root@localhost webapps]# rm -rf *
[root@localhost webapps]# mkdir -p /usr/local/apache-tomcat-8.0.39/webapps/ROOT/
[root@localhost webapps]# cd ROOT
[root@localhost ROOT]# wget http://updates.jenkins-ci.org/download/war/2.175/jenkins.war
# 解壓war包
[root@localhost ROOT]# /usr/java/jdk1.8.0_131/bin/jar xf jenkins.war
[root@localhost ROOT]# rm -rf jenkins.war
# 啓動tomcat
[root@localhost ROOT]# /usr/local/apache-tomcat-8.0.39/bin/startup.sh
第三步:頁面配置
瀏覽器訪問 IP:PORT 初始化頁,由於機器配置、網絡等因素,該頁面初始化時間可能較長,需耐心等待。
cat /root/.jenkins/secrets/initialAdminPassword 得到密碼
安裝插件
安裝推薦的插件
選擇插件來安裝
注意:若出現類似以下問題,可手動下載相應的插件https://updates.jenkins-ci.org/download/plugins/cloudbees-folder/,然後放入
/usr/local/apache-tomcat-8.0.39/webapps/ROOT/WEB-INF/detached-plugins/ 文件夾下,重啓Tomcat即可。
創建用戶
實例配置
配置完成
登錄成功
3、Jenkins 平臺設置
點擊 系統管理–>全局工具配置,配置全局的JDK和MAVEN
配置JDK
配置maven
4、JOB 工程創建與配置
配置SVN
參數詳解:
Respository url 配置SVN倉庫地址;
Local module directory 存儲SVN源碼的路徑;
Ignore externals option 忽略額外參數;
Check-out Strategy 代碼檢出策略;
Repository browser 倉庫瀏覽器,默認Auto;
add more locations 源碼管理,允許下載多個地址的代碼;
Repository depth 獲取SVN源碼的目錄深度,默認爲infinity;
empty: 不檢出項目的任何文件,files: 所有文件,immediates:目錄第一級,infinity:整個目錄所有文件。
配置maven
參數詳解:
mvn clean 打包清理(刪除target目錄內容);
mvn compile 編譯項目;
mvn package 打包發佈;
mvn package -Dmaven.test.skip=ture 打包時跳過測試。
通過以上步驟的配置步驟,即完成了JOB工程的創建。運行構建,Jenkins將從SVN倉庫獲取SVN代碼,然後通過Maven編譯、打包,並最終生成可以使用的war包。
編譯打包成功後執行shell進行部署、啓動服務
日誌輸出
歸檔文件,可通過http://ip:port/job/www.cluo.net/lastSuccessfulBuild/artifact/target/*.war進行文件下載
5、Jenkins 多實例
單臺Jenkins服務器可以滿足日常自動部署需求,如果每天更新發布多個WEB網站,Jenkins需要同時處理很多的任務,單臺Jenkins壓力就會很大,任務處理速度較慢。基於Jenkins分佈式,也就是多Slave方式可以緩解Jenkins服務器的壓力。
Jenkins多Slave原理是將原本在Jenkins Master端的構建項目分配給Slave端去執行,Jenkins Master分配任務時,Jenkins Master端通過SSH遠程Slave,在Slave端啓動slave.jar程序,通過Slave.jar實現對網站工程的構建編譯以及自動部署。步驟如下:
(1) 在Slave服務器,創建遠程執行Jenkins任務的用戶,名稱爲jenkins,Jenkins工作目錄/home/Jenkins,Jenkins Master免祕鑰登錄Slave服務器或者通過用戶名和密碼登錄Slave;
(2) Slave服務器安裝JAVA JDK版本,並將其軟件路徑加入系統環境變量。
(3) Jenkins master端平臺進行管理節點配置。
配置流程:
系統管理–> 節點管理–>新建節點
節點存在問題
點擊節點名稱 slave001
點擊啓動代理
至此,配置完成!
新建任務的時候,勾選“在必要的時候併發構建”,當多個任務排隊執行時slave節點就會參與執行。