Я только начинаю работать с 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.
Пожалуйста помоги!