持續集成(圖片顯示不出來,把完整版放到了附件裏)

 

1、什麼是持續集成及持續集成的作用

持續集成(CI)是一種實踐,可以讓團隊在持續的基礎上收到反饋並進行改進,不必等到開發週期後期才尋找和修復缺陷。通俗一點兒說,就是指對於開發人員的每一次代碼提交,都自動地把Repository中所有代碼Check out到一個空目錄,並且自動運行所有Test Case。如果成功則接受這次提交,否則告訴所有人,這是一個失敗的Revision

 

持續集成的關鍵是完全的自動化,讀取源代碼、編譯、連接、測試,整個創建過程都應該自動完成。對於一次的創建,要求在這個自動化過程中的每一步都不能錯,而最重要的一步是測試,只有最後通過測試的創建纔是成功的創建。

在持續集成裏創建不再只是傳統的編譯和連接那麼簡單,創建還應該包括自測試,自測試的代碼是開發人員提交源碼的時候同時提交的,是針對源碼的單元測試。將所有的這些自測試代碼整合到一起形成測試集,在所有的最新的源碼通過編譯和連接之後還必須通過這個測試集的測試纔算是成功的創建。

 

2、持續集成服務器

在進行持續集成實踐前,應當正確的選擇並配置持續集成服務器。比較成熟的持續集成服務器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作爲開源產品,以其對於各種SCM以及構建工具的廣泛支持而被許多開發團隊所接受。

3、持續集成實踐前的準備工作

至少要安裝java1.4,安裝Subversion Documentation,安裝CruiseControl

4、持續集成服務器CC

CruiseControl是一種持續集成過程的框架,包括郵件通知,ant和各種源碼控制工具的插件。並提供了web接口,用於查看當前和以前的創建的結果。

持續集成的重要特徵之一是自動化,而CCBuild Loop就是爲支持自動化而設計的。Build Loop也是CC的核心。

Build Loop是循環創建的意思,CC提供了一個daemon進程,進程自動根據配置的實踐間隔讀取CC配置文件並進行循環創建,每次CC都會重新加載配置文件。

Build Loop的過程如下:訪問源碼控制系統,查看是否有代碼被修改,如果有,獲取源碼的新版本,並根據配置對源碼進行一次build,創建一個日誌文件,最後向開發人員通知build的結果。

 

5、瞭解配置文件

<project name="connectfour">  --這裏的name應該和你在projects目錄下的項目名完全一致

<listeners>          --用於監聽項目狀態的變化(指building,passed等)

<bootstrappers>        --用於CruiseControlRepository更新代碼

<modificationset quietperiod="30">      --用於監聽在quietperiod秒內,Repository是否變化

<schedule interval="300">  --用於每隔interval秒,CruiseControl去檢查並計劃一次構建

<log>  --用於得到並保存log文件。默認情況下,將放在projects/${project.name}的目錄下

<publishers>  --用於將構建的結果(如二進制文件)發佈到指定的位置

<onsuccess>  --決定在構建成功的情況下,發佈哪些內容

注意:

1.   <listeners> 用於監聽狀態變化,如waiting for buildqueuedbuilding。一般不用改變。

2.   <bootstrappers>用於檢出代碼,CruiseControl有很多種bootstrapper,示例中使用的是SVNlocalWorkingCopy屬性是指你把代碼檢出到安裝CruiseControl機器的哪個文件目錄。

3.   <modificationset>用於監聽Repository的變化頻率,如果CruiseControl發現代碼有變化,而且在quietperiod秒內沒有其它用戶檢入代碼(用於保證被構建的版本完整性),CruiseControl纔會檢出代碼。

4.   <schedule >用於指定CruiseControl去檢查Repository的時間間隔。並指定使用哪個構建文件。示例中使用的是ant腳本,構建文件是被檢出項目的根目錄下的build.xml(即在Repository中)。

5.   <log>用於指定CruiseControl把日誌放在哪裏,把哪些構建結果放在日誌中。如果沒有指定任何屬性,默認爲logs目錄下的${project.name}目錄。

<publishers> 用於在構建結束後,發佈哪些消息和文件。CruiseControl有很多插件可以做各種各樣的Publishing。例如,在構建成功後,通過http調用指定的頁面,也可以給指定的人發郵件。在失敗時,播放音樂,通知team

 

6、運行CruiseControl
    
直接運行CruiseControl目錄下的CruiseControl.bat,當從Console中看到它啓動完畢後,你就可以在瀏覽器中訪問http://localhost:8080/dashboard,此時你會看到一個名爲connectFour的示例項目在Dashboard上顯示了。


7、加入新項目

1、手工檢出文件

確保將項目代碼檢出到${CC_HOME}/projects/yourprojectname目錄下,即在該目錄就是你項目的根目錄,可以找到名爲build.xml文件。

2、     修改配置文件(添加你的項目),在配置文件config.xml中增加以下配置

<project name="yourprojectname">

    <listeners>

      <currentbuildstatuslistener file="logs/${project.name}/status.txt" />

    </listeners>

    <bootstrappers>

      <svnbootstrapper localWorkingCopy="projects/${project.name}" />

    </bootstrappers>

    <modificationset quietperiod="30">

      <svn localWorkingCopy="projects/${project.name}" />

    </modificationset>

    <schedule interval="300">

      <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" />

    </schedule>

    <log>

      <merge dir="projects/${project.name}/target/test-results" />

    </log>

    <publishers>

      <onsuccess>

        <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar" />

      </onsuccess>

    </publishers>

  </project>

   3、查看結果

