class Dpl::Providers::Codedeploy

split this up to CodeDeploy::Github and CodeDeploy::S3 using the revision_type, in order to make opts more strict

Public Instance Methods

bucket() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 154
def bucket
  super || error(:missing_bucket)
end
build_number() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 170
def build_number
  ENV['TRAVIS_BUILD_NUMBER']
end
bundle_type() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 162
def bundle_type
  super || key =~ /\.(tar|tgz|zip)$/ && ::Regexp.last_match(1) || error(:unknown_bundle_type)
end
client_options() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 182
def client_options
  compact(region:, credentials:, endpoint:)
end
code_deploy() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 174
def code_deploy
  @code_deploy ||= Aws::CodeDeploy::Client.new(client_options)
end
commit_id() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 146
def commit_id
  super || git_sha
end
create_deployment() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 76
def create_deployment
  deployment = code_deploy.create_deployment(
    revision:,
    application_name: application,
    deployment_group_name: deployment_group,
    description:,
    file_exists_behavior: file_exists_behavior.upcase
  )
  deployment.deployment_id
end
credentials() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 186
def credentials
  Aws::Credentials.new(access_key_id, secret_access_key)
end
deploy() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 58
def deploy
  register_revision if revision_info[:version]
  id = create_deployment
  info :deploy_triggered, id
  wait_until_deployed(id) if wait_until_deployed?
rescue Aws::CodeDeploy::Errors::DeploymentLimitExceededException => e
  error e.message
end
description() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 166
def description
  interpolate(super || msg(:description), vars:)
end
github_revision() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 136
def github_revision
  {
    revision_type: 'GitHub',
    git_hub_location: {
      commit_id:,
      repository:
    }
  }
end
key() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 158
def key
  super || error(:missing_key)
end
login() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 54
def login
  info :login
end
poll(id) click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 98
def poll(id)
  sleep 5
  print '.'
  code_deploy.get_deployment(deployment_id: id)[:deployment_info][:status]
end
register_revision() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 67
def register_revision
  info :register_revision, revision_info[:version], revision_info[:e_tag]
  code_deploy.register_application_revision(
    revision:,
    application_name: application,
    description:
  )
end
repository() click to toggle source
Calls superclass method
# File lib/dpl/providers/codedeploy.rb, line 150
def repository
  super || ENV['TRAVIS_REPO_SLUG'] || File.basename(Dir.pwd)
end
revision() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 108
def revision
  @revision ||= case revision_type
                when 's3'     then s3_revision
                when 'github' then github_revision
                when nil      then bucket? ? s3_revision : github_revision
                else error :unknown_revision_type, revision_type
                end
end
revision_info() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 104
def revision_info
  revision[:s3_location] || {}
end
revision_version_info() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 130
def revision_version_info
  s3.head_object(bucket:, key:)
rescue Aws::Errors::ServiceError => e
  error e.message
end
s3() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 178
def s3
  @s3 ||= Aws::S3::Client.new(client_options)
end
s3_revision() click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 117
def s3_revision
  {
    revision_type: 'S3',
    s3_location: compact(
      bucket:,
      bundle_type:,
      version: revision_version_info[:version_id],
      e_tag: revision_version_info[:etag],
      key:
    )
  }
end
wait_until_deployed(id) click to toggle source
# File lib/dpl/providers/codedeploy.rb, line 87
def wait_until_deployed(id)
  print :waiting_for_deploy
  status = poll(id) until %w[Succeeded Failed Stopped].include?(status)
  case status
  when 'Succeeded'
    info :finished_deploy, status
  else
    error :finished_deploy, status
  end
end