shiprails 0.1.14 → 0.1.16
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/lib/shiprails/ship/deploy.rb +27 -2
- data/lib/shiprails/ship/exec.rb +1 -1
- data/lib/shiprails/version.rb +1 -1
- 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: 56ad943e3c31dce558f301d17f74d3fe9ee8fd66
|
|
4
|
+
data.tar.gz: 78cb95e986707c421b314be374cddd56c36d9d4e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 443405a53e8790d41e9df6c24bc08d8ff7d39b16b10804723af482271a7a4d7853c41924674d7056a8709ffe7e28cb74244a2fa8063355b85bb8582a3ab2c324
|
|
7
|
+
data.tar.gz: 7402c82fcb9ace723ef6fa623b7e9faf9087d008de371e1c58dc03e3e9c79bd28c2724c47c2fca1c18159c5673c8a49a3017a5d4bd2922a19503cf8737019085
|
|
@@ -22,6 +22,7 @@ module Shiprails
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def build_docker_images
|
|
25
|
+
perform_callbacks :before_build_docker_images
|
|
25
26
|
say "Building images..."
|
|
26
27
|
s3_config_bucket = configuration[:config_s3_bucket].to_s
|
|
27
28
|
commands = []
|
|
@@ -36,7 +37,7 @@ module Shiprails
|
|
|
36
37
|
ecr = Aws::ECR::Client.new({ region: region_name.to_s })
|
|
37
38
|
authorization_data = ecr.get_authorization_token.authorization_data.first
|
|
38
39
|
credentials = Base64.decode64(authorization_data.authorization_token).split(':')
|
|
39
|
-
exit(1) unless run "docker login -u #{credentials.first} -p #{credentials.last}
|
|
40
|
+
exit(1) unless run "docker login -u #{credentials.first} -p #{credentials.last} #{authorization_data.proxy_endpoint}"
|
|
40
41
|
repository_name = region[:repository_url].split('/').drop(1).join('/')
|
|
41
42
|
images = ecr.describe_images(repository_name: repository_name).image_details
|
|
42
43
|
tags = images.map(&:image_tags).flatten
|
|
@@ -60,9 +61,11 @@ module Shiprails
|
|
|
60
61
|
exit(1) unless run c
|
|
61
62
|
end
|
|
62
63
|
say "Build complete", :green
|
|
64
|
+
perform_callbacks :after_build_docker_images
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
def tag_docker_images
|
|
68
|
+
perform_callbacks :before_tag_docker_images
|
|
66
69
|
say "Tagging images..."
|
|
67
70
|
commands = []
|
|
68
71
|
configuration[:services].each do |service_name, service|
|
|
@@ -80,9 +83,11 @@ module Shiprails
|
|
|
80
83
|
exit(1) unless run c
|
|
81
84
|
end
|
|
82
85
|
say "Tagging complete.", :green
|
|
86
|
+
perform_callbacks :after_tag_docker_images
|
|
83
87
|
end
|
|
84
88
|
|
|
85
89
|
def push_docker_images
|
|
90
|
+
perform_callbacks :before_push_docker_images
|
|
86
91
|
say "Pushing images..."
|
|
87
92
|
repository_urls_to_regions = {}
|
|
88
93
|
configuration[:services].each do |service_name, service|
|
|
@@ -94,13 +99,15 @@ module Shiprails
|
|
|
94
99
|
ecr = Aws::ECR::Client.new({ region: region.to_s })
|
|
95
100
|
authorization_data = ecr.get_authorization_token.authorization_data.first
|
|
96
101
|
credentials = Base64.decode64(authorization_data.authorization_token).split(':')
|
|
97
|
-
exit(1) unless run "docker login -u #{credentials.first} -p #{credentials.last}
|
|
102
|
+
exit(1) unless run "docker login -u #{credentials.first} -p #{credentials.last} #{authorization_data.proxy_endpoint}"
|
|
98
103
|
exit(1) unless run "docker push #{repository_url}:#{git_sha}"
|
|
99
104
|
end
|
|
100
105
|
say "Push complete.", :green
|
|
106
|
+
perform_callbacks :after_push_docker_images
|
|
101
107
|
end
|
|
102
108
|
|
|
103
109
|
def update_ecs_tasks
|
|
110
|
+
perform_callbacks :before_update_ecs_tasks
|
|
104
111
|
say "Updating ECS tasks..."
|
|
105
112
|
configuration[:services].each do |service_name, service|
|
|
106
113
|
image_name = "#{project_name}_#{service_name}"
|
|
@@ -144,9 +151,11 @@ module Shiprails
|
|
|
144
151
|
end
|
|
145
152
|
end
|
|
146
153
|
say "ECS tasks updated.", :green
|
|
154
|
+
perform_callbacks :after_update_ecs_tasks
|
|
147
155
|
end
|
|
148
156
|
|
|
149
157
|
def update_ecs_services
|
|
158
|
+
perform_callbacks :before_update_ecs_services
|
|
150
159
|
say "Updating ECS services..."
|
|
151
160
|
configuration[:services].each do |service_name, service|
|
|
152
161
|
service[:regions].each do |region_name, region|
|
|
@@ -179,6 +188,7 @@ module Shiprails
|
|
|
179
188
|
end
|
|
180
189
|
end
|
|
181
190
|
say "ECS services updated.", :green
|
|
191
|
+
perform_callbacks :after_update_ecs_services
|
|
182
192
|
end
|
|
183
193
|
|
|
184
194
|
def done
|
|
@@ -203,6 +213,10 @@ module Shiprails
|
|
|
203
213
|
configuration[:dockerfile_path] || "Dockerfile.production"
|
|
204
214
|
end
|
|
205
215
|
|
|
216
|
+
def environment
|
|
217
|
+
args.first
|
|
218
|
+
end
|
|
219
|
+
|
|
206
220
|
def git
|
|
207
221
|
@_git ||= Git.open(Dir.getwd)
|
|
208
222
|
end
|
|
@@ -223,6 +237,17 @@ module Shiprails
|
|
|
223
237
|
configuration[:config_s3_bucket]
|
|
224
238
|
end
|
|
225
239
|
|
|
240
|
+
def perform_callbacks(stage_name)
|
|
241
|
+
@_callbacks ||= configuration[:callbacks] || {}
|
|
242
|
+
if @_callbacks.key?(stage_name)
|
|
243
|
+
command = @_callbacks[stage_name]
|
|
244
|
+
wrapped_command = "ship exec -e #{environment} #{command}"
|
|
245
|
+
say "#{stage_name.to_s}: #{wrapped_command}"
|
|
246
|
+
result = run(wrapped_command)
|
|
247
|
+
exit(1) unless result
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
226
251
|
end
|
|
227
252
|
end
|
|
228
253
|
end
|
data/lib/shiprails/ship/exec.rb
CHANGED
|
@@ -162,7 +162,7 @@ module Shiprails
|
|
|
162
162
|
# sleep 5 # AWS just needs a little bit to setup networking
|
|
163
163
|
say "Connecting #{ssh_user}@#{ec2_instance.public_ip_address}..."
|
|
164
164
|
say "Executing: $ #{command_string}"
|
|
165
|
-
system "ssh -o ConnectTimeout=15 -o 'StrictHostKeyChecking no' -t -i #{ssh_private_key_path} #{ssh_user}@#{ec2_instance.public_ip_address} '#{command_string}'"
|
|
165
|
+
system "ssh -o ConnectTimeout=15 -o 'StrictHostKeyChecking no' -t -i #{ssh_private_key_path} #{ssh_user}@#{ec2_instance.public_ip_address} '`aws ecr get-login --region #{region}` && #{command_string}'"
|
|
166
166
|
rescue => e
|
|
167
167
|
puts e.inspect
|
|
168
168
|
say "Error: #{e.message}", :red
|
data/lib/shiprails/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shiprails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Zane Shannon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|