CruiseControl.net使用SSH连接到BitBucket并作为服务运行

时间:2013-08-05 12:43:01

标签: service ssh cruisecontrol.net bitbucket

这是我的情况。

我正在将Cruise Control作为Windows服务运行,并尝试通过SSH连接到BitBucket上的Mercurial存储库。

我很确定所有配置都正常(PuttyGen,Pagaent等)。我正在使用我用来运行服务的相同帐户远程登录服务器,如果我从命令行发出hg pull -b ssh://@bitbucket.org//,一切正常。我将-v添加到mercurial.ini中的ssh配置中,我可以看到所有已采取的步骤。

如果我从命令提示符运行CC.NET,那么它构建正常。在控制台窗口中,我可以看到来自SSH操作的相同日志记录。

但是,如果我将CC.NET作为服务运行(使用我登录的相同用户帐户),则对BitBucket的调用会超时。我也找不到办法解决原因。构建日志没有帮助,临时目录中也没有ccnet.log或ccnet.trace。我期待其中一个包含来自SSH操作的日志记录,但它们没有。

有人可以帮忙吗?是作为服务运行阻止它连接到Pagaent(我已经通过将它添加到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run而启动了Pagaent)。当我从命令行执行拉动时,我必须确定一个对话框,但只有一次。现在是否正在等待它作为服务运行的同一个对话框?

亲近我的智慧结束。

由于

1 个答案:

答案 0 :(得分:3)

我确实让它最终运转起来。诀窍是创建没有密码短语的公钥。作为服务运行时,解决方案必须是完全非交互式的,而pagaent.exe的密码选项不是。

以下是步骤:

  • 使用PutTTygen生成没有密码的安全密钥。如果你确实需要一个,那么你可以将它添加到mercurial.ini文件中,但是无论如何它都会让我失望。

  • 将mercurial.ini复制到两个位置:C:\ Windows \ System32 \ config \ systemprofile和C:\ Windows \ SysWOW64 \ config \ systemprofile。可能只有其中一个是必要的,但我没有时间进行实验。第一个是运行64位应用程序时系统用户的主目录,32位的SysWOW64位置。确保如果你和我一样,那么请保持两个文件同步 - 或者更进一步,找出正确的位置。

  • 在两个文件的[ui]键下添加类似此行的内容: ssh =“D:\ Program Files \ TortoiseHg \ TortoisePlink.exe”-ssh -2 -C -batch -v -i“[ppk文件的路径]” 如果在步骤1中创建了密码,则将密码短语添加到命令的末尾。 确保指定TortoisePlink.exe,而不是Plink.exe。它们应该都在同一个目录中。

  • http://technet.microsoft.com/en-gb/sysinternals/bb842062.aspx

  • 下载psexec
  • 运行d:\ PSTools \ PsExec.exe -s -i cmd.exe。这将以交互模式打开命令行作为系统帐户。

  • 现在做一个hg pull,或者hg clone或者其他什么。

  • 应弹出一个确认消息对话框。这是一次性事情,也是您必须执行PsExec步骤的原因。确定对话框。

现在cc.net应该能够使用SSH在本地系统帐户下作为服务运行!