2011-11-23 42 views
11

当我运行cap deploy时,Capistrano将尝试创建一个文件夹,如$HOME/sites/MY_APP/releases/TIMESTAMP。我可以看到试图运行的命令,但它实际上不会创建文件夹。Capistrano不会创建版本

我可以直接复制命令了Capistrano的输出和运行通过SSH命令,它没有任何问题的伟大工程。

的命令看起来是这样:

cp -RPp /home/some_user/sites/my_cool_app/shared/cached-copy /home/some_user/sites/my_cool_app/releases/20111123164239 && (echo 59bf115868c2430cd0475ca1596998f1cfa3c084 > /home/some_user/sites/my_cool_app/releases/20111123164239/REVISION) 

为什么会命令通过Capistrano的失败,但是成功通过SSH终端?

+0

如果出现其他故障,Capistrano会回滚。你可以发布capistrano输出,并且当你使用它时,cap部署的输出:check? – HectorMalot

+0

帽返回'你似乎拥有所有必要的依赖从盖installed''部署:check' – RyanScottLewis

+0

一些事情可能会关闭:您所使用登录到服务器的用户的文件夹可写?部署脚本中的其他内容是否失败? – HectorMalot

回答

22

我仍然不知道问题出在哪里,从跨越,但除去行:

set :deploy_via, :remote_cache 

解决的事情对我来说。它看起来像一个没有创建版本目录的bug,因此删除该行将跳过该步骤。如果你想保持remote_cache一个更好的方法可能是另一个步骤中添加设置,像这样:

after "deploy:setup", "deploy:create_release_dir" 
namespace :deploy do 
    task :create_release_dir, :except => {:no_release => true} do 
    run "mkdir -p #{fetch :releases_path}" 
    end 
end 
+0

'set:deploy_via,:remote_cache'没有帮助..我刚刚创建了一个dir'run'mkdir -p#{fetch:releases_path}“'就像这样。 – poorva

0

忽略下面的绿色lineline一部分,但我将让他们,只是为他人参考。

当我使用Capistrano 3.9.x版本时,上述问题发生在我身上。当我降级到版本3.4.0时,它全部正常工作。答案


第二部分:

一旦这发生在我身上是当~/.ssh/没有建立GitHub的钥匙。

你应该在服务器上生成一个SSH密钥。一旦.pub文件在~/.ssh产生,那么你应该去github.com(或任何其他服务),并添加你的网址新生成的SSH密钥(它应该在设置页面或类似的发现)。 此外,在服务器上~/.ssh/config文件,该文件的标识匹配的Capistrano的部署脚本添加适当的记录:

set :repo_url, proc { "[email protected]:your_git_name/#{fetch(:application)}.git" } 

所以config文件应该是这样的:

Host github.com 
    HostName github.com 
    User git 
     IdentityFile ~/.ssh/id_rsa_my_new_key_on_the_server 
0

在我的情况是将此行添加到deploy.rb文件中的问题

set :scm, :git