我剛剛開始使用CruiseControl.NET和nAnt,並且對整個過程的工作方式沒有很好的理解。我們目前在Visual Source'Safe'中擁有大部分解決方案,並且使用AssemblyInfo文件自動爲每個版本標記構建服務器。使用CruiseControl將頭SVN文件夾複製到發佈文件夾
我們正在將我們的VSS項目遷移到SVN中,並相應地修改了項目構建文件以檢出並更新SVN存儲庫。我們想要實現的目標是在源代碼控制中擁有一個源代碼副本,它與正在部署的項目版本完全匹配。
我們的SVN設置這樣的:
svn://solution/
TRUNK/
RELEASES/
1.0.0/
1.2.0/
BRANCHES/
所以,當我們強迫建立我們的解決方案,設置爲1.3.0的版本集信息,我們希望構建服務器複製TRUNK目錄中,將釋放/1.3.0/目錄。
SVN命令非常簡單。 svn copy src /目錄dst /目錄。但是我會在哪裏放這個命令,以及如何獲取目的地的版本號?
在構建服務器,這是一個.xml文件的一個例子:
<sourcecontrol type="svn">
<trunkUrl>svn://project/trunk</trunkUrl>
<workingDirectory>D:\Builds\project\Src</workingDirectory>
<executable>C:\Subversion\bin\svn.exe</executable>
<username>sf_service_dev</username>
<password>SFx4vi-r</password>
<tagOnSuccess>true</tagOnSuccess>
<cleanCopy>true</cleanCopy>
</sourcecontrol>
在我們這個項目.build文件(和很多課程更多):
<target name="Deploy_Release">
<property name="fileandpathformyfile" value="${CCNetWorkingDirectory}\Bin\project.exe"/>
<echo message="fileandpathformyfile is ${fileandpathformyfile}."/>
<property name="ReleaseNumber" value="${fileversioninfo::get-file-version(fileversioninfo::get-version-info(fileandpathformyfile))}"/>
<echo message="ReleaseNumber has been detected to be ${ReleaseNumber}."/>
<!--Use version as needed-->
<!--Create the release direcory-->
<mkdir dir="${CCNetWorkingDirectory}\..\Releases\${ReleaseNumber}"/>
<!--Copy stuff to the release directory-->
<copy todir="${CCNetWorkingDirectory}\..\Releases\${ReleaseNumber}">
<fileset basedir="${CCNetWorkingDirectory}\bin">
<include name="*.dll" />
<include name="*.exe" />
<include name="*.config" />
<include name="*.xml" />
<include name="*.stp" />
</fileset>
</copy>
</target>
現在,如果我想運行一個SVN命令將$ {trunkURL}複製到$ {trunkURL} /../ releases/$ {ReleaseNumber},那麼我該如何執行此操作以及將以何種文件執行?我目前的理解是,我們需要從.build文件中獲取ReleaseNumber,然後從.xml文件中運行。或者,我們需要將.XML中的trunkURL傳遞給.build,並從.build文件運行svn命令。
請幫忙!
你有沒有使用nAnt一段時間,或者你是否同時開始使用CC.Net和nAnt。只是好奇你爲什麼不使用msbuild。 – Ryu 2009-10-08 02:27:51
我已經開始同時使用兩者。對於我們較早的項目,我們進行本地編譯,測試生產SOA,並從那裏進行部署。 – 2009-10-11 20:43:50