【问题标题】:Capistrano Deployment: a Task before `deploy:finalize_update` Is not ExecutedCapistrano 部署:`deploy:finalize_update` 之前的任务未执行
【发布时间】:2012-09-27 19:34:41
【问题描述】:

我正在使用 Capistrano v2.13.4 进行部署。

deploy:finalize_update 之前的 Capistrano 任务 (deploy:special_treats) 未执行。

任务deploy:special_treatsbundle:install做一些准备(设置互联网访问),否则bundle:install将无法访问互联网([out :: servername] Could not reach https://rubygems.org/

config/deploy.rb

before 'deploy:finalize_update', 'deploy:special_treats'

namespace :deploy do
  task :special_treats do
    run "echo 'something special treats: setup the Internet access'"
  end
end

cap deploy:update 的结果

$ cap deploy:update
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "svn info https://svnlinks --username username --password password --no-auth-cache  -rHEAD"
    command finished in 10336ms
  * getting (via export) revision 33268 to /tmp/20120927171608
    executing locally: svn export -q --username username --password password --no-auth-cache  -r33268 https://svnlinks /tmp/20120927171608
    command finished in 79314ms
  * processing exclusions...
  * Compressing /tmp/20120927171608 to /tmp/20120927171608.tar.gz
    executing locally: tar czf 20120927171608.tar.gz 20120927171608
    command finished in 1401ms
    servers: ["servername"]
 ** sftp upload /tmp/20120927171608.tar.gz -> /tmp/20120927171608.tar.gz
    [servername] /tmp/20120927171608.tar.gz
    [servername] done
  * sftp upload complete
  * executing "cd /usr/website/rr/releases && tar xzf /tmp/20120927171608.tar.gz && rm /tmp/20120927171608.tar.gz"
    servers: ["servername"]
    [servername] executing command
    command finished in 774ms
  * executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * executing `bundle:install'
  * executing "cd /usr/website/rr/releases/20120927171608 && bundle install --gemfile /usr/website/rr/releases/20120927171608/Gemfile --path /usr/website/rr/shared/bundle --deployment --quiet --without development 

test"
    servers: ["servername"]
    [servername] executing command
 ** [out :: servername] Could not reach https://rubygems.org/
    command finished in 1403ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /usr/website/rr/releases/20120927171608; true"
    servers: ["servername"]
    [servername] executing command
    command finished in 344ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3-p194' -c 'cd /usr/website/rr/releases/20120927171608 && bundle install --gemfile /usr/website/rr/releases/20120927171608/Gemfile --path 

/usr/website/rr/shared/bundle --deployment --quiet --without development test'" on servername

【问题讨论】:

    标签: deployment capistrano task


    【解决方案1】:

    我只是在after deploy:finalize_update 触发器中遇到了同样的问题。不同的是我的脚本在另一台机器上工作了很长时间。

    我没有将 capistrano 锁定为 Gemfile 中的 gem,所以我尝试恢复到相同版本的工作机器,即 2.6.0,但这并没有解决它。

    经过一些研究和几次试验,我在 github 项目中发现了一些问题,例如 this 导致 that 但看起来人们无法完全重现它。

    然后我前往文档并浏览我发现 Capistrano 的行为受到了与命名空间冲突有关的0.9.x rake 版本的最新更改的影响,正如您在这个简短的小注释中看到的那样可以在 Capistrano Tasks wiki page 的 deploy:create_symlink 部分找到

    我没有时间修复脚本以使用最新版本的 rake 和 capistrano,但通过将 rake 恢复到版本 0.8.7,我能够让它在另一台机器上重新运行。

    我希望这可以让您继续前进并为解决方案提供一些线索。

    【讨论】:

    • 感谢您的回答。我找到了设置 Internet 访问的解决方案。我使用了set :default_environment { 'env_var1' => 'value1', 'env_var2' => 'value2' },它可以工作。作为一个因素,我们尝试在任务中设置的环境变量在整个 Capistrano 部署会话期间不是持久的。
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多