3

У меня установлена ​​CruiseControl.NET на сервере. У меня было все отлично. Все, что нужно, вытащить код из SVN, построить его, после успешной сборки, запустить настройку проекта с помощью триггера проекта для развертывания кода в среде DEV. Я добавил некоторые внутренние параметры безопасности, в основном просто группы пользователей. Я использую защиту LDAP. Когда я добавил функции безопасности, мое автоматическое развертывание на сервере DEV прекратило работу. Я могу заставить проект выполнить его развертывание, но когда проект №1 успешно завершен, я получаю ошибку ниже, когда запускается запуск проекта развертывания (я заменил название проекта на PROJECT для целей безопасности):CruiseControl.NET - проект не существует

2010-07-20 13: 28: 19,354 [PROJECT: DEBUG] Получение ProjectStatus с сервера: tcp: // localhost: 21234/CruiseManager.rem
2010-07-20 13: 28: 19,355 [PROJECT: ERROR] Исключение: проект «ПРОЕКТ» не существует на сервере CCNet.

ThoughtWorks.CruiseControl.Remote.NoSuchProjectException: Проект PROJECT не существует на сервере CCNet.
на ThoughtWorks.CruiseControl.Core.Triggers.ProjectTrigger.GetCurrentProjectStatus()
на ThoughtWorks.CruiseControl.Core.Triggers.ProjectTrigger.Fire()
на ThoughtWorks.CruiseControl.Core.Triggers.MultipleTrigger.Fire()
на ThoughtWorks.CruiseControl.Core.ProjectIntegrator.PollTriggers()
на ThoughtWorks.CruiseControl.Core.ProjectIntegrator.Integrate()
на ThoughtWorks.CruiseControl.Core.ProjectIntegrator.Run()

у меня активный учетная запись каталога s etup для CruiseControl, и служба работает под этой учетной записью пользователя (которая имеет права администратора). Я предоставил пользователю CruiseControl полный доступ ко всем проектам, добавив пользователя в группу «admin» во внутреннем разделе настроек конфигурации CruiseControl.

Любые идеи о том, как сделать проект доступным для CruiseControl, чтобы он мог увидеть автоматическое развертывание?

+0

можете ли вы опубликовать некоторые конфигурационные файлы с настройками? –

ответ

0

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

<cb:scope ProjectName="$(projMhWebDevDeploy)"> 
<project name="$(projMhWebDevDeploy)" queue="Q1" queuePriority="1"> 
    <cb:define safeProjectName="MH_Web_Dev_Branch_Deployment"/> 
    <cb:define projectDirectory="$(ccnetDirectory)\Projects\$(safeProjectName)"/> 

    <triggers> 
    <projectTrigger project="$(projMhWeb)"> 
     <triggerStatus>Success</triggerStatus> 
     <innerTrigger type="intervalTrigger" seconds="5" buildCondition="IfModificationExists" /> 
    </projectTrigger> 
    <projectTrigger project="$(projMhWeb)"> 
     <triggerStatus>Success</triggerStatus> 
     <innerTrigger type="intervalTrigger" seconds="5" buildCondition="ForceBuild" /> 
    </projectTrigger> 
    </triggers> 

    <category>DEV Deployments</category> 
    <webURL>$(urlCcnetDashBoard)</webURL> 
    <workingDirectory>$(projectDirectory)</workingDirectory> 
    <artifactDirectory>$(ccnetDirectory)\BuildFiles\$(safeProjectName)</artifactDirectory> 

    <tasks> 
    <!-- Deploy Code --> 
    <exec> 
     <executable>$(deployCodeBat)</executable> 
     <buildArgs> 
     $(ccnetDirectory)\Projects\MH_Web\Web 
     $(deployMhWebDev) 
     brh 
     </buildArgs> 
     <baseDirectory>$(ccnetDirectory)\BatchFiles\</baseDirectory> 
    </exec> 
    <!-- Deploy Helicon HTTPD --> 
    <exec> 
     <executable>$(deployHeliconBat)</executable> 
     <buildArgs> 
     $(ccnetDirectory)\Projects\MH_Web\Web 
     "$(deployHeliconDev)" 
     httpd.conf 
     </buildArgs> 
     <baseDirectory>$(ccnetDirectory)\BatchFiles\</baseDirectory> 
    </exec> 
    </tasks> 
    <publishers> 
    <xmllogger /> 
    <modificationHistory onlyLogWhenChangesFound="true" /> 
    <email mailport="25" includeDetails="true" useSSL="false" from="FROM" mailhost="SERVER"> 
     <users> 
     EMAIL ADDRESSES ARE HERE 
     </users> 
     <groups> 
     <group name="BuildMaster"> 
      <notifications> 
      <notificationType>Always</notificationType> 
      </notifications> 
     </group> 
     </groups> 
    </email> 
    </publishers> 
    <security type="defaultProjectSecurity" defaultRight="Deny"> 
    <permissions> 
     <rolePermission name="Developers" ref="Developers"/> 
     <rolePermission name="Admin" ref="Admin"/> 
    </permissions> 
    </security> 
</project> 
</cb:scope> 
0

Я думаю, что вам нужно будет определить параметры безопасности для ваших ролей - я не вижу никакой внутренней разметки безопасности там. Все хорошо и хорошо, что у вас есть AD perms и учетные записи, но вам нужно сказать CCNet, что это значит. Попытайтесь добавить ниже внутри тегов проекта (после изменения названия домена и группы, конечно):

<internalSecurity>   
    <permissions> 
     <!-- Roles --> 
     <rolePermission name="Admin" forceBuild="Allow" startProject="Allow" > 
      <users> 
       <userName name="DOMAIN\GROUP1\"/> 
      </users>   
     </rolePermission> 
     <rolePermission name="Developers" forceBuild="Deny" startProject="Deny"> 
      <users> 
       <userName name="DOMAIN\GROUP2\"/> 
      </users> 
     </rolePermission> 
    </permissions> 
</internalSecurity>