這前的兩篇每日構建,寫的簡單了點,這裡在之前的基礎上做些改進,使得更加容易管理和配置。
每日構建改進一:build檔案的共享。
在進行每日構建時,對於複製檔案這部分功能我採用的是nant,nant最核心的部分是build檔案,一般乙個大型**有時分好多個解決方案,例如酒店專案,機票專案等等,所以對應不同的解決方案會有不同的部署規則。而**的部署往往不是一部到位,隨著業務需求的變化,會產生不同的**版本。但nant用的build檔案應該是一樣的,這裡就需要build檔案能夠在不同的版本中共享。
解決方案:nant的build檔案支援外部屬性。先貼乙個build檔案:先看看copy節點,它需要兩個重要的引數:源資料夾目錄,目的資料夾目錄,build檔案中如果copy節點過多,我們需要寫相當多的路徑,這裡可以在build檔案中定義乙個property節點,它相當於c#中的屬性。一方面可以在copy命令中用這個屬性來代替實際路徑,另一方面是為了在外部呼叫build檔案時動態給屬性值。
**xml version="
1.0"
encoding="
gb2312
"?>
<
project name="
deploy
"default="
run"
>
<
property name="
basename
"value="
website
"/>
<
property name="
debug
"value="
true
"/>
<
property name="
base.dir
"value="
版本一/src
"/>
<
property name="
deploy.dir
"value="
deploy/web
"/>
<
property name="
fxcop.dir
"value="
deploy
"/>
<
target name="
clean
">
target
>
<
target name="
deploy
"depends="
clean
">
<
copy todir="
$/new/member
">
<
fileset basedir="
$/member/
">
<
include name="
**/*.js
"/>
fileset
>
copy
>
target
>
<
target name="
run"
depends="
fxcop
">
target
>
<
target name="
fxcop
"depends="
deploy
">
target
>
project
>
svn與nant是如何合作的:同樣貼出**。和我上篇文章有區別的就在於增加了buildargs引數,通過"-d"來連線想要重寫的屬性內容。多個屬性中間用空格區分。當版本二進行每日構建時,只需要修改ccnet的project配置即可,原來的build檔案不需要改動。
**<
nant
>
<
executable
>
c:\min.jiang\bin\nant.exe
executable
>
<
basedirectory
>
c:\min.jiang\proj\el_online_v36_11.02_1215
basedirectory
>
<
nologo
>
false
nologo
>
<
buildfile
>
c:\min.jiang\bin\deployscripts\hotels\
default
.build
buildfile
>
<
targetlist
>
<
target
>
runtarget
>
targetlist
>
<
buildargs
>-
d:deploy.dir
=c:\min.jiang\deploy\版本一\package\web -d:
base
.dir
=c:\min.jiang\proj\版本一\src
buildargs
>
<
buildtimeoutseconds
>
1200
buildtimeoutseconds
>
nant
>
每日構建改進二:部署包自動提交svn。
ccnet在部署包生成後,會存放在ccnet伺服器上,其它的同事想要獲取這個部署包,只能登入伺服器,或者是從共享資料夾中獲取,既然有了svn,我們就可以把生成的部署後放進svn。修改的deploy.bat如下:
shift
if exist "c:\min.jiang\deploy\%0\package\web_auto.rar" del /f c:\min.jiang\deploy\%0
\package\web_auto.rar
說明:這裡先檢測本地部署檔案目錄中是否有部署包,如果有先刪除。
"c:\program files\winrar\rar.exe" a -r -ep1 -ed -ta%1 c:\min.jiang\deploy\%0
\package\web_auto.rar -ad c:\min.jiang\deploy\%0\package\web
說明:按時間來實現增量壓縮(壓縮包中只包含指定時間之後修改的檔案)。
if not exist "c:\min.jiang\deploy\%0\web_auto.rar" svn checkout http://svn/路徑/web3.5/%0/
"c:\min.jiang\deploy\%0" --username aaa --password aaa
if exist "c:\min.jiang\deploy\%0\web_auto.rar" svn revert "c:\min.jiang\deploy\%0\web_auto.rar"
說明:保證本地版本和svn版本內容相同。
xcopy c:\min.jiang\deploy\%0\package\web_auto.rar c:\min.jiang\deploy\%0\ /y
說明:把本地的部署包複製到svn部署目錄下。
svn commit -m "update new package" c:\min.jiang\deploy\%0\web_auto.rar
說明:提交最終的部署包。
上面的**目前有乙個缺陷,就是事先需要手動在svn部署目錄下面建立乙個web_auto.rar,然後提交svn,我在呼叫svn add c:\min.jiang\deploy\%0\web_auto.rar後,執行svn commit時,會提示檔案不在svn控制下。大家如果原因,請指教。
預設情況下,ccnet安裝後會在預設**下生成乙個虛似目錄,為了方便訪問,我們可以建立乙個站點,例如主機頭定義為這樣同事只需要把自己本機的host指向到ccnet伺服器ip,以後生成部署包只需要開啟就可以進行管理。
Daily Build (每日構建)
在說每日構建之前需要先說乙個軟體 cruisecontrol.net,它是乙個將vss msbuild nuint fxcop等軟體連線起來的自動化構建平台。下來簡稱其為cc.net,整個的流程如下圖所示 今天配置了cc.net,以前一直是用vss進行源 管理,nunit進行單元測試,並沒有任何版本...
每日構建 一
每日構建 二 以前在做專案時,並沒有覺的每日構建有多麼重要,前公司主要給本公司做專案,專案自己人用,也沒覺的編譯,部署有多麼麻煩,之後到了其它公司才發現,每次去部署一次所花的時間和精力真是太傷神了。難度一 公司要部署的專案特別多,每個專案都親自去獲取原始碼,編譯,發布,就這工作量也不少,更不用說這工...
說說「每日構建」 Daily Build
軟體開發的每日構建非常重要,如果是projectmanager或者devmanager,通常很想知道如下內容 1.多個開發人員每天都提交code,是否有程式設計師提交的code導致系統不能編譯通過呢?我想自動檢測。2.我想每天收到每個build報告,報告內容包含build是否成功,哪些模組build...