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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDZjYTkwMzBmMzFlODQ2ZjIyYjIxOTdkOGE1YjBjMzdmMWI1YTI0Yw==
4
+ ZDNiMTY3ZTdmOGZjYzA0YWUzMGNkNTQ0NDFhYjFkOGQ4ZWVkZDRmNQ==
5
5
  data.tar.gz: !binary |-
6
- NTk0OWVlNzJmYjE2N2E5OGVmZTQxYjcxNGRhM2VmZWVjNWRiOTljOQ==
6
+ NzY3ZmYyOWUzMTQ0ZGY2OWFmOTFiNGJiMDBmNTQ5ODYxMjQxYTkzYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTEwNmYyYzY4OTEwNTc5NmMxNGFjNTIzMWZkNjVkZGE4YzQ0ZDM0ZDQwNWJh
10
- MzgxNTIwYTcyNDg0N2U0ODcxYzVmZDc2ODk5MTYxZjA1ZmFkNzBlNjE4NjJh
11
- NWVmNzZlYWQ3MWRmNTU3ZmEzYjdiNmFiNzdjNmRhZGRhMmY3YTE=
9
+ ZDUyMjhiZTFmMWJkM2RhYzQwMmI5M2QxZjY1NzhhYmZmNTZlYjk5YjBjMDhi
10
+ NzhhMjRkZTlhOTUwNGNjYWRkNGIyZjIxYjgxNmQ0NzMwNmRiODBiOThkZGZi
11
+ NGNiNGVhMDVkY2IwN2FlNmEwYzhmNDJiMDBhZjQwZTAxZWFlMjU=
12
12
  data.tar.gz: !binary |-
13
- ZGI0NWRjNzk0MjQ1OWU5MzkwZTA4OGJmM2E3MWE4YTE1MzdhZGNlNzUxNzZk
14
- N2EyYjk4OWEyNmQ4ZjQ0OGE4YjdlMTg0MGQzNzhkNjI3MTg5YzUxYmI0Nzg4
15
- MjNhYjBjNWU5YTAwMDRiN2FlOWIyMzBjMzdmZTliNTE0MTI0ODU=
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['TRAVIS_COMMIT'] || current_sha} via Travis CI"
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('TRAVIS_COMMIT').and_return('123')
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.328.1
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-01-31 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec