簡體   English   中英

持續集成構建配置

[英]Continuous Integration Build Configurations

我被指控在我公司設置CI服務器,我正在尋找一些關於我的項目需要什么構建配置的建議。 作為第一步,我將構建設置為:

提交構建:編譯代碼並運行單元測試
集成構建:編譯代碼並運行長時間運行的集成測試

我不確定我還需要什么來完成CI圖片。 例如,你的商店里有什么構建配置?

我知道必須有一個步驟來部署我的成功構建,但是我會將部署作為Integration的一部分嗎?

使用TeamCity,MSBsuild和SVN

尋找急需的建議。

我見過的最完整的構建按給定順序執行了以下操作。 有兩個組,無論失敗如何,每個組中的所有目標都會執行,但如果組成員失敗,則組將失敗。 所以我們看到了所有問題。

第一組工作來源:

  • 干凈的工作目錄
  • 更新到最新的來源,從SVN獲取一切
  • 編譯來源,rmic等
  • valudate XML資源(至少在Java中有很多,比如部署描述符,樣式表等)
  • 為源提供靜態代碼分析,例如檢查空格,編碼約定,命名,文件名,或者對源的AST進行更復雜的檢查(就像PMD為Java做的那樣)。
  • 檢查其他文件的命名約定,例如,我們檢查了所有依賴庫的名稱以包含版本號。

第二組正在處理生成的代碼,只有第一步成功:

  • 進行單元測試
  • 運行快速集成測試
  • 為源提供靜態代碼分析(Java的大多數工具都是這樣做的),例如檢查典型的bug模式(比如Findbugs為Java做的)
  • 進行參考檢查,例如強制執行體系結構分層,允許從其他類中使用某些類等。
  • 創建完整的部署包

這是提交一次又一次觸發的主要構建。 它做了很多,但有一些強大的機器使用幾個核心,它約為4分鍾500k LOC。 如果他們願意,測試人員可以獲得最新的快照構建。

長時間運行的集成測試(每個2小時)將每晚運行一次並且僅運行

  • 運行長時間運行測試

另一個版本是純粹的文檔構建,每晚觸發一次。 它永遠不會失敗。

  • 創建API文檔
  • 使用所有規則進行完整的靜態代碼分析,並為整體項目質量生成某種指標
  • 從以前構建的所有項目中生成覆蓋率報告(遺憾的是,我們沒有強制實施覆蓋范圍)
  • 制作各種花哨的文檔,如Maven網站或Sonar報告等。這是管理/ QA的大部分時間。

我們在每個CI運行的先前項目中運行的事項,其中代碼覆蓋率記錄,發布自動生成的文檔和Checkstyle報告。

這給了我們一些關於每個登記計划的統計質量的統計數據,以及改善我們的工作習慣。

我們已經構建了配置

  • 編譯+單元測試+靜態分析(在我們的例子中是findbugs)+代碼覆蓋率(在提交時觸發)
  • 集成測試(只要有提交就按計划觸發)
  • 部署測試(手動觸發)

部署配置允許非技術QA資源在他們准備測試某些內容時部署到測試環境,並避免混淆錯誤修復是否已經到達測試環境。

我們在最近的CITCON北美(持續集成和測試會議)上進行了類似的對話,我們在這里分享了我們的經驗,並嘗試將簡單CI的路線圖組合到非常內置的CI和發布系統中。

原始會議記錄在這里 隨着一個Flickr 照片流 城市代碼博客也提供清理版本

澳大利亞人在CITCON布里斯班重新審視了這個主題,並提供了一個可用的Pencast

希望其中一些資源是有用的。

我正在研究這個問題。 我們的構建配置執行以下操作:

建立:

  • 編譯。
  • 測試。
  • 使用基本配置合並不同的特定於環境的配置值(這使我們得到Staging.config,Test.config等)
  • 創建一個名為VERSION.txt的文件,列出構建時間,修訂號等。
  • 將所有這些發布到一個干凈的目錄。 然后由teamcity將其作為構建工件。

現在我們有一個可以發布到任何服務器的應用程序,只需將其復制到部署目錄,並將相應的配置文件重命名為web.config

然后我們有3個配置進行部署。 每次成功構建后,第一個都會部署到開發環境中。 這為我們提供了最新代碼庫的工作版本。 第二個部署到手動分段。 這將設置為從上一個固定的開發版本進行部署。 最后,有一個實時部署配置,然后從上次部署的暫存構建進行部署。 這會做一些額外的事情:

  • 標記發布的版本
  • 創建一個存檔,將其放在目錄中以便保存
  • 查看自上次實時構建以來的所有簽到注釋,並使用票號提取。 然后使用故障單的標題生成初步更改列表。 這是由PM編輯的,然后保存給子孫后代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM