class DPL::Provider::CodeDeploy

Public Instance Methods

access_key_id() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 21
def access_key_id
  options[:access_key_id] || context.env['AWS_ACCESS_KEY_ID'] || raise(Error, "missing access_key_id")
end
bundle_type() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 96
def bundle_type
  if s3_key =~ /\.(tar|tgz|zip)$/
    options[:bundle_type] || $1
  else
    option(:bundle_type)
  end
end
check_auth() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 112
def check_auth
  log "Logging in with Access Key: #{access_key_id[-4..-1].rjust(20, '*')}"
end
cleanup() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 116
def cleanup
end
code_deploy() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 8
def code_deploy
  @code_deploy ||= Aws::CodeDeploy::Client.new(code_deploy_options)
end
code_deploy_options() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 12
def code_deploy_options
  code_deploy_options = {
    region:      options[:region] || 'us-east-1',
    credentials: Aws::Credentials.new(access_key_id, secret_access_key)
  }
  code_deploy_options[:endpoint] = options[:endpoint] if options[:endpoint]
  code_deploy_options
end
default_description() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 108
def default_description
  "Deploy build #{context.env['TRAVIS_BUILD_NUMBER']} via Travis CI"
end
github_revision() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 53
def github_revision
  {
    revision_type: 'GitHub',
    git_hub_location: {
      commit_id:  options[:commit_id]  || context.env['TRAVIS_COMMIT']    || `git rev-parse HEAD`.strip,
      repository: options[:repository] || context.env['TRAVIS_REPO_SLUG'] || option(:repository)
    }
  }
end
needs_key?() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 29
def needs_key?
  false
end
push_app() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 63
def push_app
  data = code_deploy.create_deployment({
    revision:               revision,
    application_name:       options[:application]      || option(:application_name),
    deployment_group_name:  options[:deployment_group] || option(:deployment_group_name),
    description:            options[:description]      || default_description
  })
  log "Triggered deployment #{data.deployment_id.inspect}."
  return unless options[:wait_until_deployed]
  print "Deploying "
  deployment = wait_until_deployed(data[:deployment_id])
  print "\n"
  if deployment[:status] == 'Succeeded'
    log "Deployment successful."
  else
    error "Deployment failed."
  end
rescue Aws::CodeDeploy::Errors::DeploymentLimitExceededException => exception
  error(exception.message)
end
revision() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 33
def revision
  case options[:revision_type].to_s.downcase
  when "s3"     then s3_revision
  when "github" then github_revision
  when ""       then options[:bucket] ? s3_revision : github_revision
  else error("unknown revision type %p" % options[:revision_type])
  end
end
s3_key() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 104
def s3_key
  options[:key] || option(:s3_key)
end
s3_revision() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 42
def s3_revision
  {
    revision_type: 'S3',
    s3_location: {
      bucket:      option(:bucket),
      bundle_type: bundle_type,
      key:         s3_key
    }
  }
end
secret_access_key() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 25
def secret_access_key
  options[:secret_access_key] || context.env['AWS_SECRET_ACCESS_KEY'] || raise(Error, "missing secret_access_key")
end
uncleanup() click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 119
def uncleanup
end
wait_until_deployed(deployment_id) click to toggle source
# File lib/dpl/provider/code_deploy.rb, line 84
def wait_until_deployed(deployment_id)
  deployment = {}
  loop do
    result = code_deploy.get_deployment(deployment_id: deployment_id)
    deployment = result[:deployment_info]
    break if deployment[:status] == "Succeeded" || deployment[:status] == "Failed" || deployment[:status] == "Stopped"
    print "."
    sleep 5
  end
  deployment
end