dpl 1.5.3.travis.259.1 → 1.5.3.travis.261.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
- OTQ3ZWZiMzZiNzkyZTgyZjIyYzJjN2Q5OGMyNjdmNDM4YzljOGVmMg==
4
+ YzdkNDEyOGEyNDY0NjVmYWUwZDU5MDJhZTQ5YzI2Yjg3NzIyNzg4Mw==
5
5
  data.tar.gz: !binary |-
6
- OTExMmM4YTgzODk4NWRlYTc5YWE4NTNiOWFlYWZkMGVhNzZiZjJhMw==
7
- !binary "U0hBNTEy":
6
+ OWJhYThkZGUyODQ2NjllMWM3ZjZlMGRkZjRiMjdiOTc0NDE5ZDkxMA==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MTIyZjE4ZThkNzE5ZTAzMGU5MDI5YmIwMjhhNzRkOWI1ZjU5YmI1YjBhZDUy
10
- OGMxMGJjMGZhYzYyY2M0ZDhkYjM5YzYxNmVlYzZlMGYxZmQ4NzhhNWM5NTQ3
11
- YTY4MmY3NTM2NTliN2M5ZWIzYjcwY2U4ZTNlOTA5Y2M1OTU3NGE=
9
+ NzM3MTU5Mzk2MTFmYmUzMmVhZmZhM2FmMGNmOWFmYWZlNTNmYThhYTA5MzE1
10
+ YzM4YzNkYzQxZGE5NzgzNTAwYTZiZGJjODFlMDI3MzM0ZjkzYTlmYjEyYjUw
11
+ ZDk3NTYxZDEyZWU4YTBiZTY4YWM3NDdjZDkzYmJiNTU4YTk5MjM=
12
12
  data.tar.gz: !binary |-
13
- MDgwOWE0NzQ0Mjk4NTQxNDAyNmMyYmJlYjg4NzAzZjMxZTA5Nzk4YzIwMDc2
14
- OTEzNjU5ZDFlZjE3ZWIzNjg4MDJjZjQxN2FiMmI1ZWE2NTRhYjc3ZDBhNDc3
15
- OGNmOGFmNDcwNjA3OWI4YTlmMjBmNzgzYjRjZjQxNmM5NGJjMzg=
13
+ MzE3ZTViMTY5M2RkZjAxMjU4NDJlNmZkMzc1NjU4ZDQ0MGFhZmFlMDczN2Rm
14
+ YmMzNzQzN2MzOTFkZmNiMTE3NDc2MTQ4Y2Q5MWJkYTFlNjJkZDU3YjhjOTM2
15
+ ZjBkM2ZhMjc0OTEzNmM0ODBhNDQ5YTUxMmVkNTdlZTkzNjk5YWU=
data/README.md CHANGED
@@ -170,12 +170,12 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
170
170
 