(1) CruiseControl會自動更新這個配置文件,加載時間一般是在任何一個項目需要檢查是否有更新時。

(2) 你會看到這個項目在Dashboard上首先是灰色的方塊,因爲這個項目還從來沒有在CruiseControl上構建過,沒有任何歷史信息,我們稱該項目爲"inactive"

(3) 過一會兒,你會看到一個環形動態圖標,表示它在構建中(執行build.xml腳本)。

(4) 當環形動態圖標消失時,你會看到它變成紅色(如果構建失敗的話)或綠色(如果構建成功的話)。

注意:

(1) 目前CruiseControl還不支持首次自動檢出代碼,所以你要先把項目代碼手工檢出到本地。

(2) 如果你的SVN使用https方式更新代碼,你一定要在命令行方式檢出代碼,並選擇永久接受證書。

(3) CruiseControl這個分支版本不支持在UI上增加項目。

(4) 如果你在config.xml文件中把你的項目刪除,卻不刪除它的日誌的話,你在Dashboard上還是可以看到這個項目,此時它被標記爲"Discontinued",表示你可以看到它的歷史信息,但CruiseControl不會再構建它了。

8、檢測項目的狀態

1、項目的狀態

首先CruiseControl把項目分成三類,DiscontinuedInactive,及Active

如果一個項目是Discontinued,表示CruiseControl可以找到該項目的日誌文件,但在配置文件(Config.xml)中並沒有該文件。所以CruiseControl不會去構建它,但你可以看到這個項目過去構建的歷史信息。如果想把這個項目從CruiseControl中刪除,只有把該項目的日誌目錄刪除才行。如果該項目名爲"vcdstore",目錄當該是${CruiseContor.Home}/logs/vcdstore

如果一個項目是Inactive,表示CruiseControl在配置文件(Config.xml)中發現了該項目,但是沒有發現關於這個項目的任何歷史信息,即在CruiseControl的日誌目錄中還沒有該項目的日誌文件,或日誌文件被人爲刪除了。CruiseControl會根據配置信息對這個項目進行檢查新版本並進行構建。當第一次構建完成後,CruiseControl就會生成日誌,這個項目狀態就會轉爲Active了。

如果一個項目是Active,表示CruiseControl即可以找到該項目的日誌文件,又在配置文件(Config.xml)中可以發現它。此時,這個項目可能是構建成功,也可能是構建失敗,還可能是構建中。

2Dashboard

你可以通過 http://localhost:8080/dashboard 訪問Dashboard

Dashboard主要有四個頁面,它們分別是DashboardBuildsBuild DetailsAdministatiorn

(1) Dashboard

你可以在Dashboard上看到所有項目的狀態,紅色方塊表示該項目最近一次構建是失敗的。綠色方塊表示該項目最近一次構建是成功的。灰色方塊表示該項目可能是Inactive的,也可能是Discontinued

當把鼠標放在小方塊上時,會顯示該項目的主要信息。點擊小方塊,會進入Build Details頁面。

(2) Builds

你可以在Builds頁面上以列表的方式看到所有項目的狀態,點擊每個列表,可以進行Build Details頁面。

如果你將ForceBuild配置爲true,在列表右側有一個按鈕,你可以強迫該項目進行構建,而不必等到其下一次檢查,也不必等到它有版本變化。

(3) Build Details

此頁面會列出該項目某次構建的詳細信息,包括與上次構建相比有哪些變化,測試結果是什麼,詳細的日誌輸出,如果構建成功的話,在配置文件(config.xml)中配置的Artifacts也會在名爲Artifiactstab頁上看到。

右側的列表是該項目所有的構建列表,點擊其中一個構建,你就可以得到該次構建的詳細信息。

3CruiseControl Reporting

你也可以通過鏈接http://localhost:8080/ 來訪問CruiseControlOld Reporting

點擊項目名稱,可以看到詳細內容。

4CruiseControl JMX控制檯

你也可以通過鏈接http://localhost:8000/來訪問CruiseControlJMX控制檯。

在控制檯上點擊項目名稱(如connectfour),可以修改項目配置,暫停/恢復項目構建等。

 

 

 

5.PMD的配置

設置路徑:

<path id="pmd.classpath">

    <pathelement location="${basedir}/"/>

    <fileset dir="build/pmd/">

        <include name="*.jar"/>

    </fileset>

</path>

 

<target name="pmd">

      <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath"/>

       <pmd rulesetfiles="basic" shortFilenames="true">

        <formatter type="xml" toFile="pmd.xml" linePrefix=".line"/>

          <fileset dir="src/example/">

              <include name="HelloWorld.java"/>

          </fileset>

      </pmd>

  </target>

注意:

jaxen-1.1.1.jar pmd-4.2.5.jar asm-3.1.jar要放到pmd.classpath設定的路徑下。

6.Audit的配置

   <target name= "cmd">

      <echo>運行runjava2wsdl.bat命令行</echo>

      <exec dir="C:/Program Files/CruiseControl/projects/" executable="cmd.exe">

            <arg line="/c audit.bat"/>

      </exec>

   </target>

     注意audit.bat的路徑

     已經在audit.bat中設置了選項:--quite --xml --f test.xml HelloAnt

 

發佈了26 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章