【发布时间】: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 #<StringIO:0x007ff28e2110a0> -> /home/deploy/weedsquare/TOUCH_ASSETS ** [out :: weedsquare.nl] ** transaction: commit ** [out :: weedsquare.nl]它会冻结... -
同样的问题,运气好吗?
标签: ruby-on-rails deployment capistrano