【问题标题】:capistrano v2 not failing / rolling back when custom task fails自定义任务失败时 capistrano v2 不会失败/回滚
【发布时间】:2015-03-14 23:16:51
【问题描述】:

我必须编译我们的 rails 应用程序使用的自定义 c 编码二进制文件。 此设置保存在自定义 rake 文件中(ourapp.rake,如下) 运行 cap v2 我注意到 make 失败但部署没有“失败”。 我刚刚完成任务

system "cd #{thedir} && exit 1" # simulate failing of custom task

但 deploy:cold 没有失败,调试输出(如下)清楚地显示 make 失败

我错过了什么吗?我试过了

  • 搜索 capistrano 的错误代码/失败场景 - 没有(很多人提到尝试在失败时运行自定义脚本)
  • 系统 v 运行 v 调用

感谢帮助,代码如下

# ourapp.rake

namespace :ourapp do
  desc "Compile and Install Performant Parser"
  task :compile_performant_parser do
    thedir=File.join(Rails.root, 'parser')
    system "cd #{thedir} && make clean && make && make install"
  end # compile

  desc "Compile and Install Compareplans process"
  task :compile_binary do
    thedir=File.join(Rails.root, 'compareplans_process/src')
    #system "cd #{thedir} && make clean && make && make install"
    system "exit 1"
  end # compile

  task :install => [:compile_performant_parser, :compile_binary ] do
    puts "Preparing Ourapp for run"
  end
end

对 deploy.rb 的补充

 namespace :deploy do
  desc "setup ourapp dependencies, dir, binaries and (later data)"
  task :setup_ourapp do
    run "cd #{current_release} && /usr/bin/env bundle exec rake our app:install RAILS_ENV=#{rails_env}"
  end
  after 'deploy:update_code', 'deploy:setup_ourapp'
end

【问题讨论】:

    标签: capistrano


    【解决方案1】:

    所以我发现capistrano没有退出,所以你需要测试错误代码

    Capistrano run local command exit on failure

    要回滚,您需要使用事务类型

    How do I use transactions within custom capistrano tasks?

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多