【问题标题】:Capistrano will not create releasesCapistrano 不会创建版本
【发布时间】:2011-11-23 16:51:55
【问题描述】:

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

我可以直接从 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 终端成功?

【问题讨论】:

  • Capistrano 会在其他操作失败时回滚。你能发布 capistrano 的输出,当你在上面的时候,cap deploy:check 的输出?
  • 上限从上限deploy:check返回You appear to have all necessary dependencies installed
  • 可能有很多问题:您用来登录服务器的用户是否可以写入该文件夹?部署脚本中是否还有其他问题?
  • 我还没有弄清楚这个问题,但问题似乎来自$HOME/sites/MY_APP/releases 目录不存在这一事实。如果您手动 ssh 并创建发布目录,它可以暂时解决问题。仍在试图弄清楚为什么 cap 不像以前那样这样做。
  • Steve:releases目录应该由deploy:setup创建,你should run before the first deploy

标签: ruby-on-rails ruby ruby-on-rails-3 capistrano


【解决方案1】:

我仍然不确定问题出在哪里,但删除了这条线:

set :deploy_via, :remote_cache

为我解决了问题。它看起来像一个没有创建发布目录的错误,因此删除该行会跳过该步骤。如果您想保留 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

【讨论】:

  • 'set :deploy_via, :remote_cache' 没有帮助.. 我刚刚创建了一个 dir ' run "mkdir -p #{fetch :releases_path}"' 像这样。
【解决方案2】:

绿线以下的部分请忽略,但我会保留,仅供参考。

当我使用 Capistrano 3.9.x 版本时,我遇到了上述问题。当我降级到版本 3.4.0 时,一切正常。


答案的第二部分:

当我没有在~/.ssh/ 中设置 github 密钥时,这种情况发生在我身上。

您应该在服务器上生成一个 ssh 密钥。在~/.ssh 中生成.pub 文件后,您应该转到github.com(或任何其他服务)并在网站上添加新生成的ssh 密钥(应该在设置页面或类似页面下找到)。 此外,在服务器上,在与 capistrano 部署脚本中的标识匹配的 ~/.ssh/config 文件中添加适当的记录:

set :repo_url, proc { "git@github.com: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

【讨论】:

    【解决方案3】:

    在我的情况下,只需将此行添加到 deploy.rb 文件中

    set :scm, :git
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多