Я только начинаю работать с CruiseControl.NET и nAnt и не совсем понимаю, как работает весь процесс. В настоящее время у нас есть большинство наших решений в Visual Source «Safe», и сервер сборки помечает каждый выпуск автоматически, используя файл AssemblyInfo.
Мы переносим наши проекты VSS в SVN и соответственно изменили файлы сборки проекта, чтобы проверить и обновить репозитории SVN. Чего мы хотим добиться, так это иметь копию исходного кода в системе контроля версий, которая точно соответствует версии развертываемого проекта.
Наш SVN настроен таким образом:
svn://solution/
TRUNK/
RELEASES/
1.0.0/
1.2.0/
BRANCHES/
Поэтому, когда мы принудительно собираем наше решение с его версией assemblyinfo равным 1.3.0, мы хотим, чтобы сервер сборки скопировал каталог TRUNK в каталог RELEASES / 1.3.0 /.
Команда SVN довольно проста. svn скопировать src / directory dst / directory. Но куда мне поместить эту команду и как получить номер версии для пункта назначения?
На сервере сборки это пример 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} /../ release / $ {ReleaseNumber}, как бы я это сделал и в какой файл он попадет? Насколько я понимаю, нам нужно либо получить ReleaseNumber из файла .build, в файл .xml и запустить оттуда. Или нам нужно пройти через trunkURL из .XML в .build и запустить команду svn из файла .build.
Пожалуйста, помогите!