ecs_deploy 0.3.0 → 1.0.2

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.
@@ -1,37 +1,54 @@
1
1
  module EcsDeploy
2
2
  class TaskDefinition
3
+ RETRY_BACKOFF = lambda do |c|
4
+ sleep(1)
5
+ end
6
+
7
+ RETRY_LIMIT = 10
8
+
3
9
  def self.deregister(arn, region: nil)
4
- region = region || EcsDeploy.config.default_region || ENV["AWS_DEFAULT_REGION"]
5
- client = Aws::ECS::Client.new(region: region)
10
+ region ||= EcsDeploy.config.default_region
11
+ param = {retry_backoff: RETRY_BACKOFF, retry_limit: RETRY_LIMIT}
12
+ client = region ? Aws::ECS::Client.new(param.merge(region: region)) : Aws::ECS::Client.new(param)
6
13
  client.deregister_task_definition({
7
14
  task_definition: arn,
8
15
  })
9
- EcsDeploy.logger.info "deregister task definition [#{arn}] [#{region}] [#{Paint['OK', :green]}]"
16
+ EcsDeploy.logger.info "deregister task definition [#{arn}] [#{client.config.region}] [#{Paint['OK', :green]}]"
10
17
  end
11
18
 
12
19
  def initialize(
13
20
  task_definition_name:, region: nil,
14
21
  network_mode: "bridge", volumes: [], container_definitions: [], placement_constraints: [],
15
- task_role_arn: nil
22
+ task_role_arn: nil,
23
+ execution_role_arn: nil,
24
+ requires_compatibilities: nil,
25
+ cpu: nil, memory: nil,
26
+ tags: nil
16
27
  )
17
28
  @task_definition_name = task_definition_name
18
29
  @task_role_arn = task_role_arn
19
- @region = region || EcsDeploy.config.default_region || ENV["AWS_DEFAULT_REGION"]
30
+ @execution_role_arn = execution_role_arn
31
+ region ||= EcsDeploy.config.default_region
20
32
 
21
33
  @container_definitions = container_definitions.map do |cd|
22
34
  if cd[:docker_labels]
23
35
  cd[:docker_labels] = cd[:docker_labels].map { |k, v| [k.to_s, v] }.to_h
24
36
  end
25
- if cd[:log_configuration] && cd[:log_configuration][:options]
26
- cd[:log_configuration][:options] = cd[:log_configuration][:options].map { |k, v| [k.to_s, v] }.to_h
37
+ if cd.dig(:log_configuration, :options)
38
+ cd[:log_configuration][:options] = cd.dig(:log_configuration, :options).map { |k, v| [k.to_s, v] }.to_h
27
39
  end
28
40
  cd
29
41
  end
30
42
  @volumes = volumes
31
43
  @network_mode = network_mode
32
44
  @placement_constraints = placement_constraints
33
-
34
- @client = Aws::ECS::Client.new(region: @region)
45
+ @requires_compatibilities = requires_compatibilities
46
+ @cpu = cpu&.to_s
47
+ @memory = memory&.to_s
48
+ @tags = tags
49
+ param = {retry_backoff: RETRY_BACKOFF, retry_limit: RETRY_LIMIT}
50
+ @client = region ? Aws::ECS::Client.new(param.merge(region: region)) : Aws::ECS::Client.new(param)
51
+ @region = @client.config.region
35
52
  end
36
53
 
37
54
  def recent_task_definition_arns
@@ -52,45 +69,13 @@ module EcsDeploy
52
69
  volumes: @volumes,
53
70
  placement_constraints: @placement_constraints,
54
71
  task_role_arn: @task_role_arn,
72
+ execution_role_arn: @execution_role_arn,
73
+ requires_compatibilities: @requires_compatibilities,
74
+ cpu: @cpu, memory: @memory,
75
+ tags: @tags
55
76
  })
56
77
  EcsDeploy.logger.info "register task definition [#{@task_definition_name}] [#{@region}] [#{Paint['OK', :green]}]"
57
78
  res.task_definition
58
79
  end
