使用jenkins實現持續集成
一、jenkins 介紹
- 它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工干預;
- 它需要有專門的集成伺服器來執行集成構建;
- 它需要有代碼託管工具支持,比如SVN;
- 官網地址地址:https://jenkins.io
- Jenkins的主要目標是監控軟體開發流程,快速顯示問題;
- enkins持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,所以它有利於減少重複過程以節省時間、費用和工作量。
二、下載安裝啟動
本文介紹的是在CentOS系統下,用rpm包安裝方式進行啟動
2.1 CentOS 下用rpm包進行安裝啟動2.1 卸載原來安裝的rpm包首先查看是否已經安裝過jenkins
rpm -qa|grep jenkins
我這裡用的是jdk1.7,所以下載版本http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm(jenkins下載地址:http://pkg.jenkins-ci.org/redhat/),
原先現在2.5版本以上,版本太高,啟動報「java.lang.UnsupportedClassVersionError」錯,所以要卸載之前安裝的jenkins-2.54-1.1.noarch,使用如下命令
# 卸載原先高版本的jenkins
rpm -e nodeps jenkins-2.54-1.1.noarch
2.2 安裝jenkins
# 下載jenkins-2.33-1.1.noarch.rpm
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm
#安裝jenkins-2.33-1.1.noarch.rpm
sudo rpm -ih jenkins-2.33-1.1.noarch.rpm
出現如下圖
表示安裝成功,安裝成功會自動生成下面文件:
/usr/lib/jenkins/jenkins.war #WAR包
/etc/sysconfig/jenkins #配置文件
/var/lib/jenkins/ #默認的JENKINS_HOME目錄
/var/log/jenkins/jenkins.log #Jenkins日誌文件
2.3 啟動
啟動用如下命令:
sudo service jenkins start
報了如下錯誤:
會報這個錯誤,這是由於沒有配置java環境,有兩種方法可以解決:
2.3.1 安裝jdk環境先檢查一下java虛擬機有沒有安裝,如果沒有就安裝
java --version
2.3.2 在jenkins配置文件中配置
需要「vi /etc/init.d/jenkins」,把jdk路徑加上,如下:
# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins.
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/home/lutong/soft/jdk1.7.0_76/bin/java
" for candidate in $candidates do [ -x "$JENKINS_JAVA_CMD" ] && break JENKINS_JAVA_CMD="$candidate" done JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR" PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"上述配置文件中紅色加粗字體的內容是我配置自己的jdk路徑。由於我的系統中的java是自己解壓安裝的,所以我採用了第二種方式
再次啟動jenkins:
三、默認配置修改及初始化
3.1 修改配置文件
上面我們有提到配置文件是/etc/sysconfig/jenkins,修改如下兩項配置(根據實際需要設置)
#修改為18080,默認是8080
JENKINS_PORT="18080"
#內存設置,我這裡設置成如下配置
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m"
3.2 初始化
- 在瀏覽器中輸入172.16.7.109:8080/jenkins(默認是使用8080埠)
打開jenkins的後台控制頁面
初始化成功後會自動生成一個管理員密碼放到指定位置,根據頁面提示複製密碼粘貼到輸入框就可以登錄了
3.3 初始化安裝插件登錄成功後回讓你選擇插件的安裝,可以選擇建議的安裝也可以自己進行選擇,不清楚的話可以使用建議的安裝
由於建議安裝的插件比較多,安裝的過程有點慢,多等待一會
由於建議安裝的插件比較多,安裝的過程有點慢,多等待一會
安裝的過程也可能因為網路等一些原因安裝會失敗,現在可以無視它,點擊Continue,後面再進行手動的安裝
安裝完成
安裝完成後最好新創建一個管理員賬戶代替之前的臨時自動生成的密碼賬戶 創建新的管理員賬戶
初始化完成,進入後台管理界面
初始化完成
後台管理界面
四、建立 Jenkins 自動化持續集成項目
4.1 安裝插件4.1.1 常用插件
一般情況下,常使用到如下這些插件:
FindBugs Plug-in
: 是一個靜態分析工具,它檢查類或者 JAR 文件,將位元組碼與一組缺陷模式進行對比以發現可能的問題。Checkstyle Plug-in
:是一個靜態分析工具,檢查Java程序代碼。Deploy to container Plugin
:用於構建項目後,自動發布war包重新部署的插件SSH Plugin
:這個插件使用 SSH 協議執行遠程 shell 命令。Multijob Plugin
:這個插件是一個將多個項目連接在一起的插件。
4.1.2 安裝步驟
下面以安裝Checkstyle插件為例進行說明:
在左上角「系統管理」中往下拉,找到「管理插件」點擊進去就可以查看和管理所有的插件,點擊「可選插件」顯示所有jenkins支持的插件,在右上角的「過濾」輸入框中,輸入需要安裝的插件名就可以篩選查找到想要的插件
然後切換到「可選插件」,在右上角「過濾」框中輸入checkstyle,查詢結果如下
然後,點擊「直接安裝」按鈕,其他插件也是這樣的安裝方式!
4.2建立項目4.2.1 新建項目下面以建立一個自由風格軟體項目為例進行說明
- 點擊左側邊欄的「新建」按鈕,新建一個任務。
- 填寫項目的名稱,並選擇一種構建的方式,此時我們選擇第一個,構建一個自由風格的軟體項目,然後點擊「OK」按鈕創建任務,並進行詳細的配置
然後就會進行到下面這個配置頁面
接下來,我從General、源碼管理、構建觸發器、構建環境、構建、構建後操作這幾個部分來進行詳細配置說明
4.2.2 General這部分主要是設置下名稱、工作空間等。
第一步,點擊高級按鈕;第二步,勾選「自定義工作空間」,輸入工作空間路徑;
若是只有一個項目,也可以直接到「系統管理>系統配置>工作空間目錄」直接修改默認工作空間目錄,如下圖:
4.2.3 源碼管理因為,我們的代碼是部署在SVN伺服器上的,所以這裡有下面三個步驟來配置jenkins監控SVN伺服器代碼變化。
第一步,選擇Subversion;
第二步,在Repository URL輸入項目SVN地址;
第三步,在Credentials選擇SVN用戶名和賬號,初次會需要點擊Add添加,如下。
4.2.4 構建觸發器指定的項目完成構建後,觸發此項目的構建。
Poll SCM
:當選擇此選項,您可以指定一個定時作業表達式來定義Jenkins每隔多久檢查一下源代碼倉庫的變化。如果發現變化,就執行一次構建。例如,表達式中填寫H 2 * * *將使Jenkins每隔2分 鍾就檢查一次源碼倉庫的變化。
Build periodically
:此選項僅僅通知Jenkins按指定的頻率對項目進行構建,而不管SCM是否有變化。如果想在這個Job中運行一些測試用例的話,它就很有幫助。
略
4.2.6構建這部分主要是配置構建的相關內容,用於定時觸發構建或者手動執行構建的時候,對代碼檢驗、編譯時進行的操作。
增加構建步驟:Invoke Ant
Targets:(什麼也沒寫,默認執行根目錄下的build.xml)
4.2.7 構建後操作用於定義當前項目構建完之後的一些操作,比如構建完之後將checkstyle結果輸出到指定日誌文件,重新發布項目,去執行其他項目構建等。
構建後發布項目
注意,這裡要先在發布的tomcat中tomcat-user.xml配置用戶,如我這裡配置的是manager配置完之後一次war包路徑、用戶名、密碼、主機即可
構建後發布靜態結果
輸入配置文件
所有這些配置多做完之後,在最下方點擊「保存」按鈕,現在回到首頁去進行構建吧!!!
※深入RxEasyHttp網路庫教你3分鐘學會自定義數據結構
※滑鼠框選操作(支持遮罩層)上篇
※MySQL存儲寫入性能嚴重抖動分析
※代碼綜合後的電路對比
TAG:科技優家 |
※jacoco與jenkins集成實現代碼覆蓋率分析
※帶你解讀蘇研openstack持續集成實踐
※Jenkins+RobotFramework持續集成測試-jenkins環境搭建
※實現逼真角色運動,IKinema動捕技術集成至英偉達Holodesk
※kindeditor項目集成
※Intellij idea集成的git頁面進行操作
※GemFire與Greenplum的最佳集成實踐之實施經驗談
※創新每一天—Ultimaker集成生態系統實現你所想
※緩存架構SpringBoot集成Curator實現zookeeper分散式鎖
※Americanas.com的系統集成
※使用TensorRT集成加速TensorFlow推理
※Springboot集成Kaptcha實現前後端分離的驗證碼功能
※Vimeo推出macOS應用程序,竟然可以與Final Cut Pro集成上傳!
※語音助手查閱電子郵件將成現實,移動版Outlook應用將集成Cortana
※Informatica發布基於微軟Azure的集成平台即服務
※Google正式集成Kubernetes引擎與GPU服務
※微軟計劃將Cortana集成到Outlook for iOS和Android
※韓國網友發布 Blackpink 成員 Jisoo 照片集成為話題
※iRig Keys I/O 集成控制現在可以兼容 GarageBand和Logic Pro X
※集成CAD和Unreal,Mindesk支持在VR中實時3D建模