shipitron 0.1.0 → 0.2.0

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +4 -0
  3. data/.gitignore +4 -0
  4. data/.rspec +3 -0
  5. data/Dockerfile +60 -0
  6. data/Dockerfile.release +49 -0
  7. data/README.md +44 -10
  8. data/build_dev.sh +39 -0
  9. data/exe/shipitron +5 -0
  10. data/lib/shipitron/cli.rb +132 -0
  11. data/lib/shipitron/client/bootstrap_application.rb +35 -0
  12. data/lib/shipitron/client/create_ecs_services.rb +81 -0
  13. data/lib/shipitron/client/deploy_application.rb +34 -0
  14. data/lib/shipitron/client/ensure_deploy_not_running.rb +54 -0
  15. data/lib/shipitron/client/load_application_config.rb +41 -0
  16. data/lib/shipitron/client/load_templates.rb +45 -0
  17. data/lib/shipitron/client/register_ecs_task_definitions.rb +75 -0
  18. data/lib/shipitron/client/run_ecs_tasks.rb +141 -0
  19. data/lib/shipitron/consul_keys.rb +34 -0
  20. data/lib/shipitron/consul_lock.rb +28 -0
  21. data/lib/shipitron/docker_image.rb +23 -0
  22. data/lib/shipitron/ecs_client.rb +22 -0
  23. data/lib/shipitron/ecs_task_def.rb +17 -0
  24. data/lib/shipitron/fetch_bucket.rb +26 -0
  25. data/lib/shipitron/logger.rb +33 -0
  26. data/lib/shipitron/mustache_yaml_parser.rb +22 -0
  27. data/lib/shipitron/parse_templates.rb +32 -0
  28. data/lib/shipitron/post_build.rb +32 -0
  29. data/lib/shipitron/server/deploy_application.rb +75 -0
  30. data/lib/shipitron/server/docker/build_image.rb +25 -0
  31. data/lib/shipitron/server/docker/configure.rb +35 -0
  32. data/lib/shipitron/server/docker/push_image.rb +37 -0
  33. data/lib/shipitron/server/docker/run_build_script.rb +53 -0
  34. data/lib/shipitron/server/download_build_cache.rb +44 -0
  35. data/lib/shipitron/server/ecs_task_defs/map_parsed_templates.rb +31 -0
  36. data/lib/shipitron/server/ecs_task_defs/update_from_params.rb +42 -0
  37. data/lib/shipitron/server/ecs_task_defs/update_in_place.rb +68 -0
  38. data/lib/shipitron/server/git/clone_local_copy.rb +46 -0
  39. data/lib/shipitron/server/git/configure.rb +40 -0
  40. data/lib/shipitron/server/git/download_cache.rb +56 -0
  41. data/lib/shipitron/server/git/pull_repo.rb +30 -0
  42. data/lib/shipitron/server/git/update_cache.rb +52 -0
  43. data/lib/shipitron/server/git/upload_cache.rb +61 -0
  44. data/lib/shipitron/server/run_post_build.rb +79 -0
  45. data/lib/shipitron/server/transform_cli_args.rb +85 -0
  46. data/lib/shipitron/server/update_ecs_services.rb +105 -0
  47. data/lib/shipitron/server/update_ecs_task_definitions.rb +47 -0
  48. data/lib/shipitron/server/upload_build_cache.rb +43 -0
  49. data/lib/shipitron/smash.rb +10 -0
  50. data/lib/shipitron/version.rb +1 -1
  51. data/lib/shipitron.rb +38 -0
  52. data/scripts/docker-entrypoint.sh +18 -0
  53. data/scripts/fetch-bundler-data.sh +16 -0
  54. data/shipitron.gemspec +14 -0
  55. metadata +236 -4
