2013-04-12 8 views
2

Я работаю в CCNet версии 1.4, и мне трудно получить параметры, которые я хочу определить в чистом виде. В моем примере я хочу, чтобы 6 общих проектов были (3 решения в 2-х филиалах). Я определил общий проект, который мог бы включать все 6 возможностей, основанных на выборе 8 переменных. Когда это проект магистрали, 4 переменные должны быть одним. Когда это проект филиала, 4 переменные должны быть другой. Остальные 4 переменные зависят от того, какое решение я хочу построить.Как установить множество параметров в CCNet?

В моей попытке ниже я поместил 4 переменных соединительных линий в один блок определения и 4 переменных релиза в другой блок. У меня также есть блок определения для каждого из решений.

<cb:define name="ProductBuildProject"> 
    <project name="$(ProjectName)" queue="Common"> 
    <category>Main Builds</category> 
    <sourcecontrol type="multi"> 
     <sourceControls> 
     <cb:svn-sourcebuild-checkout BranchPath="$(BranchPath)" MainSourcePath="$(MainSourcePath)" /> 
     </sourceControls> 
    </sourcecontrol> 
    <modificationDelaySeconds>10</modificationDelaySeconds> 
    <labeller type="defaultlabeller"> 
     <prefix><cb:LabelPrefix/></prefix> 
     <incrementOnFailure>true</incrementOnFailure> 
    </labeller> 
    <triggers> 
     <intervalTrigger name="continuous" seconds="900" buildCondition="IfModificationExists"/> 
    </triggers> 
    <tasks> 
     <nant> 
     <executable>&nant-path;</executable> 
     <baseDirectory><cb:LocalKeywordLabPath/>\<cb:MainSourcePath/></baseDirectory> 
     <buildArgs>-v -D:deployServer=<cb:DeployServer/></buildArgs> 
     <buildFile><cb:BuildFileName/></buildFile> 
     <targetList> 
      <target><cb:BuildTargetName/></target> 
     </targetList> 
     <buildTimeoutSeconds>600</buildTimeoutSeconds> 
     </nant> 
    </tasks> 
    <publishers> 
     <merge> 
     <files> 
      <file><cb:LocalKeywordLabPath/>\<cb:MainSourcePath/>\<cb:UnitTestOutputPath/></file> 
     </files> 
     </merge> 
     &publishers-common-block; 
    </publishers> 
    <externalLinks/> 
    </project> 
</cb:define> 

<cb:define name="TrunkBuildParameters"> 
    <cb:define name="LocalKeywordLabPath"><cb:keywordlab-trunk-local/></cb:define> 
    <cb:define name="BranchPath"><cb:trunk-path/></cb:define> 
    <cb:define name="LabelPrefix">1.1.0.</cb:define> 
    <cb:define name="DeployServer">smwtlkwlab01n</cb:define> 
</cb:define> 

<cb:define name="ReleaseBranchBuildParameters"> 
    <cb:define name="LocalKeywordLabPath"><cb:keywordlab-release-local/></cb:define> 
    <cb:define name="BranchPath"><cb:releaseBranch-path/></cb:define> 
    <cb:define name="LabelPrefix">1.1.100.</cb:define> 
    <cb:define name="DeployServer">smwdvkwlab03n</cb:define> 
</cb:define> 

<cb:define name="KeywordLabWebParameters"> 
    <cb:define name="MainSourcePath">Source\Presentation</cb:define> 
    <cb:define name="BuildFileName">KeywordLab.Web.build</cb:define> 
    <cb:define name="BuildTargetName">automated-with-webdeploy</cb:define> 
    <cb:define name="UnitTestOutputPath">KeywordLab.Web.UnitTest\bin\Release\KeywordLab.Web.UnitTest.trx</cb:define> 
</cb:define> 

<cb:define name="KeywordLabWebMvcParameters"> 
    <cb:define name="MainSourcePath">Source\UI</cb:define> 
    <cb:define name="BuildFileName">KeywordLab.Web.Mvc.build</cb:define> 
    <cb:define name="BuildTargetName">automated-with-webdeploy</cb:define> 
    <cb:define name="UnitTestOutputPath">KeywordLab.Web.Mvc.Tests\bin\Release\KeywordLab.Web.Mvc.Tests.trx</cb:define> 
</cb:define> 

<cb:define name="KeywordLabServiceParameters"> 
    <cb:define name="MainSourcePath">Source\Service</cb:define> 
    <cb:define name="BuildFileName">KeywordLab.build</cb:define> 
    <cb:define name="BuildTargetName">automated</cb:define> 
    <cb:define name="UnitTestOutputPath">KeywordLab.UnitTest\bin\Release\KeywordLab.UnitTest.trx</cb:define> 
</cb:define> 

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

<!--KeywordLab Web--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">KeywordLab Web (1N)</cb:define> 
    <cb:TrunkBuildParameters/> 
    <cb:KeywordLabWebParameters/> 
</cb:ProductBuildProject> 

<!--KeywordLab Web Mvc--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">KeywordLab Web Mvc (1N)</cb:define> 
    <cb:TrunkBuildParameters/> 
    <cb:KeywordLabWebMvcParameters/> 
</cb:ProductBuildProject> 

<!--KeywordLab Service--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">KeywordLab Service (1N)</cb:define> 
    <cb:TrunkBuildParameters/> 
    <cb:KeywordLabServiceParameters/> 
</cb:ProductBuildProject> 

<!--KeywordLab Web--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">Release Branch (3N) - KeywordLab Web</cb:define> 
    <cb:ReleaseBranchBuildParameters/> 
    <cb:KeywordLabWebParameters/> 
</cb:ProductBuildProject> 

<!--KeywordLab Web Mvc--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">Release Branch (3N) - KeywordLab Web Mvc</cb:define> 
    <cb:ReleaseBranchBuildParameters/> 
    <cb:KeywordLabWebMvcParameters/> 
</cb:ProductBuildProject> 

<!--KeywordLab Service--> 
<cb:ProductBuildProject> 
    <cb:define name="ProjectName">Release Branch (3N) - KeywordLab Service</cb:define> 
    <cb:ReleaseBranchBuildParameters/> 
    <cb:KeywordLabServiceParameters/> 
</cb:ProductBuildProject> 

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

[CCNet Server:ERROR] INTERNAL ERROR: Reference to unknown symbol LabelPrefix 

Как вы можете видеть в TrunkBuildParameters и ReleaseBranchBuildParameters, я определяю LabelPrefix в обоих, и все 6 проектов ссылки на один или другой из них определяют блоки. Затем я попытаюсь ссылаться на это в блоке проекта. Это, по-видимому, недействительный способ определения переменной для использования проектами. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно или, возможно, лучший способ сделать это вообще?

+0

вы не можете использовать синтаксис для cb: определить набор параметров, по-видимому, нет способа сделать это. Однако вы можете использовать файлы include. –

+0

Немного от темы, где есть & nant-path; определены? – granadaCoder

+0

Это часть общего файла определений, который использует все наши файлы CCNet. – user779860

ответ

0

Я бы предложил использовать валидатор, поставляемый с cruisecontrol, чтобы узнать, что представляет собой окончательный анализируемый файл конфигурации, чтобы проверить, не пропустили ли вы что-либо.

Сказав это, то, что я обычно делаю, это наоборот. Я определяю часто используемые блоки конфигурации, а затем записываю конфигурацию проекта только с несколькими строками. Возможно, вы будете считать это достаточно чистым?