class Codepipe::Deploy

Public Instance Methods

find_stack(stack_name) click to toggle source
# File lib/codepipe/deploy.rb, line 27
def find_stack(stack_name)
  return if ENV['TEST']
  resp = cfn.describe_stacks(stack_name: stack_name)
  resp.stacks.first
rescue Aws::CloudFormation::Errors::ValidationError => e
  # example: Stack with id demo-web does not exist
  if e.message =~ /Stack with/ && e.message =~ /does not exist/
    nil
  else
    raise
  end
end
handle_rollback_completed!() click to toggle source
# File lib/codepipe/deploy.rb, line 12
def handle_rollback_completed!
  @stack = find_stack(@stack_name)
  if @stack && rollback_complete?(@stack)
    puts "Existing stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
    cfn.delete_stack(stack_name: @stack_name)
    status.wait
    status.reset
    @stack = nil # at this point stack has been deleted
  end
end
rollback_complete?(stack) click to toggle source
# File lib/codepipe/deploy.rb, line 23
def rollback_complete?(stack)
  stack.stack_status == 'ROLLBACK_COMPLETE'
end
run() click to toggle source
# File lib/codepipe/deploy.rb, line 3
def run
  handle_rollback_completed!
  if stack_exists?(@stack_name)
    Update.new(@options).run
  else
    Create.new(@options).run
  end
end