Получите CruiseControl, чтобы общаться с GitHub с правильным открытым ключом - PullRequest
11 голосов
/ 10 мая 2010

Кто-нибудь установил git и ControlControl и заставил CruiseControl извлекать данные из GitHub на сервере Windows 2003.

Я продолжаю получать 'public key errors (access denied)' - это хорошо, я полагаю, что это подтверждает, что git общается с GitHub..
Однако, что нехорошо, так это то, что я не знаю, где установить ключи rsa, чтобы они были подхвачены запущенным процессом (git в контексте cc.net).

Любая помощь поможет мне сэкономить много денег!

Я пытался установить ключи в;

c:\Program Files\Git.ssh 

В результате выполнения git bash и cd ~ я получаю: c:\Program Files\Git

Текущая ошибка от CC.net - сообщение об ошибке:

ThoughtWorks.CruiseControl.Core.CruiseControlException:  
  Source control operation failed: Permission denied (publickey). fatal: 
  The remote end hung up unexpectedly . 
  Process command: C:\Program Files\Git\bin\git.exe fetch origin

Заранее спасибо

Ответы [ 2 ]

6 голосов
/ 14 февраля 2011

Вот мои заметки о том, как заставить 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-адреса только для чтения.

2 голосов
/ 10 мая 2010

Это действительно зависит от фактического пользователя, объявленного в службе CruiseControl для выполнения заданий.

Учитывая, что сообщение об ошибке "Permission denied (publickey)" обычно вызывается ключами ssh, не найденными в %HOME%/.ssh.

Таким образом, даже если cd ~ ведет вас к одному каталогу, это может быть не тот, который используется процессом CruiseControl.

...