Sha256: 574d2cf34ba2cd816e627dd2fdabdea8452734e0b5e2f11cdc0617bd36a3e0e8
Contents?: true
Size: 1.05 KB
Versions: 6
Compression:
Stored size: 1.05 KB
Contents
module Codebuild class Deploy < Stack def run handle_rollback_completed! if stack_exists?(@stack_name) Update.new(@options).run else Create.new(@options).run end end 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 def rollback_complete?(stack) stack.stack_status == 'ROLLBACK_COMPLETE' end 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 end end
Version data entries
6 entries across 6 versions & 1 rubygems