Сервер Cruise Control .Net не может обнаружить изменения, сделанные в Starteam - PullRequest
2 голосов
/ 20 ноября 2008

Я использую Cruise Control .Net 1.4 для непрерывной интеграции и установил его на свой рабочий стол Windows 2000. У меня Nant 0.85 для сборки. Мой Source control находится в Borland Starteam 2005. У меня установлена ​​платформа .Net 2003, которую я использую для создания Windows-приложений VB.Net. Я установил CCNet и думаю, что мой файл CCnet.config настроен правильно.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я изменяю какой-либо код и проверяю в Starteam, изменения не обнаруживаются сервером CCNet, и поэтому я не могу запускать свои сборки на основе изменений. Я должен положиться на ForceBild для этого. Но использование forcebuild каждую 1 минуту неприемлемо для моего проекта. Я хочу, чтобы триггер был основан на модификациях. То есть как только в Starteam обнаружено изменение, сборка должна начаться автоматически.

Мой файл CCNet.config такой:

<workingDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</workingDirectory>
<webURL>http://172.24.120.37/ccnet</webURL>

<triggers>
    <intervalTrigger name="continuous" seconds="120" buildCondition="ForceBuild" initialSeconds="120"/>         
    </triggers>


<sourcecontrol type="starteam">
   <executable>C:\Program Files\Borland\StarTeam Cross-Platform Client 2005 R2\stcmd.exe</executable>
   <project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>
   <username>600513221</username>
   <password>car0b0ts</password>
   <host>oscar.nat.bt.com</host>
   <port>51234</port>
   <autoGetSource>true</autoGetSource>
   <timeout units="minutes">10</timeout>
</sourcecontrol>


<tasks>
      <!-- Configure NAnt to compile the updated files -->c:\
    <nant>
    <executable>C:\Documents and Settings\uj0011637\Desktop\Cruise Control\nant\nant-0.85\bin\NAnt.exe</executable>
    <baseDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</baseDirectory>
    <nologo>false</nologo>
    <buildFile>CCNet17Nov08.build</buildFile>
    <logger>NAnt.Core.XmlLogger</logger>
    <buildTimeoutSeconds>1200</buildTimeoutSeconds>
    </nant>
</tasks>


<!--Publishers will be done after the build has completed-->
 <publishers>
  <xmllogger>
    <logDir>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\Log</logDir>
  </xmllogger>
 </publishers>

 <modificationDelaySeconds>10</modificationDelaySeconds>

И мой файл сборки таков:

<target name="clean" description="Delete all previously compiled binaries.">
    <delete>
        <fileset>
            <include name="**/bin/${project::get-name()}.dll" />
            <include name="**/obj/**" />
            <include name="**/*.user" />
        </fileset>
    </delete>
</target>
<target name="rebuild" dependsontarget="clean, build ">
<zip zipfile="${project::get-name()}.zip"  verbose="true">
    <fileset>
    <include name="**/bin/*.dll" />
    <include name="**/bin/*.exe" />
    </fileset>
    <fileset>
    <include name="*.aspx" />
    <include name="*.css" />
    <include name="*.config" />
    <include name="*.js" />
    <include name="*.asax" />
    <include name="**.txt" />
    <include name="**.vb" />
    <include name="**.vbproj" />
    <include name="**.user" />
    <include name="**.sln" />
    <include name="**.suo" />
    <include name="**.resx" />

    </fileset>
    <fileset prefix="SQL">
    <include name="*.sql" />
    </fileset>
</zip>



</target>

<target name="unit_test" description="Run unit tests.">

     <exec program="${nunit.dir}\nunit-console.exe" commandline="bin/${prjname}.exe /xml=${prjname}.xml /nologo" />

   </target>

    <target name="build.Console">

    <solution configuration="release" solutionfile="CCNet17Nov08.sln">

    </solution>

    <property name="expected.output" value="bin/${prjname}.exe"/>
    <fail unless="${file::exists(expected.output)}">Output file doesn't exist in ${expected.output}</fail>

</target>

Кто-нибудь может подсказать мне это?

Ответы [ 4 ]

1 голос
/ 20 ноября 2008

У меня были проблемы с пониманием документации по установке и настройке CruiseControl.Net с StarTeam в качестве исходного элемента управления в системе Vista с IIS 7. Наконец, я успешно настроил круиз-контроль для работы. Я перечисляю шаги, чтобы заставить это работать.

Шаг 1: получите копию CruiseControl.Net отсюда. Запустите настройку. В процессе установки программа установки устанавливает сервер ccnet и веб-панель управления.

Шаг 2. После установки, чтобы запустить и запустить веб-панель управления, запустите браузер и введите текст. http://localhost/ccnet (это виртуальный каталог по умолчанию при установке. Указывает на папку $ InstallFolder / webdashboard на сервере сборки. Если система работает под управлением IIS5 или 6, то вы увидите страницу CruiseControl.Net в IIS7, выдается ошибка 500. Чтобы устранить эту проблему, перейдите к шагу 3, если проблема не обнаружена, перейдите к шагу 4.

Шаг 3: Запустите следующую команду от имени администратора. Примечание. Здесь ccnet - это виртуальный каталог, который указывает на физическое расположение веб-панели в системе.

