每日構建(二)
以前在做專案時,並沒有覺的每日構建有多麼重要,前公司主要給本公司做專案,專案自己人用,也沒覺的編譯,部署有多麼麻煩,之後到了其它公司才發現,每次去部署一次所花的時間和精力真是太傷神了。
難度一:公司要部署的專案特別多,每個專案都親自去獲取原始碼,編譯,發布,就這工作量也不少,更不用說這工作的枯燥性。
難度二:多語言版本的專案。是那種動態載入控制項來實現的,即每種語言都建立乙個使用者控制項,它們共享同乙個後台**,部署的時候,我們需要把乙個專案分成和語言種類相同數目的站點,也就是說,中文站點中只會包含中文用的控制項,英文只會包含英文控制項等等,這種情況下ms的發布功能就不能勝任了。
難度三:測試階段,往往在後期部署的頻率會非常高,這樣如果手工去完成打包的工作,會占用太多的工作時間。
目前有很多任務具都能很好的完成以上功能,但大多都不夠完美,不是這有問題就是那有不足,所以可以綜合幾個工具的特點,讓它們各自發揮特長,這裡我採用的組合如下:
1:ccnet:是乙個**開發階段流程的自動管理監控工具;所包括的流程有根據設定的任務從指定的**庫中check out**、然後自動編譯、自動**檢查、自動單元測試,並將編譯和測試的結果進行記錄和反饋(email方式等),並有還算不錯的web應用平台進行呈現,也支援一部分的分析工作。我主要用它來做主流程的控制,因為ccnet有非常好用的web平台。
參考:2:svn:源**管理工具。
3:msbuilder:主要應用它來編譯專案。
4:nant:請參考此鏈結眾多功能中,我只應用了它複製檔案的功能。
5:winrar:應用方面:增量壓縮,即壓出的包只包含某乙個時間之後修改的檔案內容。這樣可以大大縮小包的容量。
1:sourcecontrol:源**管理,支援很多種源**管理軟體,這裡我用svn。
1>: trunkurl:專案路徑。
2>:workingdirectory:本地專案存放路徑。
3>:executable:svn程式路徑。
4>:username:源**使用者名稱
5>:password:源**使用者密碼
6>:timeout:超時時間。
2:triggers:觸發器配置,可以設定兩次執行持續整合的間隔定期執行。這裡我採用intervaltrigger。
3:tasks:任務配置
1>:modificationwriter/modificationreader:這兩個節點主要用來配置檔案修改記錄的日誌。每次更新的工程檔案資訊都會被記錄在節點所配置的檔案中。
2>:msbuild:工程編譯配置。
(1):executable:c:\windows\microsoft.net\framework\v3.5\msbuild.exe,如果是2.0版本需要修改下版本號。
(2):workingdirectory:工程解決方案所在資料夾。
(3):projectfile:解決方案檔名。
(4):buildargs:編譯時的一些引數設定。可以指定編譯的版本是release或者是debug等。
(5):timeout:超時時間。
3>:nant:ccnet直接支援nant的應用。
(1):executable:nant程式所在位置。
(2):basedirectory: 工程檔案位置
(3):buildargs:需要執行的引數和內容。
(4):buildfile:nant對應的指令碼檔案路徑
4:publishers:發布相關配置及編譯結果反饋設定。ccnet執行發布完後的後續操作,例如傳送執行結果郵件給相關人員參考和跟蹤。
1>:exec:主要是配置相關發布設定。
2>:executable:要執行的批處理檔案
3>:basedirectory:批處理檔案所在檔案目錄位址
待續......
Daily Build (每日構建)
在說每日構建之前需要先說乙個軟體 cruisecontrol.net,它是乙個將vss msbuild nuint fxcop等軟體連線起來的自動化構建平台。下來簡稱其為cc.net,整個的流程如下圖所示 今天配置了cc.net,以前一直是用vss進行源 管理,nunit進行單元測試,並沒有任何版本...
每日構建 三
這前的兩篇每日構建,寫的簡單了點,這裡在之前的基礎上做些改進,使得更加容易管理和配置。每日構建改進一 build檔案的共享。在進行每日構建時,對於複製檔案這部分功能我採用的是nant,nant最核心的部分是build檔案,一般乙個大型 有時分好多個解決方案,例如酒店專案,機票專案等等,所以對應不同的...
原創 每日構建實踐篇(一)
看了 joel spolsky的 軟體開發成功12法則 和 daily builds are your friend 對於每日構建的必要性和實用性都深有感觸。於是為自己的專案新增指令碼以實現快捷的每日構建,並記述這個嘗試的整個過程,方便以後參考。所謂的每日構建就是每天至少一次的重新建立整個工程,每日...