Jenkins是一個可擴展的持續集成引擎。
主要用於:
- l 持續、自動地構建/測試軟件項目。
- l 監控一些定時執行的任務。
Jenkins擁有的特性包括:
- l 易於安裝-只要把jenkins.war部署到servlet容器,不需要數據庫支持。
- l 易於配置-所有配置都是通過其提供的web界面實現。
- l 集成RSS/E-mail通過RSS發佈構建結果或當構建完成時通過e-mail通知。
- l 生成JUnit/TestNG測試報告。
- l 分佈式構建支持Jenkins能夠讓多臺計算機一起構建/測試。
- l 文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
- l 插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具。
1 Jenkins的由來
目前持續集成(CI)已成爲當前許多軟件開發團隊在整個軟件開發生命週期內側重於保證代碼質量的常見做法。它是一種實踐,旨在緩和和穩固軟件的構建過程。並且能夠幫助您的開發團隊應對如下挑戰:
- l 軟件構建自動化 :配置完成後,CI系統會依照預先制定的時間表,或者針對某一特定事件,對目標軟件進行構建。
- l 構建可持續的自動化檢查 :CI系統能持續地獲取新增或修改後簽入的源代碼,也就是說,當軟件開發團隊需要週期性的檢查新增或修改後的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。這減少了開發者們在檢查彼此相互依存的代碼中變化情況需要花費的時間和精力(說直接一點也是錢啊,呵呵)。
- l 構建可持續的自動化測試 :構建檢查的擴展部分,構建後執行預先制定的一套測試規則,完成後觸發通知(Email,RSS等等)給相關的當事人。
- l 生成後後續過程的自動化 :當自動化檢查和測試成功完成,軟件構建的週期中可能也需要一些額外的任務,諸如生成文檔、打包軟件、部署構件到一個運行環境或者軟件倉庫。這樣,構件才能更迅速地提供給用戶使用。
部署一個CI系統需要的最低要求是,一個可獲取的源代碼的倉庫,一個包含構建腳本的項目。
下圖概括了CI系統的基本結構:
該系統的各個組成部分是按如下順序來發揮作用的:
1. 開發者檢入代碼到源代碼倉庫。
2. CI系統會爲每一個項目創建了一個單獨的工作區。當預設或請求一次新的構建時,它將把源代碼倉庫的源碼存放到對應的工作區。
3. CI系統會在對應的工作區內執行構建過程。
4. (配置如果存在)構建完成後,CI系統會在一個新的構件中執行定義的一套測試。完成後觸發通知(Email,RSS等等)給相關的當事人。
5. (配置如果存在)如果構建成功,這個構件會被打包並轉移到一個部署目標(如應用服務器)或存儲爲軟件倉庫中的一個新版本。軟件倉庫可以是CI系統的一部分,也可以是一個外部的倉庫,諸如一個文件服務器或者像Java.net、 SourceForge之類的網站。
6. CI系統通常會根據請求發起相應的操作,諸如即時構建、生成報告,或者檢索一些構建好的構件。
Jenkins就是這麼一個CI系統。之前叫做Hudson。
一、安裝
1、下載安裝JDK,需修改環境變量,/etc/profile
#java
export JAVA_HOME=/apps/svr/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=${JAVA_HOME}/jre
2、下載安裝tomcat,修改tomcat的啓動腳本,<安裝目錄>/tomcat-jenkins/bin/catalina.sh
下載 Apache Tomcat 8.0.32 官方壓縮包:http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz
解壓Tomcat壓縮包到安裝目錄。例如安裝目錄爲:/apps/svr/tomcat-jenkins。
查找以下這句代碼: #JAVA_OPTS= "$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" 替換成以下代碼: LOGDIR=${CATALINA_BASE}/logs JMX_PORT= 9091 if [ -d /dev/shm/ ]; then GC_LOG_FILE=/dev/shm/gc-jenkins.log else GC_LOG_FILE=${LOGDIR}/gc-jenkins.log fi JAVA_OPTS="-Dhudson.DNSMultiCast.disabled= true -Dhudson.model.DownloadService.noSignatureCheck= true -XX:+PrintCommandLineFlags
-XX:-OmitStackTraceInFastThrow -XX:-UseBiasedLocking -XX:-UseCounterDecay -XX:AutoBoxCacheMax= 20000 -Djava.net.preferIPv4Stack= true -server -Xms2048m -Xmx2048m -XX:NewRatio= 1 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction= 75 -XX:+UseCMSInitiatingOccupancyOnly
-XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxTenuringThreshold= 6 -XX:+ExplicitGCInvokesConcurrent -Xloggc:${GC_LOG_FILE} -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:ErrorFile=${LOGDIR}/hs_err.log -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${LOGDIR}/ -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate= false -Dcom.sun.management.jmxremote.ssl= false -Djava.rmi.server.hostname= 127.0 . 0.1 -XX:PermSize=256m -XX:MaxPermSize=512m" |
3、下載jenkins.war :http://ftp-nyc.osuosl.org/pub/jenkins/war/2.13/jenkins.war
把jenkins.war複製到tomcat的webapps目錄下,例如:/apps/svr/tomcat-jenkins/webapps。
修改環境變量/etc/profile:export JENKINS_HOME=/var/lib/jenkins。並且刷新生效source /etc/profile
4、編寫啓動腳本jenkins.sh:java -jar /var/lib/jenkins/jenkins.war --httpPort=9090。並啓動 nohup sh jenkins.sh &
5、安裝插件(Jenkins首頁--系統管理--插件管理--可選插件,勾選即可)
若雲機不能了連接外網,則需手動下載插件,並上傳(Jenkins首頁--系統管理--插件管理--高級--上傳插件)
插件下載地址--http://updates.jenkins-ci.org/download/plugins/<plugin-name>/<revision>/<plugin-name>.hpi