Круиз-контроль .NET: использование cb: определение с несколькими параметрами

Эта проблема довольно раздражающая, и я уже несколько часов хлопаю против нее. То, что я пытаюсь сделать, это использовать препроцессор конфигурации в CCNet для создания XML-элемента, который вызывает задачу в CCNet. Я думаю, что я принципиально что-то недопонимаю.

Теперь у меня есть следующее:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
 <cb:define name="myBuild">
 <devenv>
 <solutionfile>"$(projPath)"</solutionfile>
 <configuration>"$(releaseMode)"</configuration>
 <buildtype>Rebuild</buildtype>
 <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable>
 <buildtimeoutseconds>2400</buildtimeoutseconds>
 <version>VS2008</version> 
 </devenv>
 </cb:define>
</cruisecontrol>

Затем, чтобы использовать его, я делаю следующее в рамках проекта:

Ошибка, которую я получаю,

[Сервер CCNET: ОШИБКА] ВНУТРЕННЯЯ ОШИБКА: ссылка на неизвестный символ 'release'

Затем огромная трассировка стека данных ThoughtWorks.

Мое основное недоумение заключается в том, почему "$ (projPath)" в определении отлично работает, но "$ (releaseMode)" - нет. Фактически, если я удалю все ссылки на "releaseMode" в проекте, CCNet принимает script и даже строит их. Это, однако, не работает, поскольку не все наши решения имеют режим "Release", некоторые из них специально названы (по какой-то причине не спрашивайте меня).

Любая помощь относительно того, что происходит или, что более важно, как можно решить эту проблему, будет очень признательна.

Я запускаю версию 1.8.2. Кроме того, у нас есть планы перенести сценарии реальной сборки на NANT, но это первый шаг на долгий путь для нашего процесса сборки.

1 ответ

Я построил простой файл конфигурации из ваших частей, но он работает безупречно:

<cb:define name="myBuild">
 <devenv>
 <solutionfile>"$(projPath)"</solutionfile>
 <configuration>"$(releaseMode)"</configuration>
 <buildtype>Rebuild</buildtype>
 <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable>
 <buildtimeoutseconds>2400</buildtimeoutseconds>
 <version>VS2008</version> 
 </devenv>
</cb:define>
<project name="a">
 <tasks>
 <cb:mybuild projpath="C:\sample.sln" releasemode="Release">
 </cb:mybuild></tasks>
</project>

Как-то я сомневаюсь, что ошибка повлияла на любые другие параметры конфигурации на сервере.

Чтобы упростить поиск неисправностей, используйте CCValidator.exe, если вы еще не сделали этого. Таким образом, у вас будет намного меньше потенциальных источников проблем. Его можно найти в папке CruiseControl.NET\server. Попробуйте открыть файл конфигурации внутри него, чтобы увидеть, отображаются ли какие-либо ошибки.

Если это так, попробуйте прокомментировать или удалить все части конфигурации, чтобы сделать его как можно меньшим, сохраняя при этом проблему. Если вы все еще не можете его решить, отправьте эту конфигурацию другим, чтобы посмотреть.

licensed under cc by-sa 3.0 with attribution.