dpl 1.7.9.travis.657.1 → 1.7.9.travis.662.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
- YWEwNTk3Yjk5NThmZGVkM2JkMDI2MGQxN2Y2MDMwNTYzNDQyZDFjMQ==
4
+ MjlhNDdjMGE4ODg3NDJhMTMwZGVlNGVmYTAxODhjYThkYWJiYmMxZg==
5
5
  data.tar.gz: !binary |-
6
- MDMzMTliNjBlOGY4YzQ5NTIyYjVlN2ZiODBhNWExOWM3NTNiODljMg==
6
+ MGM3NmI3NDk5ZjM0YjZlZDE1N2UwODQyYjk1MjM5Y2EzNmY4OTcyNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDUzYWQzZjZhYjMzNGE5OGMyOTIwYWIyNzFhNzRhM2M5Nzc3NWNmZTFkZmYz
10
- Y2IzNDdjZTIwMWUzZGQwMzk1NWJkMmEzMjg3OTQ3Mzg0OTY0N2ZhZWFmNjk3
11
- Njc3YjE2MWE4MGY5MmM3MGY0NTY1OTIzMDUwNDUxNGIyYTYwYTI=
9
+ OGYzZTg0YTk3MGQ1YmEzYzgxMmEwNGQyNzRhOWIyMzg2NzU0NjY5NWJjMmQ3
10
+ NGY1MWFlOWEzNzlmODc0OTBlOTZiNjFhOGM0MGQyNDRjYmRlYmUxYmU2Yjlh
11
+ NzdhZmQ0OTNmZGE5YzMwOTE3M2U3YTAwYTIwZTNlOTk4YzhhMzg=
12
12
  data.tar.gz: !binary |-
13
- YTA5NWNmMGZjNzJhODQzYTM1ODAwZTZlZjlkOGRhM2VmZDMwYWI5OTcxZjNi
14
- OWIzOGY5ODRjZjI1ZTEzNjM4MzdjMzA0M2VmZjVmOTIyZjJiMjJhMjY0NmE0
15
- ZDVjNjZjZGRkYTZkMzAzZDRlMGZhOTVmYThiOTZmMmY0N2UzMjM=
13
+ YjUwZmI4MDNmZTVhYTFjMGUxNzQ3ZDk5M2E2ODhjNzc4ZTBhZmU1M2MxOTFi
14
+ OWVkMTkxN2I3NTk2ZTA5MWU3MzAwM2QzZDRhODRhNDdlYjYzZjk3OWI3MzM3
15
+ NjMxMWY0MzNkZGU3YzRmMmNhYmNhNmE2MzBlNGIyY2M1YTFhNjM=
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
+ gem 'slop', '~> 3.6.0'
5
+
4
6
  group :heroku do
5
7
  gem 'rendezvous', '~> 0.0.2'
6
8
  gem 'heroku-api', '= 0.3.16'
data/README.md CHANGED
@@ -204,6 +204,15 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
204
204
  * **dot_match**: When set to `true`, upload files starting a `.`.
205
205
  * **index_document_suffix**: Set the index document of a S3 website.
206
206
 
207
+ #### File-specific `Cache-Control` and `Expires` headers
208
+
209
+ It is possible to set file-specific `Cache-Control` and `Expires` headers using `value: file[, file]` format.
210
+
211
+ ##### Example:
212
+
213
+ --cache_control="no-cache: index.html"
214
+ --expires="\"2012-12-21 00:00:00 -0000\": *.css, *.js"
215
+
207
216
  #### Examples:
208
217
 
209
218
  dpl --provider=s3 --access-key-id=<access-key-id> --secret-access-key=<secret-access-key> --bucket=<bucket> --acl=public_read
@@ -154,6 +154,7 @@ module DPL
154
154
 
155
155
  def cleanup
156
156
  return if options[:skip_cleanup]
157
+ puts "Performing #{__method__}"
157
158
  context.shell "mv .dpl ~/dpl"
158
159
  context.shell "git stash --all"
159
160
  context.shell "mv ~/dpl .dpl"
@@ -161,6 +162,7 @@ module DPL
161
162
 
162
163
  def uncleanup
163
164
  return if options[:skip_cleanup]
165
+ puts "Performing #{__method__}"
164
166
  context.shell "git stash pop"
165
167
  end
166
168
 
@@ -69,13 +69,17 @@ module DPL
69
69
  end
70
70
 
71
71
  def create_deployment
72
- data = client.create_deployment(
72
+ deployment_config = {
73
73
  stack_id: ops_works_app[:stack_id],
74
74
  app_id: option(:app_id),
75
75
  command: {name: 'deploy'},
76
76
  comment: travis_deploy_comment,
77
77
  custom_json: custom_json.to_json
78
- )
78
+ }
79
+ if !options[:instance_ids].nil?
80
+ deployment_config[:instance_ids] = option(:instance_ids)
81
+ end
82
+ data = client.create_deployment(deployment_config)
79
83
  log "Deployment created: #{data[:deployment_id]}"
