1. 程式人生 > >[轉]使用jenkins實現持續集成

[轉]使用jenkins實現持續集成

execution 兩種 group init 日誌文件 mage error: publisher gen

本文轉自:https://www.cnblogs.com/zishengY/p/7170656.html

一、jenkins 介紹

  • 它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工幹預,有利於減少重復過程以節省時間、費用和工作量;
  • 它需要有專門的集成服務器來執行集成構建;
  • 它需要有代碼托管工具支持,比如SVN;
  • 官網地址地址:https://jenkins.io
  • Jenkins的主要目標是監控軟件開發流程,快速顯示問題;
  • jenkins持續集成中的任何一個環節都是自動完成的,無需太多的人工幹預,所以它有利於減少重復過程以節省時間、費用和工作量。

二、下載安裝啟動

本文介紹的是在CentOS系統下,用rpm包安裝方式進行啟動

2.1 安裝準備

軟件

版本

說明

JDK

1.7.0_76

解壓安裝,註意設置好環境變量

ant

1.9.9

JDK1.7.x只能安裝1.9.x系列ant

Jenkins

2.33

JDK1.7.x只能安裝Jenkins2.3.x系列Jenkins

2.2 安裝ant

ant是基於java的一款構建工具,通過配置build.xml,讓項目可以進行編譯,部署,打包。

因為我們要實現自動構建,所以首先要安裝ant。

  • http://ant.apache.org 上下載tar.gzant

  • wget http://www-eu.apache.org/dist//ant/binaries/apache-ant-1.9.9-bin.tar.gz

  • 解壓tar包

  • tar -zxvf apache-ant-1.9.9-bin.tar.gz

  • 移動到/usr/share

  • cp -r apache-ant-1.9.9 /usr/share

  • 切換到/usr/share目錄下,重命名

  • cd /usr/share

  • mv apache-ant-1.9.9 ant

  • 配置環境變量

  • vi /etc/profile

#set Ant enviroment

export ANT_HOME=/usr/share/ant

export PATH=PATH: PATH: ANT_HOME/bin

  • 立刻將配置生效

  • source /etc/proifle

  • 測試ant是否生效

  • ant -version

出現如下提示便表示安裝成功。

技術分享圖片

ant的使用查看這篇文章:ant在持續集成的應用

2.3 卸載及安裝jenkins

2.3.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.3.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.4 啟動

啟動用如下命令:

sudo service jenkins start

報了如下錯誤:

技術分享圖片

會報這個錯誤,這是由於沒有配置java環境,有兩種方法可以解決:

2.4.1 安裝jdk環境

  先檢查一下java虛擬機有沒有安裝,如果沒有就安裝

java --version

2.4.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,後面再進行手動的安裝

  • 技術分享圖片
    安裝完成
  • 安裝完成後最好新創建一個管理員賬戶代替之前的臨時自動生成的密碼賬戶
  • 創建新的管理員賬戶技術分享圖片
  • 初始化完成,進入後臺管理界面
    技術分享圖片


    初始化完成
    技術分享圖片
    後臺管理界面

    3.4 初始化配置

    3.4.1 修改工作空間

    從主頁面直接到“系統管理>系統配置”,點擊右邊“高級”按鈕

    技術分享圖片

    在工作空間目錄”直接修改默認工作空間目錄為自定義的/home/jenkins/workspace/${ITEM_FULLNAME},如下圖:

    3.4.2 全局配置ant

    從主頁面直接到“系統管理>Global Tool Configuration”,點擊右邊“Ant安裝”按鈕,

    技術分享圖片

    在name中填入名字,可以自己取,這裏我填寫成ant(到時Invoke Ant時,需要選擇ant),ANT_HOME填入Ant的環境變量

    技術分享圖片

    3.4.3 全局配置JDK

    從主頁面直接到“系統管理>Global Tool Configuration”,點擊右邊“JDK安裝”按鈕,

    技術分享圖片

    在name中填入名字,可以自己取,這裏我填寫成ant(到時Invoke Ant時,需要選擇ant),ANT_HOME填入Ant的環境變量

    技術分享圖片

    3.4.4 配置Credentials

    這裏主要是添加信任證書,因為我的工程的源碼是放在SVN上,所以在這裏我們就是要添加SVN的驗證,即SVN的用戶名和密碼。

    從主頁面左邊菜單點擊到“Credentials”,進入到 Credentials列表,如圖所示:

    技術分享圖片

    點擊Name列中即可對Credentials中用戶進行修改、新增、刪除操作,如下圖所示:

    技術分享圖片

    修改完後,點擊下面“Save”保存按鈕即可

四、建立 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.5 構建環境

4.2.6 構建

  這部分主要是配置構建的相關內容,用於定時觸發構建或者手動執行構建的時候,對代碼檢驗、編譯時進行的操作。構建概念到處可查到,形象來說,構建就是要把代碼從某個地方拷貝過來,編譯,再拷貝到某個地方去等等操作,當然不僅與此,但是主要用來幹這個。

因為我的項目是用ant腳本實現的編譯和打包,所以我選擇的是Invoke Ant,Ant Version選擇我Ant配置的那個名字(這裏可以參見3.4.2),註意不要選擇default喔,那個選擇了沒有用。

  • 增加構建步驟:Invoke Ant
  • Targets:(什麽也沒寫,默認執行根目錄下的build.xml)

如果你的構建腳本build.xml不在workspace根目錄、或者說你的構建腳本不叫build.xml。那麽需要在高級裏設置Build File選項的路

技術分享圖片

build.xml配置文件請查看附件“build.xml說明”,裏面有每句配置說明;

checkstyleBuild.xml配置文件請查看附件“checkstyleBuild.xml說明”,裏面有每句配置說明;

findBugsBuild.xml配置文件請查看附件“findBugsBuild.xml說明”,裏面有每句配置說明。

4.2.7 構建後操作

  用於定義當前項目構建完之後的一些操作,比如構建完之後將checkstyle結果輸出到指定日誌文件,重新發布項目,去執行其他項目構建等。

技術分享圖片4

4.2.7.1 構建後發布項目

註意,首先你必須安裝好Deploy Plugin插件,然後在tomcat的conf目錄配置tomcat-users.xml文件,如我這裏配置的是manager, 在<tomcat-users>節點裏添加如下內容:

技術分享圖片
配置完之後一次war包路徑、用戶名、密碼、主機即可

配置完之後一次war包路徑、用戶名、密碼、主機即可

參數說明:

技術分享圖片

  • l WAR/EAR files:war文件的存放位置,如:**/build/warDest/ad-gx-admin.war。
  • l Context path:訪問時需要輸入的內容,如ad-gx-admin訪問時如下: http://172.16.4.166:10001/ ofCard/ad-gx-admin如果為空,默認是war包的名字。
  • l Container:選擇你的web容器,如tomca 7.x
  • l Manager user name:填入tomcat-users.xml配置的username內容
  • l Manager password:填入tomcat-users.xml配置的password內容
  • l Tomcat URL:填入http://192.168.x.x:8080/
  • l Deploy on failure:構建失敗依然部署,一般不選擇

  註意:雖然這種部署方法可能會導致tomcat加載時出現卡死的現象。但是也是最簡單的部署方式。如果卡死了重啟下就好了,將tomcat的java內存參數調高可以解決這個問題。

最後不要忘記點擊保存喔。

好了!到此一個項目的獲取源碼,打包,遠程部署

4.2.7.2構建後發布靜態結果

  輸入配置文件

技術分享圖片

技術分享圖片

checkstyle-result.xml配置文件請查看附件“checkstyle-result.xml說明”,裏面有配置說明。

所有這些配置多做完之後,在最下方點擊“保存”按鈕,現在回到首頁去進行構建吧!!!

4.3 監控

4.3.1 主頁面介紹

技術分享圖片

1、左邊菜單欄

  • l 新建:這裏進入新建項目。
  • l 用戶:用戶管理模塊,對監控系統用戶的增刪改查。
  • l 任務歷史:以往構建過的項目。
  • l 系統管理:進去是一些配置方面的東西,進入之後幾個主要的子菜單分別是系統設置 、Global Tool Configuration 、管理插件 幾個模塊
  • l My Views:當前監控的項目列表。
  • l Credentials:添加監控源碼的的證書,其實就是SVN用戶名和密碼驗證。

2、監控項目列表

這裏主要是Jenkins當前正在監控的項目列表。點擊進去可查看當前項目詳細情況。

技術分享圖片

模塊1:

  • l 狀態:最後一次構建的狀態;
  • l 修改記錄:代碼修改記錄;
  • l 工作空間:編譯後代碼存放的目錄;
  • l 立即構建:單擊此處,可立即進行構建;
  • l 刪除Project:單擊此處,可刪除該項目;
  • l 配置:配置該項目相關監控信息(工作空間、chestyle規則等);
  • l Checkstyle Warnings:當前這次構建發現的靜態警告;
  • l FindBugs Warnings:當前這次構建發現的FindBugs。

模塊2:

  • 這裏顯示的最近一次構建的相關信息,是否構建成功、構建用時等

模塊3:

  • l Checkstyle Trend:歷史構建完之後的解決的代碼中靜態警告走勢;
  • l FindBus Trend:歷史構建完之後的解決的代碼中FindBugs走勢。

4.3.2 構建狀態查詢

當任務一旦運行,您將會看到這個任務正在隊列中的儀表板和當前工作主頁上運行。這兩種顯示如下。

技術分享圖片技術分享圖片

一旦構建完成後,完成後的任務將會構建歷史列表顯示。

技術分享圖片

當然你可以在Jenkins的主控制面板上看到它,如下圖。

技術分享圖片

在上面展示的截圖中,您將註意到有兩個圖標描述當前作業的狀態。S欄目代表著“最新構建狀態”,W欄目代表著“構建穩定性”。Jenkins使用這兩個概念來介紹一個作業的總體狀況:

1構建狀態:

下圖中分級符號概述了一個Job新近一次構建會產生的四種可能的狀態:

技術分享圖片

  • Successful:完成構建,且被認為是穩定的。
  • Unstable:完成構建,但被認為不穩定。
  • Failed:構建失敗。
  • Disabled:構建已禁用。

2構建穩定性:

當一個Job中構建已完成並生成了一個未發布的目標構件,如果您準備評估此次構建的穩定性,Jenkins會基於一些後處理器任務為構建發布一個穩健指數 (從0-100 ),這些任務一般以插件的方式實現。它們可能包括單元測試(JUnit)、覆蓋率(Cobertura )和靜態代碼分析(FindBugs)。分數越高,表明構建越穩定。下圖中分級符號概述了穩定性的評分範圍。任何構建作業的狀態(總分100)低於80分就是不穩定的。

當前作業主頁上還包含了一些有趣的條目。左側欄的鏈接主要控制Job的配置、刪除作業、構建作業。右邊部分的鏈接指向最新的項目報告和構件。

通過點擊構建歷史(Build History)中某個具體的構建鏈接,就能跳轉到Jenkins為這個構建實例而創建的構建主頁上。如下圖:

技術分享圖片

如果你想通過視圖輸出界面來監控當前任務的進展情況。你可以單擊Console Output(控制臺輸出)。如

果工作已完成,這將顯示構建腳本產生的靜態輸出;如果作業仍然在運行中,Jenkins將不斷刷新網頁的內容,以便您可以看到它運行時的輸出。如下圖:

技術分享圖片

五、常見錯誤處理

5.1 java.lang.UnsupportedClassVersionError

這是因為jenkins和jdk版本不對應引起的。我這裏用的是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,使用如下命令

5.2 command execution failed.Maybe you need to configure the job to choose one of your Ant installations?

技術分享圖片控制臺輸出

Started by user admin

[EnvInject] - Loading node environment variables.

Building in workspace /home/jenkins/workspace/My_cache

Updating https://ip地址/svn/iptv/新業務/廣西開機廣告/code/ad-gx-cache at revision ‘2017-07-17T14:14:11.377 +0800‘

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

At revision 68144

No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build