59
-
60
- def run(info)
61
- resp = @client.run_task({
62
- cluster: info[:cluster],
63
- task_definition: @task_definition_name,
64
- overrides: {
65
- container_overrides: info[:container_overrides] || []
66
- },
67
- count: info[:count] || 1,
68
- started_by: "capistrano",
69
- })
70
- unless resp.failures.empty?
71
- resp.failures.each do |f|
72
- raise "#{f.arn}: #{f.reason}"
73
- end
74
- end
75
-
76
- wait_targets = Array(info[:wait_stop])
77
- unless wait_targets.empty?
78
- @client.wait_until(:tasks_running, cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
79
- @client.wait_until(:tasks_stopped, cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
80
-
81
- resp = @client.describe_tasks(cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
82
- resp.tasks.each do |t|
83
- t.containers.each do |c|
84
- next unless wait_targets.include?(c.name)
85
-
86
- unless c.exit_code.zero?
87
- raise "Task has errors: #{c.reason}"
88
- end
89
- end
90
- end
91
- end
92
-
93
- EcsDeploy.logger.info "run task [#{@task_definition_name} #{info.inspect}] [#{@region}] [#{Paint['OK', :green]}]"
94
- end
95
80
  end
96
81
  end
@@ -1,3 +1,3 @@
1
1
  module EcsDeploy
2
- VERSION = "0.3.0"
2
+ VERSION = "1.0.2"
3
3
  end
metadata CHANGED
@@ -1,29 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecs_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - joker1007
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-03 00:00:00.000000000 Z
11
+ date: 2021-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk
14
+ name: aws-sdk-autoscaling
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.9'
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.9'
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-cloudwatch
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aws-sdk-cloudwatchevents
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aws-sdk-ec2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-ecs
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-sqs
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
27
97
  - !ruby/object:Gem::Dependency
28
98
  name: terminal-table
29
99
  requirement: !ruby/object:Gem::Requirement
@@ -56,30 +126,50 @@ dependencies:
56
126
  name: bundler
57
127
  requirement: !ruby/object:Gem::Requirement
58
128
  requirements:
59
- - - "~>"
129
+ - - ">="
60
130
  - !ruby/object:Gem::Version
61
131
  version: '1.11'
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '3'
62
135
  type: :development
63
136
  prerelease: false
64
137
  version_requirements: !ruby/object:Gem::Requirement
65
138
  requirements:
66
- - - "~>"
139
+ - - ">="
67
140
  - !ruby/object:Gem::Version
68
141
  version: '1.11'
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: '3'
69
145
  - !ruby/object:Gem::Dependency
70
146
  name: rake
71
147
  requirement: !ruby/object:Gem::Requirement
72
148
  requirements:
73
- - - "~>"
149
+ - - ">="
74
150
  - !ruby/object:Gem::Version
75
151
  version: '10.0'
76
152
  type: :development
77
153
  prerelease: false
78
154
  version_requirements: !ruby/object:Gem::Requirement
79
155
  requirements:
80
- - - "~>"
156
+ - - ">="
81
157
  - !ruby/object:Gem::Version
82
158
  version: '10.0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rspec
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '3.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.0'
83
173
  description: AWS ECS deploy helper
84
174
  email:
85
175
  - kakyoin.hierophant@gmail.com
@@ -89,6 +179,8 @@ extensions: []
89
179
  extra_rdoc_files: []
90
180
  files:
91
181
  - ".gitignore"
182
+ - ".travis.yml"
183
+ - CHANGELOG.md
92
184
  - Gemfile
93
185
  - README.md
94
186
  - Rakefile
@@ -98,8 +190,16 @@ files:
98
190
  - exe/ecs_auto_scaler
99
191
  - lib/ecs_deploy.rb
100
192
  - lib/ecs_deploy/auto_scaler.rb
193
+ - lib/ecs_deploy/auto_scaler/auto_scaling_group_config.rb
194
+ - lib/ecs_deploy/auto_scaler/cluster_resource_manager.rb
195
+ - lib/ecs_deploy/auto_scaler/config_base.rb
196
+ - lib/ecs_deploy/auto_scaler/instance_drainer.rb
197
+ - lib/ecs_deploy/auto_scaler/service_config.rb
198
+ - lib/ecs_deploy/auto_scaler/spot_fleet_request_config.rb
199
+ - lib/ecs_deploy/auto_scaler/trigger_config.rb
101
200
  - lib/ecs_deploy/capistrano.rb
102
201
  - lib/ecs_deploy/configuration.rb
202
+ - lib/ecs_deploy/instance_fluctuation_manager.rb
103
203
  - lib/ecs_deploy/scheduled_task.rb
104
204
  - lib/ecs_deploy/service.rb
105
205
  - lib/ecs_deploy/task_definition.rb
@@ -107,7 +207,7 @@ files:
107
207
  homepage: https://github.com/reproio/ecs_deploy
108
208
  licenses: []
109
209
  metadata: {}
110
- post_install_message:
210
+ post_install_message:
111
211
  rdoc_options: []
112
212
  require_paths:
113
213
  - lib
@@ -122,9 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
222
  - !ruby/object:Gem::Version
123
223
  version: '0'
124
224
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.6.12
127
- signing_key:
225
+ rubygems_version: 3.2.15
226
+ signing_key:
128
227
  specification_version: 4
129
228
  summary: AWS ECS deploy helper
130
229
  test_files: []