80
84
  return unless options[:wait_until_deployed]
81
85
  print "Deploying "
@@ -38,9 +38,9 @@ module DPL
38
38
  Dir.glob(*glob_args) do |filename|
39
39
  content_type = MIME::Types.type_for(filename).first.to_s
40
40
  opts = { :content_type => content_type }.merge(encoding_option_for(filename))
41
- opts[:cache_control] = options[:cache_control] if options[:cache_control]
41
+ opts[:cache_control] = get_option_value_by_filename(options[:cache_control], filename) if options[:cache_control]
42
42
  opts[:acl] = options[:acl] if options[:acl]
43
- opts[:expires] = options[:expires] if options[:expires]
43
+ opts[:expires] = get_option_value_by_filename(options[:expires], filename) if options[:expires]
44
44
  unless File.directory?(filename)
45
45
  log "uploading %p" % filename
46
46
  api.buckets[option(:bucket)].objects.create(upload_path(filename), File.read(filename), opts)
@@ -73,6 +73,26 @@ module DPL
73
73
  {}
74
74
  end
75
75
  end
76
+
77
+ def get_option_value_by_filename(option_values, filename)
78
+ return option_values if !option_values.kind_of?(Array)
79
+ preferred_value = nil
80
+ hashes = option_values.select {|value| value.kind_of?(Hash) }
81
+ hashes.each do |hash|
82
+ hash.each do |value, patterns|
83
+ unless patterns.kind_of?(Array)
84
+ patterns = [patterns]
85
+ end
86
+ patterns.each do |pattern|
87
+ if File.fnmatch?(pattern, filename)
88
+ preferred_value = value
89
+ end
90
+ end
91
+ end
92
+ end
93
+ preferred_value = option_values.select {|value| value.kind_of?(String) }.last if preferred_value.nil?
94
+ return preferred_value
95
+ end
76
96
  end
77
97
  end
78
98
  end
@@ -71,6 +71,15 @@ describe DPL::Provider::OpsWorks do
71
71
  expect(client).to receive(:describe_deployments).with({deployment_ids: ['deployment_id']}).and_return({deployments: [status: 'running']}, {deployments: [status: 'successful']})
72
72
  provider.push_app
73
73
  end
74
+
75
+ example 'with :instance-ids' do
76
+ provider.options.update(app_id: 'app-id', instance_ids: ['instance-id'])
77
+ expect(client).to receive(:describe_apps).with(app_ids: ['app-id']).and_return({apps: [ops_works_app]})
78
+ expect(client).to receive(:create_deployment).with(
79
+ stack_id: 'stack-id', app_id: 'app-id', instance_ids:['instance-id'], command: {name: 'deploy'}, comment: 'Deploy build 123 via Travis CI', custom_json: custom_json
80
+ ).and_return({})
81
+ provider.push_app
82
+ end
74
83
  end
75
84
 
76
85
  describe "#api" do
@@ -80,6 +80,22 @@ describe DPL::Provider::S3 do
80
80
  provider.push_app
81
81
  end
82
82
 
83
+ example "Sets different Cache and Expiration" do
84
+ option_list = []
85
+ provider.options.update(:cache_control => ["max-age=99999999", "no-cache" => ["foo.html", "bar.txt"], "max-age=9999" => "*.txt"], :expires => ["2012-12-21 00:00:00 -0000", "1970-01-01 00:00:00 -0000" => "*.html"])
86
+ expect(Dir).to receive(:glob).and_yield("foo.html").and_yield("bar.txt").and_yield("baz.js")
87
+ expect(File).to receive(:read).exactly(3).times.and_return("")
88
+ allow_any_instance_of(AWS::S3::ObjectCollection).to receive(:create) do |_instance, key, _data, options|
89
+ option_list << { key: key, options: options }
90
+ end
91
+ provider.push_app
92
+ expect(option_list).to match_array([
93
+ { key: "foo.html", options: hash_including(:cache_control => "no-cache", :expires => "1970-01-01 00:00:00 -0000") },
94
+ { key: "bar.txt", options: hash_including(:cache_control => "max-age=9999", :expires => "2012-12-21 00:00:00 -0000") },
95
+ { key: "baz.js", options: hash_including(:cache_control => "max-age=99999999", :expires => "2012-12-21 00:00:00 -0000") },
96
+ ])
97
+ end
98
+
83
99
  example "Sets ACL" do
84
100
  provider.options.update(:acl => "public_read")
85
101
  expect(Dir).to receive(:glob).and_yield(__FILE__)
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.7.9.travis.657.1
4
+ version: 1.7.9.travis.662.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-12-23 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec