如何从任务中暂停Capistrano部署

时间:2014-03-26 19:01:48

标签: ruby capistrano

我有一项任务可以验证即将部署的构建的完整性。

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

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

3 个答案:

答案 0 :(得分:4)

你应该引发一个CommandError异常:

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

所以没有显示回溯。

答案 1 :(得分:0)

正如@engineersmnky在问题的评论中所述,raise "Error with build"将触发当前部署的暂停。但是这个解决方案打印出一个难看的堆栈跟踪,因为它没有被Capistrano处理。

答案 2 :(得分:0)

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

void loop() {

if(Serial.available()){
  int available = Serial.available();
  for(int i=0; i< available; i++){
  char a = Serial.read();
 
  if(i < 1){ 
  input1 = a;
   }
  if(i > 1){
  int c =(int)a - 48;
    input2 *= 10;
    input2  +=  c;
  }
   
  }
}