持續集成工具hudson(Continuous Integration )CI

一.什麼是持續集成

持續集成的核心概念

CI過程會經常構建軟件組件;在許多情況下,每當源代碼存儲庫(比如 Subversion 或ClearCase)中的代碼發生變化時,都要構建軟件組件。CI的好處是:經常構建軟件可以確保儘早遇到問題(比如代碼缺陷),避免問題在軟件開發週期晚期變複雜時才被發現。

工具與過程

儘管 CI 實際上是一個過程,但是持續集成這個詞常常與一個或多個工具相關聯。在本教程中,講解如何安裝、配置和使用 Hudson 作爲 CI 服務器,但是要記住,CI遠不只是個工具。實際上,使用的工具可能是 CI 比較次要的方面,因爲 CI工具所做的僅僅是在代碼存儲庫中探測到修改時運行構建。構建過程本身比用來運行它的工具重要得多。

開始使用 CI

開始使用 CI 需要三個組件:

  • 用 Ant 或 Maven 等工具建立的自動構建過程
  • 一個代碼存儲庫,比如 CVS 或 Subversion
  • 一個 CI 服務器,比如 Hudson,但是 cron 作業也可以滿足需要

我們來詳細討論這些組件。

自動的構建

CI過程會經常集成軟件,這需要通過構建來完成。在 Java 環境中,Ant 是常用的構建平臺。可以使用 Ant可靠地自動執行編譯、測試等任務,甚至可以執行軟件檢查和部署。在掌握了 CI 的所有組件之後,您會發現構建策略是成功的 CI過程最重要的方面。如果缺少適當的構建過程,CI 就難以發揮作用。

源代碼管理

爲了讓 CI 正確地發揮作用,需要一個源代碼管理(SCM)系統或存儲庫,比如 Subversion 或 CVS。CI 服務器向 SCM存儲庫查詢代碼修改。在找到修改時,CI服務器執行簽出(即更新本地沙箱)並執行構建。除了執行得更頻繁之外,構建過程與在本地環境中執行的構建相同。

CI 服務器

對於成功的 CI 過程,需要用一個自動的過程監視 SCM 存儲庫並在探測到修改時運行構建,這也非常重要。對於 Java 平臺,有許多可用的 CI服務器,包括開放源碼軟件和商業產品。它們的基本配置都很相似,適合監視特定的 SCM 並在探測到修改時運行構建。所有 CI服務器都有自己的優缺點。Hudson 尤其讓人感興趣,因爲它容易配置而且具有強大的插件,這些插件可以顯示測試結果趨勢等信息。

二.Hudson 簡介

Hudson 是一種革命性的開放源碼 CI 服務器,它從以前的 CI服務器吸取了許多經驗教訓。Hudson 最吸引人的特性之一是它很容易配置:很難找到更容易設置的 CI 服務器,也很難找到開箱即用特性如此豐富的CI 服務器。Hudson 容易使用的第二個原因是它具有強大的插件框架,所以很容易添加特性。例如,一個 Hudson 插件可以隨時間的推移跟蹤FindBugs 和代碼覆蓋。它還可以報告測試結果的趨勢(來自 JUnit 或 TestNG)以及構建結果和對應的執行時間。

Hudson 需要運行 Java 5。如果需要使用 Hudson 附帶的嵌入式容器(Winstone)之外的其他容器,那麼只需使用一種 Servlet 2.4 容器。對於大多數情況,Winstone 就足夠了。

三.Hudson使用

CI 過程的最後一個方面是 CI 服務器本身。CI服務器在整個開發過程中的主要作用是控制者:當服務器在代碼存儲庫中探測到修改時,它將運行構建的任務委託給構建過程本身。如果構建失敗了,那麼 CI服務器將通知相關方面,然後繼續監視存儲庫。它的角色看起來是被動的;但是,它是快速反映問題的關鍵。

安裝 Hudson

使用 Hudson 的主要好處之一是它的設置很簡單。在最簡單的情況下,Hudson 只需要兩個步驟:

  1. 下載最新的版本(它打包爲一個 WAR 文件)。 hudson官方網址:https://hudson.dev.java.net/
  2. 運行 java -jar hudson.war

這樣就可以了。因爲下載的是一個 WAR 文件,所以如果願意,可以將它部署在 Tomcat 或 JBoss 等容器中。這完全由您自己決定。當然,Hudson 假設在安裝它的機器上運行着 Java 5,而且如果定義了 JAVA_HOME 環境變量,Hudson 就會使用它。(正如前面提到的,Hudson 需要 Java 5。)

在安裝並運行 Hudson 之後(將 WAR 文件部署到 servlet 容器或從命令行執行 java -jar hudson.war),啓動瀏覽器並訪問默認安裝位置。如果通過命令行運行 Hudson 而且您在本地機器上,那麼可以訪問 http://localhost:8080/


如果一切正常(實際上不太可能出問題),應該會看到圖 2 所示的 Hudson 啓動頁面。轉載:http://www.ltesting.net/html/49/n-157849.html