dpl 1.5.8.travis.328.1 → 1.5.8.travis.330.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +2 -2
- data/lib/dpl/provider/ops_works.rb +32 -1
- data/spec/provider/ops_works_spec.rb +11 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDNiMTY3ZTdmOGZjYzA0YWUzMGNkNTQ0NDFhYjFkOGQ4ZWVkZDRmNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzY3ZmYyOWUzMTQ0ZGY2OWFmOTFiNGJiMDBmNTQ5ODYxMjQxYTkzYw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDUyMjhiZTFmMWJkM2RhYzQwMmI5M2QxZjY1NzhhYmZmNTZlYjk5YjBjMDhi
|
10
|
+
NzhhMjRkZTlhOTUwNGNjYWRkNGIyZjIxYjgxNmQ0NzMwNmRiODBiOThkZGZi
|
11
|
+
NGNiNGVhMDVkY2IwN2FlNmEwYzhmNDJiMDBhZjQwZTAxZWFlMjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MzMwYzU2ZGVjZWU3NWQ0MmNlZDQzMTdhMjE0MDhhOTc2MjAzMjgyN2QwZjBk
|
14
|
+
NWFjNzczMjU2NGQxMTZmODg5MTkwYjhmYWE2ODZhMDEwYzg5MmRjMTg0ZWQ2
|
15
|
+
NzkwNDJlZTdiYjkzMzkwZjNmZjEzMzBkNzc3MTQyNDQxM2JhOGI=
|
data/README.md
CHANGED
@@ -189,10 +189,10 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
|
|
189
189
|
* **secret-access-key**: AWS Secret Key. Can be obtained from [here](https://console.aws.amazon.com/iam/home?#security_credential).
|
190
190
|
* **app-id**: The app ID.
|
191
191
|
* **migrate**: Migrate the database. (Default: false)
|
192
|
-
|
192
|
+
* **wait-until-deployed**: Wait until the app is deployed and return the deployment status. (Default: false)
|
193
193
|
#### Examples:
|
194
194
|
|
195
|
-
dpl --provider=opsworks --access-key-id=<access-key-id> --secret-access-key=<secret-access-key> --app-id=<app-id> --migrate
|
195
|
+
dpl --provider=opsworks --access-key-id=<access-key-id> --secret-access-key=<secret-access-key> --app-id=<app-id> --migrate --wait-until-deployed
|
196
196
|
|
197
197
|
|
198
198
|
### Appfog:
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
|
1
3
|
module DPL
|
2
4
|
class Provider
|
3
5
|
class OpsWorks < Provider
|
@@ -59,6 +61,14 @@ module DPL
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def push_app
|
64
|
+
Timeout::timeout(600) do
|
65
|
+
create_deployment
|
66
|
+
end
|
67
|
+
rescue Timeout::Error
|
68
|
+
error 'Timeout: Could not finish deployment in 10 minutes.'
|
69
|
+
end
|
70
|
+
|
71
|
+
def create_deployment
|
62
72
|
data = client.create_deployment(
|
63
73
|
stack_id: ops_works_app[:stack_id],
|
64
74
|
app_id: option(:app_id),
|
@@ -67,10 +77,31 @@ module DPL
|
|
67
77
|
custom_json: custom_json.to_json
|
68
78
|
)
|
69
79
|
log "Deployment created: #{data[:deployment_id]}"
|
80
|
+
return unless options[:wait_until_deployed]
|
81
|
+
print "Deploying "
|
82
|
+
deployment = wait_until_deployed(data[:deployment_id])
|
83
|
+
print "\n"
|
84
|
+
if deployment[:status] == 'successful'
|
85
|
+
log "Deployment successful."
|
86
|
+
else
|
87
|
+
error "Deployment failed."
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def wait_until_deployed(deployment_id)
|
92
|
+
deployment = nil
|
93
|
+
loop do
|
94
|
+
result = client.describe_deployments(deployment_ids: [deployment_id])
|
95
|
+
deployment = result[:deployments].first
|
96
|
+
break unless deployment[:status] == "running"
|
97
|
+
print "."
|
98
|
+
sleep 5
|
99
|
+
end
|
100
|
+
deployment
|
70
101
|
end
|
71
102
|
|
72
103
|
def travis_deploy_comment
|
73
|
-
"Deploy #{ENV['
|
104
|
+
"Deploy build #{ENV['TRAVIS_BUILD_NUMBER'] || current_sha} via Travis CI"
|
74
105
|
end
|
75
106
|
|
76
107
|
def deploy
|
@@ -40,7 +40,7 @@ describe DPL::Provider::OpsWorks do
|
|
40
40
|
before do
|
41
41
|
provider.should_receive(:current_sha).and_return('sha')
|
42
42
|
provider.api.should_receive(:client).and_return(client)
|
43
|
-
ENV.should_receive(:[]).with('
|
43
|
+
ENV.should_receive(:[]).with('TRAVIS_BUILD_NUMBER').and_return('123')
|
44
44
|
end
|
45
45
|
|
46
46
|
let(:custom_json) { "{\"deploy\":{\"app\":{\"migrate\":false,\"scm\":{\"revision\":\"sha\"}}}}" }
|
@@ -49,7 +49,7 @@ describe DPL::Provider::OpsWorks do
|
|
49
49
|
client.should_receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]}
|
50
50
|
)
|
51
51
|
client.should_receive(:create_deployment).with(
|
52
|
-
stack_id: 'stack-id', app_id: 'app-id', command: {name: 'deploy'}, comment: 'Deploy 123 via Travis CI', custom_json: custom_json
|
52
|
+
stack_id: 'stack-id', app_id: 'app-id', command: {name: 'deploy'}, comment: 'Deploy build 123 via Travis CI', custom_json: custom_json
|
53
53
|
).and_return({})
|
54
54
|
provider.push_app
|
55
55
|
end
|
@@ -59,10 +59,18 @@ describe DPL::Provider::OpsWorks do
|
|
59
59
|
provider.options.update(app_id: 'app-id', migrate: true)
|
60
60
|
client.should_receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]})
|
61
61
|
client.should_receive(:create_deployment).with(
|
62
|
-
stack_id: 'stack-id', app_id: 'app-id', command: {name: 'deploy'}, comment: 'Deploy 123 via Travis CI', custom_json: custom_json_with_migrate
|
62
|
+
stack_id: 'stack-id', app_id: 'app-id', command: {name: 'deploy'}, comment: 'Deploy build 123 via Travis CI', custom_json: custom_json_with_migrate
|
63
63
|
).and_return({})
|
64
64
|
provider.push_app
|
65
65
|
end
|
66
|
+
|
67
|
+
example 'with :wait_until_deployed' do
|
68
|
+
provider.options.update(app_id: 'app-id', wait_until_deployed: true)
|
69
|
+
client.should_receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]})
|
70
|
+
client.should_receive(:create_deployment).and_return({deployment_id: 'deployment_id'})
|
71
|
+
client.should_receive(:describe_deployments).with({deployment_ids: ['deployment_id']}).and_return({deployments: [status: 'running']}, {deployments: [status: 'successful']})
|
72
|
+
provider.push_app
|
73
|
+
end
|
66
74
|
end
|
67
75
|
|
68
76
|
describe :api do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dpl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.8.travis.
|
4
|
+
version: 1.5.8.travis.330.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|