@@ -0,0 +1,105 @@
1
+ require 'shipitron'
2
+ require 'shipitron/ecs_client'
3
+ require 'shipitron/parse_templates'
4
+
5
+ module Shipitron
6
+ module Server
7
+ class UpdateEcsServices
8
+ include Metaractor
9
+ include EcsClient
10
+
11
+ required :region
12
+ required :cluster_name
13
+ required :ecs_services
14
+ required :ecs_task_defs
15
+ optional :ecs_service_templates
16
+
17
+ before do
18
+ context.ecs_service_templates ||= []
19
+ end
20
+
21
+ def call
22
+ Logger.info "Updating ECS services [#{ecs_services.join(', ')}] with task definitions [#{ecs_task_defs.map(&:to_s).join(', ')}]"
23
+
24
+ begin
25
+ service_templates = ParseTemplates.call!(
26
+ templates: ecs_service_templates,
27
+ template_context: {
28
+ cluster: cluster_name,
29
+ revision: nil,
30
+ count: nil
31
+ }
32
+ ).parsed_templates
33
+
34
+ service_task_defs = {}
35
+
36
+ # Find all requested services
37
+ services_response = ecs_client(region: region).describe_services(
38
+ cluster: cluster_name,
39
+ services: ecs_services
40
+ )
41
+
42
+ # For each service, find the task definition it references
43
+ services_response.services.each do |service|
44
+ response = ecs_client(region: region).describe_task_definition(
45
+ task_definition: service.task_definition
46
+ )
47
+
48
+ # For the task definition, find the locally updated version in ecs_task_defs
49
+ ecs_task_def = ecs_task_defs.find {|task| task.name == response.task_definition.family }
50
+ service_task_defs[service.service_name] = ecs_task_def
51
+ end
52
+
53
+ service_task_defs.each do |ecs_service, ecs_task_def|
54
+ Logger.info "Updating #{ecs_service} with #{ecs_task_def}"
55
+
56
+ service_params = {
57
+ cluster: cluster_name,
58
+ service: ecs_service,
59
+ task_definition: ecs_task_def.name_with_revision
60
+ }
61
+
62
+ template = service_templates.find {|t| t.service_name == ecs_service }
63
+ if template != nil
64
+ if template.deployment_configuration != nil
65
+ Logger.debug "Merging deployment config: #{template.deployment_configuration}"
66
+ service_params.merge(
67
+ deployment_configuration: template.deployment_configuration
68
+ )
69
+ end
70
+ end
71
+
72
+ ecs_client(region: region).update_service(service_params)
73
+ end
74
+
75
+ rescue Aws::ECS::Errors::ServiceError => e
76
+ fail_with_errors!(messages: [
77
+ "Error: #{e.message}",
78
+ e.backtrace.join("\n")
79
+ ])
80
+ end
81
+ end
82
+
83
+ private
84
+ def region
85
+ context.region
86
+ end
87
+
88
+ def cluster_name
89
+ context.cluster_name
90
+ end
91
+
92
+ def ecs_services
93
+ context.ecs_services
94
+ end
95
+
96
+ def ecs_task_defs
97
+ context.ecs_task_defs
98
+ end
99
+
100
+ def ecs_service_templates
101
+ context.ecs_service_templates
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,47 @@
1
+ require 'shipitron'
2
+ require 'shipitron/parse_templates'
3
+ require 'shipitron/server/ecs_task_defs/map_parsed_templates'
4
+ require 'shipitron/server/ecs_task_defs/update_from_params'
5
+ require 'shipitron/server/ecs_task_defs/update_in_place'
6
+
7
+ module Shipitron
8
+ module Server
9
+ class UpdateEcsTaskDefinitions
10
+ include Metaractor
11
+ include Interactor::Organizer
12
+
13
+ required :region
14
+ required :docker_image
15
+ required :ecs_task_defs
16
+ optional :ecs_task_def_templates
17
+
18
+ before do
19
+ context.ecs_task_def_templates ||= []
20
+ context.templates = context.ecs_task_def_templates
21
+ context.template_context = { tag: docker_image.tag }
22
+ end
23
+
24
+ organize [
25
+ ParseTemplates,
26
+ EcsTaskDefs::MapParsedTemplates,
27
+ EcsTaskDefs::UpdateFromParams,
28
+ EcsTaskDefs::UpdateInPlace
29
+ ]
30
+
31
+ def call
32
+ Logger.info "Updating ECS task definitions [#{ecs_task_defs.map(&:name).join(', ')}] with image #{docker_image}"
33
+ super
34
+ Logger.info 'Done'
35
+ end
36
+
37
+ private
38
+ def docker_image
39
+ context.docker_image
40
+ end
41
+
42
+ def ecs_task_defs
43
+ context.ecs_task_defs
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,43 @@
1
+ require 'shipitron'
2
+ require 'shipitron/fetch_bucket'
3
+
4
+ module Shipitron
5
+ module Server
6
+ class UploadBuildCache
7
+ include Metaractor
8
+
9
+ required :application
10
+ required :s3_cache_bucket
11
+
12
+ def call
13
+ Logger.info "Uploading build cache to bucket #{s3_cache_bucket}"
14
+
15
+ build_cache = Pathname.new("/home/shipitron/#{application}/tmp/build-cache.tar.gz")
16
+ unless build_cache.exist?
17
+ Logger.warn 'Build cache not found.'
18
+ return
19
+ end
20
+
21
+ build_cache.open('rb') do |local_file|
22
+ bucket.files.create(
23
+ key: "#{application}.build-cache.tar.gz",
24
+ body: local_file.read
25
+ )
26
+ end
27
+ end
28
+
29
+ private
30
+ def application
31
+ context.application
32
+ end
33
+
34
+ def s3_cache_bucket
35
+ context.s3_cache_bucket
36
+ end
37
+
38
+ def bucket
39
+ @bucket ||= FetchBucket.call!(name: s3_cache_bucket).bucket
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,10 @@
1
+ require 'hashie'
2
+
3
+ module Shipitron
4
+ class Smash < Hashie::Mash
5
+ private
6
+ def convert_key(key)
7
+ key.to_sym
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Shipitron
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/shipitron.rb CHANGED
@@ -1,4 +1,42 @@
1
1
  require 'shipitron/version'
2
+ require 'hashie'
3
+ require 'shipitron/logger'
4
+ require 'metaractor'
5
+ require 'shipitron/smash'
2
6
 
3
7
  module Shipitron
8
+ CONFIG_FILE = 'shipitron/config.yml'.freeze
9
+ SECRETS_FILE = 'shipitron/secrets.yml'.freeze
10
+
11
+ class << self
12
+ def config_file
13
+ @config_file ||= CONFIG_FILE
14
+ end
15
+
16
+ def config_file=(file)
17
+ @config_file = file
18
+ end
19
+
20
+ def config
21
+ @config ||= Smash.load(config_file).merge(secrets)
22
+ rescue ArgumentError
23
+ Logger.warn "Config file '#{config_file}' does not exist"
24
+ @config = secrets
25
+ end
26
+
27
+ def secrets_file
28
+ @secrets_file ||= SECRETS_FILE
29
+ end
30
+
31
+ def secrets_file=(file)
32
+ @secrets_file = file
33
+ end
34
+
35
+ def secrets
36
+ @secrets ||= Smash.load(secrets_file)
37
+ rescue ArgumentError
38
+ Logger.warn "Secrets file '#{secrets_file}' does not exist"
39
+ @secrets = Smash.new
40
+ end
41
+ end
4
42
  end
@@ -0,0 +1,18 @@
1
+ #!/bin/dumb-init /bin/sh
2
+ set -e
3
+
4
+ if [ -n "$USE_BUNDLE_EXEC" ]; then
5
+ BINARY="bundle exec shipitron"
6
+ else
7
+ BINARY=shipitron
8
+ fi
9
+
10
+ if ${BINARY} help "$1" 2>&1 | grep -q "shipitron $1"; then
11
+ set -- gosu shipitron ${BINARY} "$@"
12
+
13
+ if [ -n "$FOG_LOCAL" ]; then
14
+ chown -R shipitron:shipitron /fog
15
+ fi
16
+ fi
17
+
18
+ exec "$@"
@@ -0,0 +1,16 @@
1
+ #!/bin/sh
2
+ set -x
3
+
4
+ if [ -z "$1" ]; then
5
+ echo 'Missing argument: bundler data host'
6
+ exit 0
7
+ fi
8
+
9
+ wget -T 2 -O /tmp/bundler-data.tar.gz http://${1}/bundler-data.tar.gz
10
+ if [ $? -ne 0 ]; then
11
+ echo 'Unable to fetch bundler data.'
12
+ else
13
+ cd /usr/local/bundle && \
14
+ tar -zxf /tmp/bundler-data.tar.gz && \
15
+ rm /tmp/bundler-data.tar.gz
16
+ fi
data/shipitron.gemspec CHANGED
@@ -17,6 +17,20 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
+ spec.add_runtime_dependency 'thor', '~> 0.19'
21
+ spec.add_runtime_dependency 'aws-sdk', '~> 2.4'
22
+ spec.add_runtime_dependency 'hashie', '~> 3.4'
23
+ spec.add_runtime_dependency 'metaractor', '~> 0.5'
24
+ spec.add_runtime_dependency 'diplomat', '~> 0.18'
25
+ spec.add_runtime_dependency 'fog-aws', '~> 0.11'
26
+ spec.add_runtime_dependency 'mime-types', '~> 3.0'
27
+ spec.add_runtime_dependency 'minitar', '~> 0.5'
28
+ spec.add_runtime_dependency 'mustache', '~> 1.0'
29
+
20
30
  spec.add_development_dependency "bundler", "~> 1.12"
21
31
  spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "pry-byebug", "~> 3.4"
33
+ spec.add_development_dependency "rspec", "~> 3.4"
34
+ spec.add_development_dependency "fivemat", "~> 1.3"
35
+ spec.add_development_dependency "fog-local", "~> 0.3"
22
36
  end
