Вот мои заметки о том, как заставить CruiseControl.net работать с GitHub-репозиторием (в Windows). Я использую msysgit 1.7.3.1 в Windows 7. Я настроил ccnet для запуска в качестве службы.
Я придерживаюсь стратегии создания учетной записи пользователя, которую будет использовать служба ccnet. Начните с того, что сборка будет работать как пользователь, запустивший консоль круиз-контроля. После этого я настраиваю учетную запись службы для запуска с использованием этой учетной записи пользователя.
Сначала настройте ключи SSH для этого пользователя так же, как и для другого пользователя. Однако не используйте парольную фразу. Это вызовет тайм-аут ожидания ccnet при вводе данных пользователем. (в управлении ключами github ssh http://help.github.com/msysgit-key-setup/)
Вам также необходимо где-то клонировать репозиторий, когда вы вошли в систему под этим пользователем. Список доверенных хостов сохраняется, это гарантирует, что хост находится в этом списке (я думаю, с вашими ключами .ssh). Если его нет в списке, cruisecontrol перестанет работать, так как git ждет, пока вы скажете, доверяете ли вы хосту.
Предоставьте пользователю права на чтение / запись для папки, в которой установлен круиз-контроль. Также дайте пользователю разрешения на редактирование любых папок сборки, которые вы используете, к каким ресурсам может понадобиться ваша сборка.
В файле конфигурации круиз-контроля необходимо использовать блок git sourcecontrol.
Здесь документы по этому блоку.
Вот пример:
<project name="NJasmine">
<sourcecontrol type="git">
<repository>git://github.com/fschwiet/DreamNJasmine.git</repository>
<branch>master</branch>
<autoGetSource>true</autoGetSource>
<executable>$(gitpath)</executable>
<tagOnSuccess>false</tagOnSuccess>
<commitBuildModifications>false</commitBuildModifications>
<commitUntrackedFiles>false</commitUntrackedFiles>
<workingDirectory>c:\build\NJasmine.git</workingDirectory>
<timeout>60000</timeout>
</sourcecontrol>
...
</project>
Вы заметите, что я использую переменную для gitPath, поэтому я определяю ее только один раз. Мой основной файл конфигурации ccnet на самом деле ссылается на вышесказанное, выглядит примерно так: Ссылаясь на внешний файл конфигурации, я могу сохранить большую часть своей конфигурации ccnet в системе контроля версий:
<!DOCTYPE cruisecontrol [
<!ENTITY njasmine SYSTEM "file:c:\src\njasmine\ccnet.config.xml">
]>
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<cb:define gitpath="C:\Program Files (x86)\Git\cmd\git.cmd"/>
&njasmine;
</cruisecontrol>
Обратите внимание, я установил путь к git "C: \ Program Files (x86) \ Git \ cmd \ git.cmd", а не "C: \ Program Files (x86) \ Git \ bin \ git.exe". Я никогда не мог заставить bin \ git.exe работать.
Я также обнаружил, что URL-адреса, доступные только для чтения, в общем репозитории легче получить, чем URL-адреса для чтения / записи, поэтому используйте URL-адреса только для чтения.