【问题标题】:How to halt a Capistrano deploy from within a task如何从任务中停止 Capistrano 部署
【发布时间】:2014-03-26 19:01:47
【问题描述】:

我有一个任务来验证即将部署的构建的完整性。

我想暂停/失败部署,以防它被破坏。

task :test_build do
  if something
    puts "Problem with build"
    #prevent deploy to continue further
  end
end
after('deploy:update_code', 'test_build')

注意:项目使用railsless-deploy

【问题讨论】:

  • raise 应该可以解决这个问题。

标签: ruby capistrano


【解决方案1】:

你应该引发一个 CommandError 异常:

error = CommandError.new("An error that should abort and rollback deployment") 
raise error

所以没有显示回溯。

【讨论】:

    【解决方案2】:

    正如@engineersmnky 在问题的 cmets 中所述,raise "Error with build" 将触发当前部署的暂停。但是这个解决方案打印了一个丑陋的堆栈跟踪,因为它不是由 Capistrano 处理的。

    【讨论】:

      【解决方案3】:

      Capistrano 中不再定义 CommandError。查看其他示例,我发现正在使用使用 puts 语句描述错误,然后是退出调用。所以只是:

      puts "Problem with build"
      exit
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 2017-09-23
        • 2013-10-18
        相关资源
        最近更新 更多