s3_deployer 0.6.0 → 0.6.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 +4 -4
- data/README.md +14 -0
- data/lib/s3_deployer/color.rb +4 -0
- data/lib/s3_deployer/version.rb +1 -1
- data/lib/s3_deployer.rb +27 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 112d76344eda70ff7dd8654c4655f28a15350a24
|
4
|
+
data.tar.gz: 3d707335451e1f02cc0501ab5fcf31c1663ea063
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0000396d0830c7b0bc4f12fecd6b0a73725c5f24323a1a3c2902fdb321046c9b6a54bd60c1c419cd7106372e4dec14d0f26b08b4a83d6d119474e615c0db867a
|
7
|
+
data.tar.gz: e66c981731ea5c16fc849bc774ebd18280a92a5cf9273b26eead74aab731d1a77ee2cee470da54fa0befaa5615598a5d67eb537c578c9f230352a6acf6a8bc17
|
data/README.md
CHANGED
@@ -16,6 +16,20 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install s3_deployer
|
18
18
|
|
19
|
+
## Features
|
20
|
+
|
21
|
+
* Versioned deploys
|
22
|
+
* Separated 'stage' (uploading code to S3) and 'switch' (switching to the right code version) tasks
|
23
|
+
(with ability to combine them with the 'deploy' task)
|
24
|
+
* Parallel uploads
|
25
|
+
* Retries in case of upload failures
|
26
|
+
* Optional compression (by regexps, see example below)
|
27
|
+
* before/after hooks for every step
|
28
|
+
* Separate environments support
|
29
|
+
* Automatic maintaining of the list of versions and mapping them to the list of git commits
|
30
|
+
* Rollback via 'switch' command
|
31
|
+
* Colorized output :)
|
32
|
+
|
19
33
|
## Usage
|
20
34
|
|
21
35
|
You need to specify s3_deployer_config.rb file in your home directory, which may look like this:
|
data/lib/s3_deployer/color.rb
CHANGED
data/lib/s3_deployer/version.rb
CHANGED
data/lib/s3_deployer.rb
CHANGED
@@ -13,6 +13,8 @@ require "s3_deployer/version"
|
|
13
13
|
class S3Deployer
|
14
14
|
DATE_FORMAT = "%Y%m%d%H%M%S"
|
15
15
|
CURRENT_REVISION = "CURRENT_REVISION"
|
16
|
+
RETRY_TIMES = [1, 3, 8].freeze
|
17
|
+
|
16
18
|
class << self
|
17
19
|
attr_reader :config
|
18
20
|
|
@@ -166,7 +168,9 @@ class S3Deployer
|
|
166
168
|
|
167
169
|
def get_value(key)
|
168
170
|
puts "Retrieving value #{key} on S3"
|
169
|
-
|
171
|
+
retry_block(RETRY_TIMES.dup) do
|
172
|
+
Aws::S3::Resource.new.bucket(config.bucket).object(key).get.body.read
|
173
|
+
end
|
170
174
|
end
|
171
175
|
|
172
176
|
def store_current_revision(revision)
|
@@ -188,7 +192,6 @@ class S3Deployer
|
|
188
192
|
end
|
189
193
|
|
190
194
|
def store_value(key, value)
|
191
|
-
puts "Storing value #{colorize(:yellow, key)} on S3#{", #{colorize(:green, 'gzipped')}" if should_compress?(key)}"
|
192
195
|
options = {acl: "public-read"}
|
193
196
|
if config.cache_control && !config.cache_control.empty?
|
194
197
|
options[:cache_control] = config.cache_control
|
@@ -197,7 +200,28 @@ class S3Deployer
|
|
197
200
|
options[:content_encoding] = "gzip"
|
198
201
|
value = compress(value)
|
199
202
|
end
|
200
|
-
|
203
|
+
retry_block(RETRY_TIMES.dup) do
|
204
|
+
puts "Storing value #{colorize(:yellow, key)} on S3#{", #{colorize(:green, 'gzipped')}" if should_compress?(key)}"
|
205
|
+
Aws::S3::Resource.new.bucket(config.bucket).object(key).put(options.merge(body: value))
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def retry_block(sleep_times, &block)
|
210
|
+
block.call
|
211
|
+
rescue Exception => e
|
212
|
+
puts "#{colorize(:red, "Error!")} #{e}\n\n#{e.backtrace.take(3).join("\n")}"
|
213
|
+
no_retry_exceptions = [Aws::S3::Errors::NoSuchKey]
|
214
|
+
if no_retry_exceptions.any? { |exc| e.is_a?(exc) }
|
215
|
+
raise e
|
216
|
+
elsif !sleep_times.empty?
|
217
|
+
sleep_time = sleep_times.shift
|
218
|
+
puts "Still have #{colorize(:yellow, "#{sleep_times.count} retries")}, so waiting for #{colorize(:yellow, "#{sleep_time} seconds")} and retrying..."
|
219
|
+
sleep sleep_time
|
220
|
+
retry_block(sleep_times, &block)
|
221
|
+
else
|
222
|
+
puts "Out of retries, failing..."
|
223
|
+
raise e
|
224
|
+
end
|
201
225
|
end
|
202
226
|
|
203
227
|
def should_compress?(key)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3_deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Astashov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tzinfo
|