dpl 1.5.3.travis.259.1 → 1.5.3.travis.261.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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