Как настроить панель мониторинга CruiseControl.NET (CCNet)? - PullRequest
4 голосов
/ 25 сентября 2010

Я новичок в CCNet ...

Я хотел бы настроить веб-панель CCNet для добавления флажка рядом с кнопкой «Принудительная сборка», чтобы указать, что данная сборка предназначена для выпуска или нет.

Пожалуйста, дайте мне знать, возможна ли такая настройка? Если да, предоставьте несколько руководств или ссылок на статьи, чтобы начать

1 Ответ

6 голосов
/ 25 сентября 2010

Я думаю, что делать то, что вы хотите, было бы огромной болью, потому что вам пришлось бы скрывать некоторые проекты CC.net (скажем, отладочные) и по-прежнему создавать их, если флажок установлен.Это было бы неудобно для доступа к странице проекта с историей и журналами.Если вы задумывались о редактировании конфигурации проекта ccnet на лету, не забудьте, что вам придется перезапустить сервис, чтобы получить его обновленную версию.Наконец, ваши изменения могут подойти для панели инструментов, но это вызовет проблему с cctray.

Вместо этого я бы выбрал два разных проекта: один в режиме отладки, а другой в выпуске.Это было бы намного проще и понятнее.Например, у вас может быть отладочный проект, сборки которого запускаются из обновлений репозитория управления версиями, и выпуск, который создается вручную или ночью.

EDIT Для двух разных проектов я бы сделал блок с общим кодом (для Release и Debug) с двумя динамическими параметрами (скажем, Conf и OutPath).Я также написал бы третий проект, который позаботится о выполнении сценария db, этот третий проект будет запускаться при каждой успешной сборке Release.Подобные действия позволят вам выполнить сборки Debug / Release отдельно, выполнить скрипт отдельно (при принудительной сборке) и при каждой сборке Release и, наконец, проверить скрипт (при каждом коммите).Это будет выглядеть так:

<cb:define name="MyProject-Block">
    <project name="MyProject - $(Conf)" queue="General" queuePriority="100">
        <workingDirectory>D:\MyProject</workingDirectory>
        <triggers>
            <intervalTrigger seconds="300"/>
        </triggers>
        <cb:state-block/>
        <cb:svn-block svnpath="MyProject"/>
        <tasks>
            <msbuild>
                <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
                <workingDirectory>D:\MyProject</workingDirectory>
                <projectFile>MyProject.sln</projectFile>
                <buildArgs>/p:Configuration=$(Conf);OutputPath="$(OutPath)"</buildArgs>
                <targets>Clean;Build</targets>
                <timeout>600</timeout>
                <logger>F:\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
            </msbuild>
        </tasks>
        <publishers>
            <xmllogger/>
            <statistics />
            <modificationHistory onlyLogWhenChangesFound="true" />
            <cb:email-block/>
        </publishers>
    </project>
</cb:define>

<cb:MyProject-Block Conf="Debug" OuputPath="..\Compil\Debug" />
<cb:MyProject-Block Conf="Release" OuputPath="..\Compil\Release" />

<project name="MyProject. DbScript" queue="General" queuePriority="110">
    <workingDirectory>D:\MyProject\DB</workingDirectory>
    <triggers>
        <projectTrigger project=" MyProject - Release">
            <triggerStatus>Success</triggerStatus>
            <innerTrigger name="Eurosport.Business" type="intervalTrigger" seconds="60" buildCondition="ForceBuild" />
        </projectTrigger>
        <intervalTrigger seconds="300"/>
    </triggers>
    <cb:state-block/>
    <cb:svn-block svnpath="MyProject/DB"/>
    <tasks>
        <!-- Executing the script here -->
    </tasks>
    <publishers>
        <xmllogger/>
        <statistics />
        <modificationHistory onlyLogWhenChangesFound="true" />
        <cb:email-block/>
    </publishers>
</project>
...