2014年2月14日 星期五

[筆記] Cruise Control(三)-config.xml設定

  XML全寫為eXtensible Markup Language,是一種標記語言,而在這裡被用為描述軟體的設定參數。其巢狀式的結構也方便人來閱讀。基本上每個元素都有開頭和結尾,如果是多行則為<ele> ...</ele>,如果是單行則為<ele.../>,如果該元素帶有屬性則應該寫為<ele attr1=... attr2=... >...</ele>
CC config.xml官方說明書

基本結構


<cruisecontrol>
  <project name="ProjectA">
    ...
  </project>
  <project name="ProjectB">
    ...
  </project>
</cruisecontrol>
  • <cruisecontrol>:為configuration的根元素,包含了其他剩下的設定元素
  • <project>:針對每個project設定的基本元素,在config.xml中可以含有多個此元素
    • name屬性name="indentifer":必備,其所指定的值為此project獨特的名字

Project設定


就從Cruise Control所附的config.xml來解釋吧:
  • <listener>:listener plugins的容器元素
    • <currentbuildstatuslistener file="path/filename">所指定的檔案必須包含路徑,而這個檔案將會記錄目前的project狀態及上一次build的狀態改變。在同一個資料夾下也會儲存每一次build結束後所產生的HTML snippet,以供查看。
  • <bootstrappers>:bootstrappers在build開始之前都會執行,不論build是否需要,除非該次build被暫停了。而每個bootstrapper都是獨立的,所以可以一次擁有多個bootstrapper。
    • <antbootstrapper>:使用ant作為自訂的bootstrapper。以下是所帶的屬性:
      • anthome:指定Ant所安裝的資料夾。在Cruise Control就有附帶Ant了。
      • antworkingdir:指定Ant所要工作的資料夾,為Project程式碼的放置資料夾。
      • buildfile:指定Ant的build script。如果有設置antworkingdir則不用指定路徑,直接給指定檔名即可,若此屬性沒有設置,則預設為build.xml。
      • target:設置bootstrapper要執行的Ant target(類似makefile的target)。
      • timeout:秒數。如果build的執行秒數超過指定的值,該build就會被停止。
  • <modificationset>:指定要檢查有改變的檔案,可以避免檢查所有檔案。其帶的屬性有:
    • quietperiod:秒數。避免在啟動build時,有人還正在更改檔案。如果在指定時間內發現檔案還有更改的話,CC進入休眠狀態,等到該期間過了後,會再重新檢察一次還有沒有更動。
    • <filesystem>:回傳自從上一次build有改變的檔案,都會被標記為被"User"這位使用者所改變。
      • folder:必要。指定要被掃描改變的最上層資料夾,其下面的所有檔案都會被檢察。
    • <git>:如果管理原始碼的工具為git的話用此element比較好。會檢察git中有改變的檔案,如果沒有任何更動的話,則這次的build跳過。
      • LocalWorkingCopy:必要。指定git repo所在的資料夾。
  • <schedule>:指定build的間隔還有build所用的工具
    • interval:間隔秒數。預設為300(5分鐘),可指定範圍為1到31536000(1年)。
    • <ant>:使用Ant作為project building的工具。
      • anthome:指定Ant所安裝的目錄
      • buildfile:指定Ant所需的build script,需要指名路徑。
      • timeout:秒數。如果超過指定時間,此次build就會被停止。
  • <log>:指定CC所產生的log file放置地點。透過merge元素,可以指定將build過程所產生的xml file merge到CC的build log。
    • <merge>:通常用在JUnit test所產生的結果,可以將這些結果merge到CC的Build log file裡,可以得到一個全面的log file,透過瀏覽器可以方便檢閱
  • <publishers>:在build結束後,無論結果為成功或是失敗,都會執行。
    • <artifactspublisher>:複製build成功後所產生的產品(例:jar檔)到指定的目錄下。
      • dest:必要,指定要被複製到的母目錄。CC會以build成功的時間點命名目錄,裡面會複製該次build所產生的產品。
      • dir:或file:必要,二擇一。dit是指定複製一整個目錄,file是指定特定檔案。都必須指明路徑。
    • <htmlemail>:寄送內嵌html語法的結果郵件給指定使用者。
      • username:寄送者的信箱
      • password:寄送者的信箱密碼
      • mailhost:mail server address for sending email。像是gmail為smtp.gmail.com
      • mailport:mail server port。
      • usessl:使用SSL加密連接伺服器,需要指定相對應的mailport,像gamil為465
      • returnaddress:必要。會顯示在"寄送者"欄位的郵件地址。
      • <always address="email">:每次build後必定傳送的對象。
      • <failure address="email">:只有在build失敗時才傳送的對象。

參考資料



Cruise Control(一)-介紹Continuous Integration
Cruise Control(二)-架設Cruise Control及概觀
Cruise Control番外篇-Ant build file介紹

沒有留言:

張貼留言