每日構建 三

2022-02-16 04:21:05 字數 4078 閱讀 3770

這前的兩篇每日構建,寫的簡單了點,這裡在之前的基礎上做些改進,使得更加容易管理和配置。

每日構建改進一: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...