metadata CHANGED
@@ -1,15 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shipitron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Schlesinger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-02 00:00:00.000000000 Z
11
+ date: 2016-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.19'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hashie
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: metaractor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: diplomat
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.18'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.18'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fog-aws
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.11'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.11'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mime-types
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitar
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mustache
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
13
139
  - !ruby/object:Gem::Dependency
14
140
  name: bundler
15
141
  requirement: !ruby/object:Gem::Requirement
@@ -38,19 +164,125 @@ dependencies:
38
164
  - - "~>"
39
165
  - !ruby/object:Gem::Version
40
166
  version: '10.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: pry-byebug
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '3.4'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.4'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '3.4'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '3.4'
195
+ - !ruby/object:Gem::Dependency
196
+ name: fivemat
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.3'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.3'
209
+ - !ruby/object:Gem::Dependency
210
+ name: fog-local
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.3'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.3'
41
223
  description:
42
224
  email:
43
225
  - ryan@outstand.com
44
- executables: []
226
+ executables:
227
+ - shipitron
45
228
  extensions: []
46
229
  extra_rdoc_files: []
47
230
  files:
231
+ - ".dockerignore"
232
+ - ".gitignore"
233
+ - ".rspec"
234
+ - Dockerfile
235
+ - Dockerfile.release
48
236
  - Gemfile
49
237
  - LICENSE
50
238
  - README.md
51
239
  - Rakefile
240
+ - build_dev.sh
241
+ - exe/shipitron
52
242
  - lib/shipitron.rb
243
+ - lib/shipitron/cli.rb
244
+ - lib/shipitron/client/bootstrap_application.rb
245
+ - lib/shipitron/client/create_ecs_services.rb
246
+ - lib/shipitron/client/deploy_application.rb
247
+ - lib/shipitron/client/ensure_deploy_not_running.rb
248
+ - lib/shipitron/client/load_application_config.rb
249
+ - lib/shipitron/client/load_templates.rb
250
+ - lib/shipitron/client/register_ecs_task_definitions.rb
251
+ - lib/shipitron/client/run_ecs_tasks.rb
252
+ - lib/shipitron/consul_keys.rb
253
+ - lib/shipitron/consul_lock.rb
254
+ - lib/shipitron/docker_image.rb
255
+ - lib/shipitron/ecs_client.rb
256
+ - lib/shipitron/ecs_task_def.rb
257
+ - lib/shipitron/fetch_bucket.rb
258
+ - lib/shipitron/logger.rb
259
+ - lib/shipitron/mustache_yaml_parser.rb
260
+ - lib/shipitron/parse_templates.rb
261
+ - lib/shipitron/post_build.rb
262
+ - lib/shipitron/server/deploy_application.rb
263
+ - lib/shipitron/server/docker/build_image.rb
264
+ - lib/shipitron/server/docker/configure.rb
265
+ - lib/shipitron/server/docker/push_image.rb
266
+ - lib/shipitron/server/docker/run_build_script.rb
267
+ - lib/shipitron/server/download_build_cache.rb
268
+ - lib/shipitron/server/ecs_task_defs/map_parsed_templates.rb
269
+ - lib/shipitron/server/ecs_task_defs/update_from_params.rb
270
+ - lib/shipitron/server/ecs_task_defs/update_in_place.rb
271
+ - lib/shipitron/server/git/clone_local_copy.rb
272
+ - lib/shipitron/server/git/configure.rb
273
+ - lib/shipitron/server/git/download_cache.rb
274
+ - lib/shipitron/server/git/pull_repo.rb
275
+ - lib/shipitron/server/git/update_cache.rb
276
+ - lib/shipitron/server/git/upload_cache.rb
277
+ - lib/shipitron/server/run_post_build.rb
278
+ - lib/shipitron/server/transform_cli_args.rb
279
+ - lib/shipitron/server/update_ecs_services.rb
280
+ - lib/shipitron/server/update_ecs_task_definitions.rb
281
+ - lib/shipitron/server/upload_build_cache.rb
282
+ - lib/shipitron/smash.rb
53
283
  - lib/shipitron/version.rb
284
+ - scripts/docker-entrypoint.sh
285
+ - scripts/fetch-bundler-data.sh
54
286
  - shipitron.gemspec
55
287
  homepage: https://github.com/outstand/shipitron
56
288
  licenses: []
@@ -71,7 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
303
  version: '0'
72
304
  requirements: []
73
305
  rubyforge_project:
74
- rubygems_version: 2.4.8
306
+ rubygems_version: 2.6.6
75
307
  signing_key:
76
308
  specification_version: 4
77
309
  summary: A deployment tool for use with Docker and ECS.