Class: DPL::Provider::CodeDeploy
Instance Attribute Summary
#context, #options
Instance Method Summary
collapse
apt_get, #check_app, #commit_msg, context, #create_key, #deploy, #detect_encoding?, #encoding_for, #error, experimental, #initialize, #log, new, npm_g, #option, pip, requires, #run, #setup_git_credentials, #setup_git_ssh, #sha, shell, #user_agent, #warn
Constructor Details
This class inherits a constructor from DPL::Provider
Instance Method Details
#bundle_type ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/dpl/provider/code_deploy.rb', line 70
def bundle_type
if s3_key =~ /\.(tar|tgz|zip)$/
options[:bundle_type] || $1
else
option(:bundle_type)
end
end
|
#check_auth ⇒ Object
86
87
88
|
# File 'lib/dpl/provider/code_deploy.rb', line 86
def check_auth
log "Logging in with Access Key: #{option(:access_key_id)[-4..-1].rjust(20, '*')}"
end
|
#cleanup ⇒ Object
90
91
|
# File 'lib/dpl/provider/code_deploy.rb', line 90
def cleanup
end
|
#code_deploy ⇒ Object
8
9
10
11
12
13
|
# File 'lib/dpl/provider/code_deploy.rb', line 8
def code_deploy
@code_deploy ||= begin
Aws.add_service('CodeDeploy', api: File.expand_path("../CodeDeploy.api.json", __FILE__)) unless defined? Aws::CodeDeploy
Aws::CodeDeploy::Client.new(code_deploy_options)
end
end
|
#code_deploy_options ⇒ Object
15
16
17
18
19
20
21
22
|
# File 'lib/dpl/provider/code_deploy.rb', line 15
def code_deploy_options
code_deploy_options = {
region: options[:region] || 'us-east-1',
credentials: Aws::Credentials.new(option(:access_key_id), option(:secret_access_key))
}
code_deploy_options[:endpoint] = options[:endpoint] if options[:endpoint]
code_deploy_options
end
|
#default_description ⇒ Object
82
83
84
|
# File 'lib/dpl/provider/code_deploy.rb', line 82
def default_description
"Deploy build #{context.env['TRAVIS_BUILD_NUMBER']} via Travis CI"
end
|
#github_revision ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/dpl/provider/code_deploy.rb', line 48
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? ⇒ Boolean
24
25
26
|
# File 'lib/dpl/provider/code_deploy.rb', line 24
def needs_key?
false
end
|
#push_app ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/dpl/provider/code_deploy.rb', line 58
def push_app
deployment = 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 #{deployment.deployment_id.inspect}."
rescue Aws::CodeDeploy::Errors::DeploymentLimitExceededException => exception
error(exception.message)
end
|
#revision ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/dpl/provider/code_deploy.rb', line 28
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 ⇒ Object
78
79
80
|
# File 'lib/dpl/provider/code_deploy.rb', line 78
def s3_key
options[:key] || option(:s3_key)
end
|
#s3_revision ⇒ Object
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/dpl/provider/code_deploy.rb', line 37
def s3_revision
{
revision_type: 'S3',
s3_location: {
bucket: option(:bucket),
bundle_type: bundle_type,
key: s3_key
}
}
end
|
#uncleanup ⇒ Object
93
94
|
# File 'lib/dpl/provider/code_deploy.rb', line 93
def uncleanup
end
|