該腳本工具是2007年在做產品研發覺得每天發佈版本不方便,天天花費精力做一些價值不高的工作,便萌生了自己寫腳本來實現每日構建的想法,花了大概兩天的時間編寫並調試通過。時過境遷,這個工具隨着這個產品的升級換代,已經退出了“江湖”,爲了記住這個小工具,特整理這個工具腳本,希望能對大家有幫助。
該構建使用的腳本下載
1. 構建流程
該構建分爲三個步驟:
1. 從VSS服務器獲取最新版本
1.1. 設置日誌存放的地址,日誌包括從VSS獲取文件列表、複製文件列表、編譯結果;
1.2. 刪除編譯文件夾下所有的文件,該文件夾爲VSS獲取文件存放地址,刪除所有文件的目的在於每次獲取最新全量版本;
1.3. 進入VSS的執行目錄,設置用戶信息,設置VSS地址以及訪問的用戶名、密碼;
1.4. 從VSS目錄中獲取最新的版本到編譯目錄;
2. 編譯程序
2.1. 遍歷設置DLL文件夾中文件爲非只讀,該步驟不是必須,而是筆者產品中需要對該文件夾設置爲非只讀;
2.2. 版本號設定,版本號由四部分組成:主版本號.子版本號.發佈號.編譯日期,該步驟對版本號V0.8.0232.0810中的發佈號自動加1,編譯日期爲當前日期;
2.3. 程序編譯,調用VS.NET命令行工具進行編譯;
3. 版本發佈
3.1. 從編譯文件夾複製到發佈文件夾,把編譯成功的所有文件夾複製到發佈文件夾中;
3.2. 設置發佈路徑,在IIS中創建虛擬目錄;
3.3. 修改文件的配置文件,由於發佈路徑中的配置信息有編譯環境,修改配置配置文件適應發佈環境;
2. 準備工作
在D:\JRTJ目錄下建立如下文件夾:
- BuildDaily:用於存放構建版本
- BuildLogOfAuto:用戶存放構建日誌
- 自動編譯腳本:存放每日構建腳本及輔助腳本
(*********** 圖004)
自動編譯腳本相關腳本說明:
- cscript.exe:Win32控制檯腳本宿主引擎
- iisvdir.vbs:IIS6.0中用戶創建虛擬目錄腳本
- main.bat:構建主程序
- replace.exe:運行在Framework1.1下,用於替換關鍵字的執行程序
- version.exe:運行在Framework1.1下,用於版本號設置,加入當前時間並且每次自增1
- version.txt:用於記錄當前版本號,具體格式參見構建流程中對版本號說明
- xcopy.exe:複製文件使用執行程序
3. 腳本內容
其中main.bat構建腳本內容如下:
2 :: 程序打包、版本發佈、備份程序
3 :: create&edit by shishanyuan 2007-9-18 17:25
4 :: 在windwo2003、iis6.0、framework1.1環境下測試通過
5
6 rem 步驟一:從VSS獲取最新的文件到編譯文件夾下
7 rem ###################################################
8 rem 設置日誌存放的地址
9 set LogFile=D:\JRTJ\BuildLogOfAuto\%date:~0,4%%date:~5,2%%date:~8,2%\
10 md %LogFile%
11
12 rem 刪除編譯文件夾下所有的文件
13 set GetToFolder=E:\VSS_DB_DJZ\綜合報送產品改造項目\編碼目錄\人行集中版\PBOCWeb\
14 rmdir /s /q %GetToFolder%
15 md %GetToFolder%
16
17 rem 進入VSS的執行目錄,設置用戶信息
18 set path=D:\Program Files\Microsoft Visual Studio\Common\VSS\win32
19 set ssdir=\\10.168.165.40\vss_db_djz
20 set ssuser=guojingzhan
21 set sspwd=guojingzhan
22
23 rem 從VSS目錄中獲取最新的版本到編譯目錄下
24 ss get $/綜合報送產品改造項目/編碼目錄/人行集中版/PBOCWeb -y%ssuser%,%sspwd% -I-Y -R -GL% GetToFolder% -O@%LogFile%codebuild.log
25 rem ###################################################
26
27 rem ###################################################
28 rem 步驟二:對最新的程序進行編譯
29 rem 遍歷設置DLL文件夾中文件爲非只讀
30 xcopy %GetToFolder%PBOCWeb\PBOC.Web\Dll %GetToFolder%PBOCWeb\PBOC.Web\Dll1\ /s /e /h
31 rmdir /s /q %GetToFolder%PBOCWeb\PBOC.Web\Dll\
32 xcopy %GetToFolder%PBOCWeb\PBOC.Web\Dll1 %GetToFolder%PBOCWeb\PBOC.Web\Dll\ /s /e /h
33 rmdir /s /q %GetToFolder%PBOCWeb\PBOC.Web\Dll1\
34
35 rem 版本號設定
36 version %CD%\version.txt
37
38 rem 程序編譯
39 set path=D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\
40 devenv /rebuild debug %GetToFolder%PBOCWeb\PBOCWeb.sln /out %LogFile%compiler.log
41 rem ###################################################
42
43 rem ###################################################
44 rem 步驟三:進行版本的發佈
45 rem 從編譯文件夾複製到發佈文件夾
46 setlocal enabledelayedexpansion
47 for /f %%i in (version.txt) do set var=!var!%%i
48 set filename=%var%
49 set Publisfolder=D:\JRTJ\BuildDaily\%filename%\
50 xcopy %GetToFolder:~0,-1% %Publisfolder% /s /e /h /y >%LogFile%xcopy.log
51
52 rem 設置發佈路徑
53 cscript iisvdir.vbs /create "默認網站" PBOC.Web_D_%filename% %Publisfolder%PBOCWeb\PBOC.Web
54
55 rem 修改文件的配置文件
56 replace D:\JRTJ\BuildDaily\%filename%\PBOCWeb\PBOC.Web\Config\PBOC.NEW.config D:\JRTJ\BuildDaily\%filename%\ %GetToFolder%
57 replace D:\JRTJ\BuildDaily\%filename%\PBOCWeb\PBOC.Web\web.config D:\JRTJ\BuildDaily\% filename%\ %GetToFolder%
58 rem ###################################################
59 cd\
60
61 if errorlevel 1 (
62 echo 導出失敗
63 ) ELSE (
64 echo 導出完成
65 )
66 @echo on
4. 執行過程截圖
4.1. 運行腳本
雙擊或者在命令行中調用main.bat批處理文件
4.2.1. 設置日誌存放的地址
2 rem ###################################################
3 rem 設置日誌存放的地址
4 set LogFile=D:\JRTJ\BuildLogOfAuto\%date:~0,4%%date:~5,2%%date:~8,2%\
5 md %LogFile%
設置日誌存放地址根據當前日期生成20110811,具體路徑爲:D:\JRTJ\BuildLogOfAuto\20110811\,如果不存在則創建,否則提示“已經存在”
4.2.2. 刪除編譯文件夾下所有的文件
2 set GetToFolder=E:\VSS_DB_DJZ\綜合報送產品改造項目\編碼目錄\人行集中版\PBOCWeb\
3 rmdir /s /q %GetToFolder%
4 md %GetToFolder%
刪除VSS下載存放文件夾E:\VSS_DB_DJZ\綜合報送產品改造項目\編碼目錄\人行集中版\PBOCWeb\PBOCWeb\並重新創建,目的在於能夠每次編譯能夠獲取全量版本
4.2.3. 進入VSS的執行目錄,設置用戶信息
2 set path=D:\Program Files\Microsoft Visual Studio\Common\VSS\win32
3 set ssdir=\\10.168.165.40\vss_db_djz
4 set ssuser=guojingzhan
5 set sspwd=guojingzhan
6
7 rem 從VSS目錄中獲取最新的版本到編譯目錄下
8 ss get $/綜合報送產品改造項目/編碼目錄/人行集中版/PBOCWeb -y%ssuser%,%sspwd% -I-Y -R -GL% GetToFolder% -O@%LogFile%codebuild.log
設置VSS訪問地址http://www.cnblogs.com/shishanyuan/admin/file://10.168.165.40/vss_db_djz並設置訪問用戶名、密碼信息,調用SS命令全量版本,版本獲取的日誌生成放在D:\JRTJ\BuildLogOfAuto\20110810\ codebuild.log中
4.3. 步驟二編譯程序
4.3.1. 遍歷設置DLL文件夾中文件爲非只讀
2 rem 遍歷設置DLL文件夾中文件爲非只讀
3 xcopy %GetToFolder%PBOCWeb\PBOC.Web\Dll %GetToFolder%PBOCWeb\PBOC.Web\Dll1\ /s /e /h
4 rmdir /s /q %GetToFolder%PBOCWeb\PBOC.Web\Dll\
5 xcopy %GetToFolder%PBOCWeb\PBOC.Web\Dll1 %GetToFolder%PBOCWeb\PBOC.Web\Dll\ /s /e /h
6 rmdir /s /q %GetToFolder%PBOCWeb\PBOC.Web\Dll1\
該步驟非必須,而且本產品需要設置該文件夾爲可讀進行
4.3.2. 版本號設定
2 version %CD%\version.txt
version.exe是調用VS.NET2003命令行編譯而成的小程序,其功能是維護版本號。版本號由四部分組成:主版本號.子版本號.發佈號.編譯日期,該步驟對版本號V0.8.0232.0810中的發佈號自動加1,編譯日期爲當前日期
4.3.3. 程序編譯
2 set path=D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\
3 devenv /rebuild debug %GetToFolder%PBOCWeb\PBOCWeb.sln /out %LogFile%compiler.log
調用VS.NET 2003的編譯工具進行編譯,編譯的日誌生成放在D:\JRTJ\BuildLogOfAuto\20110811\compiler.log中,需要編譯成功纔可進行下步操作
4.4. 步驟三編譯程序
4.4.1. 從編譯文件夾複製到發佈文件夾
2 rem 從編譯文件夾複製到發佈文件夾
3 setlocal enabledelayedexpansion
4 for /f %%i in (version.txt) do set var=!var!%%i
5 set filename=%var%
6 set Publisfolder=D:\JRTJ\BuildDaily\%filename%\
7 xcopy %GetToFolder:~0,-1% %Publisfolder% /s /e /h /y >%LogFile%xcopy.log
獲取最新的版本號,把編譯成功的程序文件複製到發佈文件夾中,發佈文件夾路徑爲D:\JRTJ\BuildDaily\V3.1.0028.0811,複製的日誌放到D:\JRTJ\BuildLogOfAuto\20110811\xcopy.log中
4.4.2. 設置發佈路徑
2 cscript iisvdir.vbs /create "默認網站" PBOC.Web_D_%filename% %Publisfolder%PBOCWeb\PBOC.Web
通過iisvdir.vbs腳本發佈程序,執行的結果顯示了發佈名稱、根目錄信息等。具體名稱爲PBOC.Web_D_V3.1.0028.0811,根目錄爲D:\JRTJ\BuildDaily\V3.1.0028.0811\PBOCWeb\PBOC.Web
4.4.3. 修改文件的配置文件
2 replace D:\JRTJ\BuildDaily\%filename%\PBOCWeb\PBOC.Web\Config\PBOC.NEW.config D:\JRTJ\BuildDaily\%filename%\ %GetToFolder%
3 replace D:\JRTJ\BuildDaily\%filename%\PBOCWeb\PBOC.Web\web.config D:\JRTJ\BuildDaily\% filename%\ %GetToFolder%
replace.exe是調用VS.NET2003命令行編譯而成的小程序,其功能是對文本進行替換功能。在D:\JRTJ\BuildDaily\V3.1.0028.0811\PBOCWeb\PBOC.Web\Config\PBOC.NEW.config文件中進行參數替換
4.4.4. 執行結果
2 cd\
3
4 if errorlevel 1 (
5 echo 導出失敗
6 ) ELSE (
7 echo 導出完成
8 )
9 @echo on
執行結果顯示,如果成功則輸出導出完成
4.5. 執行信息查看
4.5.1. 日誌信息
4.5.3. IIS中發佈程序
出處http://www.cnblogs.com/shishanyuan/archive/2011/08/11/2135107.html