获取CruiseControl以使用正确的公钥与github通信

Dan*_*ter 11 windows git cruisecontrol.net ssh github

是否有人安装了git和ControlControl,并在Windows 2003服务器上从GitHub获取了CruiseControl.

我一直在' public key errors (access denied)' - 我认为这是好的,因为这证实了git正在与GitHub交谈.
然而,不好的是我不知道在哪里安装rsa密钥,因此它们将被正在运行的进程(在上下文中的git)中选取cc.net.

任何帮助都会为我节省很多头发!

我试过安装钥匙;

c:\Program Files\Git.ssh 
Run Code Online (Sandbox Code Playgroud)

跑步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
Run Code Online (Sandbox Code Playgroud)

提前致谢

Fra*_*man 6

以下是让CruiseControl.net与github存储库(在Windows上)一起工作的笔记.我在Windows 7上运行msysgit 1.7.3.1.我将ccnet设置为作为服务运行.

我遵循的策略是创建ccnet服务将使用的用户帐户.首先让用户在运行巡航控制台时登录工作.之后,我设置服务帐户以使用该用户帐户运行.

首先,为该用户设置SSH密钥,就像设置其他用户一样.但是,请勿使用密码.这将导致ccnet超时等待用户输入.(github ssh密钥管理有帮助,http://help.github.com/msysgit-key-setup/)

您还需要在登录该用户时在某处克隆repro.保留可信主机列表,这可以确保主机位于该列表中(我认为使用.ssh键).如果它不在列表中,则crucontrol将超时,因为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>
Run Code Online (Sandbox Code Playgroud)

您会注意到我为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>
Run Code Online (Sandbox Code Playgroud)

注意我将git路径设置为"C:\ Program Files(x86)\ Git\cmd\git.cmd"而不是"C:\ Program Files(x86)\ Git\bin\git.exe".我永远无法让bin\git.exe工作.我还发现共享存储库上的只读URL比读/写URL更容易工作,所以使用只读的URL.


Von*_*onC 2

它实际上取决于CruiseControl 服务上声明的实际用户来执行作业。

考虑到错误消息“ Permission denied (publickey)”通常是由在 中找不到 ssh 密钥%HOME%/.ssh引起的。

因此,即使cd ~引导您到达一个目录,该目录也可能不是 CruiseControl 进程使用的目录。