【问题标题】:Why is capistrano freezing in "deploy:cleanup"?为什么 capistrano 在“部署:清理”中冻结?
【发布时间】:2013-11-24 21:38:44
【问题描述】:

我不知道为什么,但 capistrano (v2.15.5) 在我尝试部署时有时会冻结。没有具体的原因,而且并非总是如此。但是当它冻结时,它会冻结在同一个任务中:“deploy:cleanup”。

在冻结情况下检查我的“cap deploy”输出和我的 deploy.rb 文件:https://gist.github.com/anonymous/7632695 如下所示

deploy.rb

require "bundler/capistrano"

set :application, "my_app"
set :repository,  "git@bitbucket.org:fschuindt/weedmap.git"
set :user, "deploy"
set :use_sudo, "false"
default_run_options[:pty] = true

set :scm, :git
set :deploy_to, "/home/#{user}/#{application}"

role :web, "my_app.nl"
role :app, "my_app.nl"
role :db,  "my_app.nl", :primary => true

set :default_environment, {
  'PATH' => "/home/deploy/.rvm/gems/ruby-2.0.0-p247/bin:/home/deploy/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/deploy/.rvm/rubies/ruby-2.0.0-p247/bin:/home/deploy/.rvm/gems/ruby-2.0.0-p247/bin:/home/deploy/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/deploy/.rvm/rubies/ruby-2.0.0-p247/bin:/home/deploy/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games",
  'RUBY_VERSION' => 'ruby-2.0.0-p247',
  'GEM_HOME' => '/home/deploy/.rvm/gems/ruby-2.0.0-p247',
  'GEM_PATH' => '/home/deploy/.rvm/gems/ruby-2.0.0-p247:/home/deploy/.rvm/gems/ruby-2.0.0-p247@global'
}

set :keep_releases, 3
after "deploy:update", "deploy:cleanup"

namespace :deploy do
  task :restart, :roles => :web do
    sudo "service nginx restart"
  end
end

load  'deploy/assets'

输出

