標籤:
所要用的工具:
1、CCNET(用於檢測SVN有改動提交時自動構建,並運行nuget的自動打包和推送批處理)
2、ProGet(目前見到最好用的nuget內部包管理平台)
3、Windows Batch(windows的批處理,用於nuget的自動打包和推送)(這裡是最難解決的地方)
具體的搭建步驟:
一、先搭建CCNET的持續整合環境,可以參照以下這些文章:
http://www.cnblogs.com/jillzhang/archive/2008/03/03/1089099.html
http://www.cnblogs.com/wangjq/p/3977318.html
http://www.cnblogs.com/cnblogsfans/archive/2008/04/24/1169689.html
這裡可以使用設定檔:http://www.cnblogs.com/EasonJim/p/5773328.html
二、配置和安裝ProGet進行內部包管理:
下載和安裝步驟:http://www.cnblogs.com/EasonJim/p/5486530.html
安裝好之後建立幾個feed,如下:
其中這裡包含的符號伺服器所用到的包DebugDefault(Debug模式的包)、ReleaseDefault(Release模式的包)、SymbolsDebugDefault(Debug模式下包含源碼的包)、SymbolsReleaseDefault(Release模式下包含源碼的包)。
有了這四個,基本上都是只用到Release的兩個,其餘的都留著以後備用。
其實ProGet不需要過多的配置,只要安裝到建立好Feed之後一些都OK了。
注意:這裡的ProGet的apikey為這樣的形式:使用者名稱:密碼;在nuget命令列下用setapikey時用到,比如Admin預設帳號密碼時是這樣使用:nuget -setapikey Admin:Admin
三、編寫自動打包的指令碼,並完成之後自動推送我們內部四個Feed上,這裡我已經寫好了批處理,並使用RunNuGetPackage.bat即可,並修改如下自己實際資訊,其餘的批處理都是看個人需要使用。
GitHub地址:https://github.com/easonjim/NuGetRun
下載回本地之後,根據實際情況配置apikey,已經feed的推送地址,並用一個檔案夾的形式放置在項目的根目錄,因為批處理上已經用cd..進行上一層的跳轉,可根據實際進行修改,如下放置:
四、完成上面步驟之後,可以進行測試,先用RunMSBuild.bat編譯以下項目(如果不行,檢查裡面的參數配置),再進行RunNuGetPackage.bat指令碼的運行(如果不行,檢查裡面的參數配置),都沒有問題之後,提交SVN,並用CCNET進行跑一下。
這裡提供我配置的項目節點:
<msbuild> <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable> <buildArgs> /p:OutputPath=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Debug;Platform="Any CPU";Configuration=Debug;GenerateDocumentation=true;DocumentationFile=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Debug\Easemob.Restfull4Net.xml;DebugSymbols=true </buildArgs> <workingDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net</workingDirectory> <projectFile>Easemob.Restfull4Net.csproj</projectFile> <targets>Build</targets> <timeout>900000</timeout> </msbuild> <msbuild> <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable> <buildArgs> /p:OutputPath=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Release;Platform="Any CPU";Configuration=Release;GenerateDocumentation=true;DocumentationFile=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Release\Easemob.Restfull4Net.xml;DebugSymbols=true </buildArgs> <workingDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net</workingDirectory> <projectFile>Easemob.Restfull4Net.csproj</projectFile> <targets>Build</targets> <timeout>900000</timeout> </msbuild> <exec> <executable>RunNuGetPackage.bat</executable> <baseDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\NuGetRun</baseDirectory> <buildArgs>all</buildArgs> <buildTimeoutSeconds>180</buildTimeoutSeconds> <successExitCodes>0</successExitCodes> </exec>
原理為:先編譯Debug版本並輸出檔案,再編譯Release版本,最後運行RunNuGetPackage.bat的指令碼進行包的打包和推送。
大致的原理可以這樣描述:1、公用庫的的代碼提交到SVN之後。2、CCNET自動檢測並編譯。3、編譯好之後用批處理進行包的自動認可。
這裡有一點公用庫開發時要注意的:1、規範。2、版本號碼。參考:http://www.cnblogs.com/EasonJim/p/5880233.html
關於符號伺服器源碼調試的方法:http://www.cnblogs.com/EasonJim/p/5891742.html;如果想要使用這個,那麼上面項目編譯時間的路徑就不應該包含中文。
CCNET+ProGet+Windows Batch搭建全自動的內部包打包和推送及管理平台