% SystemRoot% \ system32 \ inetsrv \ appcmd migrate config "Веб-сайт по умолчанию / ccnet"

Как только команда будет выполнена, просто перезапустите iis и перейдите к http://localhost/ccnet. На ней должна отображаться панель управления CruiseControl.Net.

Шаг 4: Следующий шаг - настройка сервера ccnet. Откройте файл ccnet.config, расположенный в папке «server» каталога установки, для редактирования.

Раздел проекта:

Определить раздел проекта. Имя проекта может быть любым идентификатором, не обязательно именем вашего проекта. Это будет использоваться CruiseControl.Net для распознавания вашего проекта.

Блок управления источником

В моем случае источником контроля был StarTeam. Различные свойства, такие как учетные данные для входа, проект и т. Д., Должны быть установлены.

Исполняемый файл: Путь к утилите командной строки Star Team, содержащей stcmd.exe.

Project: имя проекта, как оно определено в Star Team, которое нужно извлечь.

Имя пользователя, Пароль, Хост, Порт: настройки соединения Star Team Server.

Путь: путь, из которого файлы должны извлекаться из StarTeam. Пример: рассмотрим корневую папку проекта в StarTeam «Тест». Пусть файлы проекта и решения лежат в иерархии «Test \ TestProject \ MyProject». Чтобы извлечь файлы проекта и решения из этого местоположения, укажите «Test» для проекта и «TestProject \ MyProject» для пути.

Переопределить рабочий каталог папки: путь, по которому файлы из Star Team должны быть извлечены для сборки. Если не указан, для извлечения файлов будет использоваться исходная рабочая папка, указанная в StarTeam.

Автоматическое получение источника: если для этого параметра установлено значение «true», CruiseControl.Net автоматически извлекает файлы из StarTeam

fileHistoryRegEx: Мне пришлось внести изменения в регулярное выражение Date, поскольку мои региональные настройки были настроены на английский (Индия), где DateTime указан как DD-MM-YYYY ЧЧ: MI: SS (IST). Мне пришлось изменить это, поскольку во время выполнения я получил исключение Format: System.DateTime.

TimeOut: укажите время ожидания опроса StarTeam.

Ниже приведен полный список блока конфигурации starteam. StarTeam

StarTeam

MSBuild раздел

Я использовал MsBuild для задачи сборки. В следующем разделе описаны свойства, необходимые для настройки MsBuild для CruiseControl.Net.

Исполняемый файл: путь к файлу «MsBuild.exe» в системе.

Рабочий каталог: расположение файлов для сборки. то есть место, куда StarTeam извлек файлы, которые должны быть собраны.

Файл проекта: файл .proj или файл .sln, который необходимо построить.

Build Args: указывает дополнительные аргументы, передаваемые в msbuild.exe.

Цели: Действия, которые необходимо выполнить. Здесь я хотел «Очистить», а затем «Построить» на Решении.

Тайм-аут: время, после которого ошибка мessage будет отображаться в случае сбоя при вызове сборки.

Logger: Местоположение сборки регистратора, которая будет использоваться для получения результата сборки.

Ниже приведен полный список блока конфигурации msbuild. MS Build

MS Build

Секция триггеров

В разделе «Триггеры» указывается время и условие, когда необходимо было запустить сборку проекта. Во время начальной настройки для тестирования установите для buildCondition значение «ForceBuild» (принудительная сборка), а после завершения тестирования измените его на «IfModificationExists» (выполняет сборку только при обнаружении модификации).

Ниже приведен полный список блока конфигурации триггеров. Триггеры

Триггеры

Шаг 5. Запустите приложение ccnet.exe, расположенное в папке «server» в месте установки CruiseControl.Net. Код будет извлечен из StarTeam в указанное место, и сборка должна продолжиться. Результаты сборки хранятся в файле $ InstallFolder \ ProjectName \ Artifacts \ ms-build.xml.

Надеюсь, это поможет.

0 голосов
/ 07 февраля 2009

Вы когда-нибудь пытались установить культуру на <culture>en-US</culture>, если это возможно с Starteam?

У меня была та же проблема с использованием Visual Source Safe. Единственная проблема заключалась в том, что культура была настроена неправильно.

Приветствие.

0 голосов
/ 26 ноября 2008

Попробуйте это:

  • Изменить настройки проекта в конфигурационном файле

<project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>

до

  <project>Project_name\View_name</project>
   <path>StarteamFolderName</path>

Например, если имя вашего проекта DEL_CA_ROBOTS и имя представления также DEL_CA_ROBOTS , скрипт должен быть что-то вроде ..

   <project>DEL_CA_ROBOTS\DEL_CA_ROBOTS</project>
   <path>Tools\CCNet17Nov08</path>

Надеюсь, это поможет.

0 голосов
/ 22 ноября 2008

Я не удивлен, я однажды использовал Star Team, и я могу только сказать, что уровень дерьма, к которому мне приходилось привыкать в этом инструменте хранилища, был превзойден только когда-либо за всю мою карьеру программиста Source Safe .

Не используйте Star Team, если бы я сегодня начал большой новый проект, я бы, вероятно, использовал GIT ...

...