171
171
  * **access-key-id**: AWS Access Key ID. Can be obtained from [here](https://console.aws.amazon.com/iam/home?#security_credential).
172
172
  * **secret-access-key**: AWS Secret Key. Can be obtained from [here](https://console.aws.amazon.com/iam/home?#security_credential).
173
- * **stack-id**: The stack ID.
174
173
  * **app-id**: The app ID.
174
+ * **migrate**: Migrate the database. (Default: false)
175
175
 
176
176
  #### Examples:
177
177
 
178
- dpl --provider=opsworks --access-key-id=<access-key-id> --secret-access-key=<secret-access-key> --stack-id=<stack-id> --app-id=<app-id>
178
+ dpl --provider=opsworks --access-key-id=<access-key-id> --secret-access-key=<secret-access-key> --app-id=<app-id> --migrate
179
179
 
180
180
 
181
181
  ### Appfog:
@@ -8,6 +8,10 @@ module DPL
8
8
  @api ||= AWS::OpsWorks.new
9
9
  end
10
10
 
11
+ def client
12
+ @client ||= api.client
13
+ end
14
+
11
15
  def needs_key?
12
16
  false
13
17
  end
@@ -25,8 +29,48 @@ module DPL
25
29
  log "Logging in with Access Key: #{option(:access_key_id)[-4..-1].rjust(20, '*')}"
26
30
  end
27
31
 
32
+ def custom_json
33
+ {
34
+ deploy: {
35
+ ops_works_app[:shortname] => {
36
+ migrate: !!options[:migrate],
37
+ scm: {
38
+ revision: current_sha
39
+ }
40
+ }
41
+ }
42
+ }
43
+ end
44
+
45
+ def current_sha
46
+ @current_sha ||= `git rev-parse HEAD`.chomp
47
+ end
48
+
49
+ def ops_works_app
50
+ @ops_works_app ||= fetch_ops_works_app
51
+ end
52
+
53
+ def fetch_ops_works_app
54
+ data = client.describe_apps(app_ids: [option(:app_id)])
55
+ unless data[:apps] && data[:apps].count == 1
56
+ raise Error, "App #{option(:app_id)} not found.", error.backtrace
57
+ end
58
+ data[:apps].first
59
+ end
60
+
28
61
  def push_app
29
- api.client.create_deployment(stack_id: option(:stack_id), app_id: option(:app_id), command: {name: 'deploy'})
62
+ data = client.create_deployment(
63
+ stack_id: ops_works_app[:stack_id],
64
+ app_id: option(:app_id),
65
+ command: {name: 'deploy'},
66
+ comment: travis_deploy_comment,
67
+ custom_json: custom_json.to_json
68
+ )
69
+ log "Deployment created: #{data[:deployment_id]}"
70
+ end
71
+
72
+ def travis_deploy_comment
73
+ "Deploy #{ENV['TRAVIS_COMMIT'] || current_sha} via Travis CI"
30
74
  end
31
75
 
32
76
  def deploy
@@ -16,7 +16,7 @@ describe DPL::Provider::OpsWorks do
16
16
  describe :check_auth do
17
17
  example do
18
18
  provider.should_receive(:setup_auth)
19
- provider.should_receive(:log).with("Logging in with Access Key: ****************jklz")
19
+ provider.should_receive(:log).with('Logging in with Access Key: ****************jklz')
20
20
  provider.check_auth
21
21
  end
22
22
  end
@@ -36,10 +36,31 @@ describe DPL::Provider::OpsWorks do
36
36
 
37
37
  describe :push_app do
38
38
  let(:client) { double(:ops_works_client) }
39
- example do
40
- provider.options.update(stack_id: 'stack-id', app_id: 'app-id')
39
+ let(:ops_works_app) { {shortname: 'app', stack_id: 'stack-id'} }
40
+ before do
41
+ provider.should_receive(:current_sha).and_return('sha')
41
42
  provider.api.should_receive(:client).and_return(client)
42
- client.should_receive(:create_deployment).with(stack_id: 'stack-id', app_id: 'app-id', command: {name: "deploy"})
43
+ ENV.should_receive(:[]).with('TRAVIS_COMMIT').and_return('123')
44
+ end
45
+
46
+ let(:custom_json) { "{\"deploy\":{\"app\":{\"migrate\":false,\"scm\":{\"revision\":\"sha\"}}}}" }
47
+ example 'without :migrate option' do
48
+ provider.options.update(app_id: 'app-id')
49
+ client.should_receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]}
50
+ )
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
53
+ ).and_return({})
54
+ provider.push_app
55
+ end
56
+
57
+ let(:custom_json_with_migrate) { "{\"deploy\":{\"app\":{\"migrate\":true,\"scm\":{\"revision\":\"sha\"}}}}" }
58
+ example 'with :migrate option' do
59
+ provider.options.update(app_id: 'app-id', migrate: true)
60
+ client.should_receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]})
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
63
+ ).and_return({})
43
64
  provider.push_app
44
65
  end
45
66
  end
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.3.travis.259.1
4
+ version: 1.5.3.travis.261.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: 2013-11-19 00:00:00.000000000 Z
11
+ date: 2013-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  version: 1.3.1
143
143
  requirements: []
144
144
  rubyforge_project:
145
- rubygems_version: 2.0.3
145
+ rubygems_version: 2.1.11
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: deploy tool