【问题标题】:Cap deploy hangs at initial cloneCap deploy 在初始克隆时挂起
【发布时间】:2012-08-05 03:57:10
【问题描述】:

在初始部署期间,cap deploy 在初始克隆时挂起。它给出了这个输出并永远坐在那里,没有退出或给出任何类型的错误:

** [50.18.125.107 :: out] Cloning into 'home/torquebox/apps/releases/20120808033824'...

它类似于this question,除了我能够手动执行命令,只是不能用 capistrano 自动执行它。

服务器设置: EC2 上的 Ubuntu 12.04 LTS TorqueBox 服务器、jruby、java6、postgresql、mysql、apache2、tomcat7

开发机器: OSX 狮子 使用我的开发机器上的 ssh 密钥通过 forward_agent 访问 github

应用: JRuby on Rails github 仓库

deploy.rb in a gist

事实和我的尝试:

cap deploy:setup 可以正常工作并创建目录结构。

如果我手动 ssh 并执行命令,克隆工作正常。

我已经尝试使用详细 (-v) 和调试 (-d) 进行 cap,但都没有给我更多信息。

我尝试使用远程机器上的 forward_agent ssh 到 github 来处理known hosts bug,但这也很好。

我检查了环境变量并意识到并非所有内容都已加载,因为它不是交互式 shell,因此我添加了额外的 PATH 目录和其他通常由登录脚本加载的环境变量。我什至编辑了 sshd_config 文件以允许非交互式脚本中的用户环境。

我尝试通过cap shell 手动执行命令,但我看到了相同的行为。

克隆操作确实创建了正确的目标目录并在其中放置了一个 .git 目录,但 repo 似乎是空的。

我尝试过开启和关闭远程缓存选项,无论哪种方式都看到相同的行为。

我尝试为我的服务器使用 ec2 dns 名称而不是弹性 IP,因为 this post 但这不起作用。

所以我被困住了。我真的很感激任何关于在哪里寻找以试图解决这个问题的建议。让我知道是否有更多信息会有所帮助。

谢谢!!

【问题讨论】:

    标签: ruby-on-rails git amazon-ec2 jruby capistrano


    【解决方案1】:

    问题可能是 JRuby 中的 ssh 代理转发被破坏。自 JRuby 1.7.0.pre2 起已修复。

    见:http://jira.codehaus.org/browse/JRUBY-6181

    【讨论】:

    • 好吧,我认为我们解决了错误,但发现了另一个错误。现在 cap deploy 似乎可行,但只是第一次。在那之后,我在 git fetch 上遇到了这个错误: Invalid command: '/usr/bin/git-upload-pack 'wdelhagen/jrubyliwc.git'' ** 你似乎在使用 ssh 克隆一个 git:/ /网址。 ** 确保您的 core.gitProxy 配置选项和 ** GIT_PROXY_COMMAND 环境变量未设置。