Получите CruiseControl, чтобы поговорить с github с правильным открытым ключом

Кто-нибудь установил 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

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

Ответ 1

Здесь мои заметки о том, как заставить CruiseControl.net работать с репозиторием github (в Windows). Я запускаю msysgit 1.7.3.1 в Windows 7. Я установил ccnet для запуска в качестве службы.

Следующей стратегией является создание учетной записи пользователя, которую будет использовать служба ccnet. Начните с того, что сборка будет работать в качестве пользователя, использующего консоль круиз-контроля. После этого я настраиваю учетную запись службы для запуска с использованием этой учетной записи пользователя.

Сначала настройте свои SSH-ключи для этого пользователя так же, как и для другого пользователя. Однако не используйте кодовую фразу. Это вызовет тайм-аут ccnet, ожидающий ввода пользователем. (github ssh key management имеет помощь, http://help.github.com/msysgit-key-setup/)

Вам также нужно клонировать воспроизведение где-нибудь во время входа в систему этого пользователя. Список надежных хостов хранится, это гарантирует, что хост находится в этом списке (я думаю, с вашими ключами .ssh). Если его нет в списке, cruisecontrol истечет время ожидания, так как git ждет вас, если вы доверяете хосту.

Предоставьте разрешения на чтение/запись пользователям в папку, в которой установлен круиз-контроль. Также дайте пользовательским разрешениям редактировать любые папки сборки, которые вы используете, любые ресурсы, которые может потребоваться для сборки.

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

<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\бен\git.exe". Я никогда не смог получить bin\git.exe для работы. Я также обнаружил, что URL-адреса только для чтения в общем репозитории легче обрабатывать URL-адреса для чтения и записи, поэтому используйте только для чтения.

Ответ 2

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

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

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