wizard:weedmap fschuindt$ cap deploy
  * 2013-11-24 18:10:31 executing `deploy'
  * 2013-11-24 18:10:31 executing `deploy:update'
 ** transaction: start
  * 2013-11-24 18:10:31 executing `deploy:update_code'
    executing locally: "git ls-remote git@bitbucket.org:fschuindt/weedmap.git HEAD"
    command finished in 2319ms
  * executing "git clone -q git@bitbucket.org:fschuindt/weedmap.git /home/deploy/my_app/releases/20131124211034 && cd /home/deploy/my_app/releases/20131124211034 && git checkout -q -b deploy 25c78a55b60fd96c7039267b1ed862455c076b7f && (echo 25c78a55b60fd96c7039267b1ed862455c076b7f > /home/deploy/my_app/releases/20131124211034/REVISION)"
    servers: ["my_app.nl"]
Password: 
    [my_app.nl] executing command
    command finished in 8090ms
  * 2013-11-24 18:10:51 executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * 2013-11-24 18:10:51 executing `bundle:install'
  * executing "cd /home/deploy/my_app/releases/20131124211034 && bundle install --gemfile /home/deploy/my_app/releases/20131124211034/Gemfile --path /home/deploy/my_app/shared/bundle --deployment --quiet --without development test"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 1738ms
  * 2013-11-24 18:10:53 executing `deploy:assets:symlink'
  * executing "rm -rf /home/deploy/my_app/releases/20131124211034/public/assets && mkdir -p /home/deploy/my_app/releases/20131124211034/public && mkdir -p /home/deploy/my_app/shared/assets && ln -s /home/deploy/my_app/shared/assets /home/deploy/my_app/releases/20131124211034/public/assets"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 920ms
  * executing "chmod -R -- g+w /home/deploy/my_app/releases/20131124211034 && rm -rf -- /home/deploy/my_app/releases/20131124211034/public/system && mkdir -p -- /home/deploy/my_app/releases/20131124211034/public/ && ln -s -- /home/deploy/my_app/shared/system /home/deploy/my_app/releases/20131124211034/public/system && rm -rf -- /home/deploy/my_app/releases/20131124211034/log && ln -s -- /home/deploy/my_app/shared/log /home/deploy/my_app/releases/20131124211034/log && rm -rf -- /home/deploy/my_app/releases/20131124211034/tmp/pids && mkdir -p -- /home/deploy/my_app/releases/20131124211034/tmp/ && ln -s -- /home/deploy/my_app/shared/pids /home/deploy/my_app/releases/20131124211034/tmp/pids"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 921ms
    triggering after callbacks for `deploy:update_code'
  * 2013-11-24 18:10:55 executing `deploy:assets:precompile'
    triggering before callbacks for `deploy:assets:precompile'
  * 2013-11-24 18:10:55 executing `deploy:assets:update_asset_mtimes'
  * executing "[ -e /home/deploy/my_app/shared/assets/manifest* ] && cat /home/deploy/my_app/shared/assets/manifest* || echo"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 1231ms
 ** Updating mtimes for ~288 assets...
    servers: ["my_app.nl"]
 ** scp upload #<StringIO:0x007f895b599c28> -> /home/deploy/my_app/TOUCH_ASSETS
[my_app.nl] /home/deploy/my_app/TOUCH_ASSETS
  * scp upload complete
  * executing "cat /home/deploy/my_app/TOUCH_ASSETS | while read asset; do touch -c -- \"$asset\"; done && rm -f -- /home/deploy/my_app/TOUCH_ASSETS"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 1330ms
  * executing "cd -- /home/deploy/my_app/releases/20131124211034 && RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 13721ms
  * executing "ls -1 /home/deploy/my_app/shared/assets/manifest* | wc -l"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 921ms
  * executing "ls /home/deploy/my_app/shared/assets/manifest*"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 920ms
  * executing "sudo -p 'sudo password: ' ls -x /home/deploy/my_app/releases"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 1535ms
  * executing "cp -- /home/deploy/my_app/shared/assets/manifest.yml /home/deploy/my_app/releases/20131124211034/assets_manifest.yml"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
    command finished in 920ms
  * 2013-11-24 18:11:19 executing `deploy:create_symlink'
  * executing "sudo -p 'sudo password: ' rm -f /home/deploy/my_app/current && sudo -p 'sudo password: ' ln -s /home/deploy/my_app/releases/20131124211034 /home/deploy/my_app/current"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
 ** [out :: my_app.nl] 
    command finished in 1308ms
 ** transaction: commit
    triggering after callbacks for `deploy:update'
  * 2013-11-24 18:11:20 executing `deploy:cleanup'
  * executing "sudo -p 'sudo password: ' ls -1dt /home/deploy/my_app/releases/* | tail -n +4 | sudo -p 'sudo password: ' xargs rm -rf"
    servers: ["my_app.nl"]
    [my_app.nl] executing command
 ** [out :: my_app.nl]

一旦冻结,什么都不会发生。但是,如果我在项目中编辑任何内容(例如评论)并提交/推送它,则部署可能会成功。无需逻辑解释。

【问题讨论】:

  • 您可以尝试使用--verbose 运行命令吗?
  • @troelskn 是的,检查一下:wizard:weedmap fschuindt$ cap deploy --verbose ** transaction: start Password: ** Updating mtimes for ~312 assets... ** scp upload #&lt;StringIO:0x007ff28e2110a0&gt; -&gt; /home/deploy/weedsquare/TOUCH_ASSETS ** [out :: weedsquare.nl] ** transaction: commit ** [out :: weedsquare.nl] 它会冻结...
  • 同样的问题,运气好吗?

标签: ruby-on-rails deployment capistrano


【解决方案1】:

我遇到了完全相同的事情。 Deploy 将完全挂起上传 TOUCH_ASSETS 文件。在我们的例子中,它正在处理大约 815 个资产。

我查看了服务器上的 TOUCH_ASSETS 文件,看起来它从未完成写入。最后一行被截断。我跟踪了文件几次,它从未改变过。此外,当按 ctrl-c 取消部署时,回滚步骤也失败了。这几乎就像 SSH 连接被断开了一样。

通过将所有资产从 shared/assets 移动到临时文件夹,然后再次部署,使我的部署成功。部署成功,所有资产都已编译。

这显然不适用于部署到在线系统。谢天谢地,我正在部署到一个测试环境,可以毫无问题地把它擦干净。希望在尝试部署到生产环境时不会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多