[workspace] $ ant -file checkstyleBuild.xml -DBUILD_NUMBER=8

ERROR: command execution failed.Maybe you need to configure the job to choose one of your Ant installations?

[CHECKSTYLE] Skipping publisher since build result is FAILURE

[FINDBUGS] Skipping publisher since build result is FAILURE

Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered

Finished: FAILURE

  這是由於沒有成功全局配置ant的環境變量沒有配置成功導致,請確保環境Ant環境變量配置成功,並且在Global Tool Configuration正確添加了Ant的路徑,這個可以參見2.2及3.4.2

5.3 JAVA_HOME is not defined correctly.

技術分享圖片控制臺輸出

Started by user admin

[EnvInject] - Loading node environment variables.

Building in workspace /home/jenkins/workspace/My_cache

Updating https://ip地址/svn/iptv/新業務/廣西開機廣告/code/ad-gx-cache at revision ‘2017-07-17T15:33:26.714 +0800‘

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

At revision 68151

[workspace] $ /home/lutong/apache-ant-1.9.9/bin/ant -file checkstyleBuild.xml -DBUILD_NUMBER=11

Error: JAVA_HOME is not defined correctly.

We cannot execute java

Build step ‘Invoke Ant‘ marked build as failure

[CHECKSTYLE] Skipping publisher since build result is FAILURE

[FINDBUGS] Skipping publisher since build result is FAILURE

Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered

Finished: FAILURE

這是由於沒有成功全局配置JDK的環境變量沒有配置成功導致,請確保環境Ant環境變量配置成功,並且在Global Tool Configuration添加的JDK路徑正確,這個可以參見2.4.1及3.4.3

5.3 Unable to access the repository

在配置“源碼管理”時,如果Credentials 不選擇或者選擇了驗證不正確,會出現這個錯誤,請參見3.4.4及4.2.3

5.4 cant create file

Checking out https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache at revision ‘2017-07-17T17:46:17.618 +0800‘

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

ERROR: Failed to check out https://ip地址/svn/iptv/新業務/廣西開機廣告/code/ad-gx-cache

org.tmatesoft.svn.core.SVNException: svn: E204899: Cannot create new file ‘/home/jenkins/workspace/廣西開機廣告/.svn/lock‘: 權限不夠

No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build

這是由於 項目“廣西開機廣告”目錄的權限不夠,使用“chmod777 /home/jenkins/workspace/廣西開機廣告 ”即可

附件:

附件一:build.xml說明

技術分享圖片技術分享圖片 技術分享圖片
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!-- 指明xml版本,編碼格式為UTF-8 -->
<!-- basedir故名思意就是工作的根目錄 .代表當前目錄。default代表默認要做的事情。 -->
<project basedir="." default="war" name="ad-gx-admin">
    <!--
property類似定義程序中的變量,name是變量名,value是變量值,在下文中可以通過${src}和${webroot}取得變
量的值 -->
    <property name="src" value="src" />
    <property name="webroot" value="WebContent" />
    <property name="lib" value="${webroot}/WEB-INF/lib" />
    <property name="classes" value="build/classes" />
    <property name="warDest" value="build/warDest" />
    <property name="Bulid_Number" value="warDest" />
    <!-- target,即一個任務,它有一個名字,depends是它所依賴的target,
在執行這個targe,例如這裏的init之前ant會先檢查clean是否曾經被執行過,
如果執行過則直接直接執行init,如果沒有則會先執行它依賴的target -->
    <target name="init" depends="clean">
        <!-- 創建編譯後文件存放目錄、war包存放目錄 -->
        <mkdir dir="${classes}" />
        <mkdir dir="${warDest}" />
        <!-- 指定jar包的目錄,下面直接通過${classpath}可以取得jar路徑 -->
        <path id="classpath">
            <fileset dir="${lib}">
                <include name="**/*.jar" />
            </fileset>
        </path>
        <!-- 該任務主要用來對文件和目錄的復制功能,即將./${src}和./${webroot}目錄下
include指定的文件拷貝到./${classes}目錄下。額外說明:exclude表示排除的文件 -->
        <copy todir="./${classes}">
            <fileset dir="./${src}">
                <include name="**/*.properties" />
                <include name="**/*.xml" />
                <include name="**/*.dtd" />
                <include name="**/*.json" />
                <include name="**/*.vm" />
            </fileset>
            <fileset dir="./${webroot}">
                <include name="resource/" />
            </fileset>
        </copy>
    </target>
    <target name="clean">
        <!-- 該任務的作用是根據日誌或監控器的級別輸出信息。它包括message、file、append和level四個屬性 -
->
<echo >${warDest}</echo>
<!== 對文件或目錄進行刪除,這裏是刪除${warDest}和${classes}目錄 -->
        <delete dir="${warDest}" />
        <delete dir="${classes}" />
    </target>
    <target name="complie" depends="init">
        <!-- 編譯:將srcdir目錄的源碼,編譯後放到destdir目錄下,refid表示關聯的jar包 -->
        <javac srcdir="${src}" destdir="${classes}" debug="true" debuglevel="lines,vars,source" encoding="UTF-8">
            <classpath refid="classpath" />
        </javac>
    </target>
    <target name="war" depends="complie">
        <war warfile="${warDest}/ad-gx-admin.war" webxml="${webroot}/WEB-INF/web.xml">
            <lib dir="${lib}" />
            <classes dir="${classes}" />
            <fileset dir="./${webroot}">
                <include name="**/**" />
                <exclude name="META-INF/**" />
                <exclude name="WEB-INF/classes/**" />
                <exclude name="WEB-INF/lib/**" />
            </fileset>
        </war>
    </target>
</project>
技術分享圖片 View Code

附件二:checkstyle-result.xml說明

技術分享圖片技術分享圖片 技術分享圖片
<?xml version="1.0" encoding="utf-8"?>
<project name="checkstyle" default="checkstyle" basedir=".">
    <!-- 檢查源碼的路徑 -->
    <target name="init">
        <tstamp />
        <!-- 輸出報告的路徑  -->
        <property name="project.dir" value="/home/jenkins/workspace/廣西開機廣告項目/checkstyle_report" />
        <property name="project.checkstyle.report.dir" value="${project.dir}/${BUILD_NUMBER}" />
        <property name="project.checkstyle.result.name" value="checkstyle-result.xml" />
        <property name="project.checkstyle.report.name" value="checkstyle-report.html" />
        <!-- 檢測規則存放路徑  -->
        <property name="checkstyle.config" value="/home/jenkins/workspace/checkstyle.xml" />
        <property name="checkstyle.report.style" value="/var/lib/jenkins/plugins/checkstyle/WEB-INF/lib/checkstyle-frames.xsl" />
        <property name="checkstyle.result" value="${project.checkstyle.report.dir}/${project.checkstyle.result.name}" />
        <property name="checkstyle.report" value="${project.checkstyle.report.dir}/${project.checkstyle.report.name}" />
        <mkdir dir="${project.checkstyle.report.dir}" />
    </target>
    <taskdef resource="checkstyletask.properties" classpath="/var/lib/jenkins/plugins/checkstyle/WEB-INF/lib/checkstyle-6.5-all.jar" />
    <target name="checkstyle" depends="init" description="check java code and report.">
        <checkstyle config="${checkstyle.config}" failureProperty="checkstyle.failure" failOnViolation="false">
            <formatter type="xml" tofile="${checkstyle.result}" />
            <fileset dir="/home/jenkins/workspace/廣西開機廣告項目" includes="**/*.java" />
            <!-- 檢查源代碼的存放路徑 -->
        </checkstyle>
        <!--<style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}" />
         通過指定的xsl模版文件生成一份html的報告,這裏生成的文件用於郵件發送時附加上,另外Jenkins插件也會生成可視化的結果  -->
    </target>
    <target name="xml2html" depends="checkstyle">
        <!-- 將生產結果根據擴展樣式表文件checkstyle-frames.xsl生成html頁面,輸出到html -->
        <xslt in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}"></xslt>
    </target>
</project>
技術分享圖片 View Code

[轉]使用jenkins實現持續集成