ecs_deployer 2.2.2 → 2.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 44c5cee885a21a7246c87d44fb432810dac14ec21fe2c706d8d0a5d5d05c95a4
4
- data.tar.gz: 634d77479c637484e95a05a45fdabf838f57baa0c4933735aaf767d3f950a3a3
2
+ SHA1:
3
+ metadata.gz: bd00fa1ac3cc92c3a9a53e46415a3ce7d14786b9
4
+ data.tar.gz: 5829d3e3415defebd527a82e4a1e27dd375b6a57
5
5
  SHA512:
6
- metadata.gz: a3ff58103c942b69fdcc203a275aa1c097019dc20af226b9862858b64982123205a37fdbe011c0199c6664ebede7d1304e2ab45ab42968ea0f62f427f89ce2e0
7
- data.tar.gz: add7ad99bf8d8bdfd832d6f743bdf968cdb7802e0c53f4190dbe5e20d1237fc5b9266be40dc78b48663951a72a7918eddfba6f9adda9788620b332f9343662f8
6
+ metadata.gz: a0421a84b469e591fe1cb8e5041b5f1b834622a2ac46338cf3fef7b1399561d043e13800ac8095c943b4c4b9128e76419a1f3ee78bad7a237c3511688569395a
7
+ data.tar.gz: 352529a94b8724e550d5cb6e797bf88f33e8edd90ee609e85ed3248e058f04230dcd44e8e14fe10c58a08e473d5741ed957a0c2c4cd50963e98c39ecb5724219
@@ -0,0 +1,30 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ docker:
5
+ - image: circleci/ruby:2.6.2
6
+ environment:
7
+ CC_TEST_REPORTER_ID: 1cb1989f71aaacc808297279555f70439ed7dcfe5fcf90248b8462c494d2cb1e
8
+ working_directory: ~/ecs_deployer
9
+ steps:
10
+ - checkout
11
+ - restore_cache:
12
+ key: bundle-{{ checksum "Gemfile.lock" }}
13
+ - run:
14
+ name: bundle install
15
+ command: bundle install --jobs=4
16
+ - save_cache:
17
+ key: bundle-{{ checksum "Gemfile.lock" }}
18
+ paths:
19
+ - vendor/bundle
20
+ - run:
21
+ name: Setup Code Climate
22
+ command: |
23
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
24
+ chmod +x ./cc-test-reporter
25
+ - run:
26
+ name: rspec test
27
+ command: |
28
+ ./cc-test-reporter before-build
29
+ bundle exec rspec
30
+ ./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
@@ -0,0 +1 @@
1
+ .git
@@ -0,0 +1,9 @@
1
+ AWS_ACCESS_KEY_ID=
2
+ AWS_SECRET_ACCESS_KEY=
3
+ AWS_REGION=ap-northeast-1
4
+ ECS_CLUSTER=
5
+ ECS_SERVICE=
6
+ ECS_TASK_PATH=./spec/fixtures/task.yml
7
+ ECS_SCHEDULED_TASK_TARGET_ID=
8
+ ECS_SCHEDULED_TASK_RULE_ID=
9
+ CLOUDWATCH_EVENT_ARN=
data/.gitignore CHANGED
@@ -1,13 +1,13 @@
1
- /.bundle/
2
1
  /.yardoc
3
2
  /Gemfile.lock
4
3
  /_yardoc/
5
4
  /doc/
6
5
  /pkg/
7
6
  /spec/reports/
8
- /tmp/
9
- /vendor/
10
- config.local.yml
11
7
 
12
8
  # rspec failure tracking
13
- .rspec_status
9
+ /.rspec_status
10
+
11
+ /coverage
12
+ .env
13
+ /example/conf/task.yml
@@ -2,7 +2,7 @@ AllCops:
2
2
  Exclude:
3
3
  - 'tmp/**/*'
4
4
  - 'vendor/**/*'
5
- Lint/RescueWithoutErrorClass:
5
+ Style/RescueStandardError:
6
6
  Enabled: false
7
7
  Style/BlockComments:
8
8
  Enabled: false
@@ -0,0 +1,7 @@
1
+ FROM ruby:2.6.3-alpine3.10
2
+
3
+ RUN apk add git build-base
4
+ WORKDIR /app
5
+
6
+ COPY . .
7
+ RUN bundle install
data/README.md CHANGED
@@ -73,40 +73,30 @@ Values are decrypted when task is created.
73
73
 
74
74
  ## Usage
75
75
 
76
- ### API
76
+ ### Register new task
77
77
 
78
- Refer to [sample code](https://github.com/naomichi-y/ecs_deployer/tree/master/example).
79
-
80
- ```ruby
81
- deployer.register_task('development.yml', tag: 'latest')
82
78
  ```
83
-
84
- ### CLI
85
-
86
- #### Register new task
87
-
88
- ```bash
89
79
  $ bundle exec ecs_deployer task-register --path=spec/fixtures/task.yml --replace-variables=tag:latest
90
80
  Registered task: arn:aws:ecs:ap-northeast-1:xxx:task-definition/nginx:latest
91
81
  ```
92
82
 
93
- #### Encrypt environment value
83
+ ### Encrypt environment value
94
84
 
95
- ```bash
85
+ ```
96
86
  $ bundle exec ecs_deployer encrypt --master-key=master --value='test'
97
87
  Encrypted value: ${xxx}
98
88
  ```
99
89
 
100
- #### Decrypt environment value
90
+ ### Decrypt environment value
101
91
 
102
- ```bash
92
+ ```
103
93
  $ bundle exec ecs_deployer decrypt --value='${xxx}'
104
94
  Decrypted value: xxx
105
95
  ```
106
96
 
107
- #### Update service
97
+ ### Update service
108
98
 
109
- ```bash
99
+ ```
110
100
  $ bundle exec ecs_deployer update-service --cluster=xxx --service=xxx --wait --wait-timeout=600
111
101
  Start deploying...
112
102
  Deploying... [0/1] (20 seconds elapsed)
@@ -129,6 +119,18 @@ New task definition: arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-dev
129
119
  Update service: arn:aws:ecs:ap-northeast-1:xxxx:service/development
130
120
  ```
131
121
 
122
+ ## SDK
123
+
124
+ ### Example
125
+ ```
126
+ $ cp .env.default .env
127
+ $ docker-compose-build
128
+
129
+ $ docker-compose run --rm ruby bundle exec ruby example/register_task.rb
130
+ $ docker-compose run --rm ruby bundle exec ruby example/update_service.rb
131
+ $ docker-compose run --rm ruby bundle exec ruby example/update_scheduled_task.rb
132
+ ```
133
+
132
134
  ## License
133
135
 
134
136
  MIT
@@ -0,0 +1,10 @@
1
+ version: '3'
2
+ services:
3
+ ruby:
4
+ container_name: ecs_deployer_ruby
5
+ build:
6
+ context: .
7
+ volumes:
8
+ - .:/app
9
+ - ${ECS_TASK_PATH}:/app/example/conf/task.yml
10
+ env_file: .env
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'ecs_deployer/version'
4
4
 
@@ -29,15 +29,13 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ['lib']
31
31
 
32
- spec.add_dependency 'aws-sdk', '>= 2.9.0'
33
- spec.add_dependency 'aws_config', '~> 0.1'
34
- spec.add_dependency 'oj', '~> 3.0'
35
- spec.add_dependency 'thor', '~> 0.19'
36
- spec.add_development_dependency 'bundler', '~> 1.13'
32
+ spec.add_dependency 'aws-sdk', '>= 3.0.1'
33
+ spec.add_dependency 'oj', '~> 3.8.1'
34
+ spec.add_dependency 'thor', '~> 0.20.3'
35
+ spec.add_development_dependency 'bundler', '~> 1.17.2'
37
36
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
38
- spec.add_development_dependency 'config', '~> 1.5.1'
39
- spec.add_development_dependency 'rake', '~> 10.0'
40
- spec.add_development_dependency 'rspec', '~> 3.0'
41
- spec.add_development_dependency 'rubocop', '~> 0.48'
42
- spec.add_development_dependency 'simplecov', '~> 0.14'
37
+ spec.add_development_dependency 'rake', '~> 12.3.3'
38
+ spec.add_development_dependency 'rspec', '~> 3.8.0'
39
+ spec.add_development_dependency 'rubocop', '~> 0.74.0'
40
+ spec.add_development_dependency 'simplecov', '~> 0.17.0'
43
41
  end
@@ -1,11 +1,5 @@
1
1
  require 'bundler/setup'
2
2
  require 'ecs_deployer'
3
- require 'config'
4
-
5
- Config.load_and_set_settings('config.yml', 'config.local.yml')
6
-
7
- task_path = File.expand_path(Settings.task_path)
8
- deployer = EcsDeployer::Client.new(Settings.cluster)
9
- task_definition = deployer.task.register(task_path, tag: 'latest')
10
3
 
4
+ task_definition = EcsDeployer::Task::Client.new.register(File.expand_path('example/conf/task.yml'), tag: 'latest')
11
5
  puts task_definition.task_definition_arn
@@ -1,20 +1,16 @@
1
1
  require 'bundler/setup'
2
2
  require 'ecs_deployer'
3
- require 'config'
4
3
 
5
- Config.load_and_set_settings('config.yml', 'config.local.yml')
6
- task_path = File.expand_path(Settings.scheduled_task_path)
4
+ task_definition = EcsDeployer::Task::Client.new.register(File.expand_path('example/conf/task.yml'), tag: 'latest')
7
5
 
8
- deployer = EcsDeployer::Client.new(Settings.cluster)
9
- task_definition = deployer.task.register(task_path, tag: 'latest')
10
-
11
- scheduled_task = deployer.scheduled_task
12
- target_builder = scheduled_task.target_builder(Settings.scheduled_task_target_id)
6
+ scheduled_task = EcsDeployer::Client.new(ENV['ECS_CLUSTER']).scheduled_task
7
+ target_builder = scheduled_task.target_builder(ENV['ECS_SCHEDULED_TASK_TARGET_ID'])
13
8
  target_builder.task_definition_arn = task_definition.task_definition_arn
14
9
  target_builder.override_container('rails', ['curl', 'http://153.122.13.159/'])
10
+ target_builder.cloudwatch_event_role_arn = ENV['CLOUDWATCH_EVENT_ARN']
15
11
 
16
12
  task_definition = scheduled_task.update(
17
- Settings.scheduled_task_rule,
13
+ ENV['ECS_SCHEDULED_TASK_RULE_ID'],
18
14
  'cron(* * * * ? *)',
19
15
  [target_builder.to_hash],
20
16
  description: 'Test task'
@@ -1,13 +1,8 @@
1
1
  require 'bundler/setup'
2
2
  require 'ecs_deployer'
3
- require 'config'
4
3
 
5
- Config.load_and_set_settings('config.yml', 'config.local.yml')
6
-
7
- task_path = File.expand_path(Settings.task_path)
8
-
9
- deployer = EcsDeployer::Client.new(Settings.cluster)
10
- task_definition = deployer.task.register(task_path, tag: 'latest')
11
- service = deployer.service.update(Settings.service, task_definition)
4
+ client = EcsDeployer::Client.new(ENV['ECS_CLUSTER'])
5
+ task_definition = EcsDeployer::Task::Client.new.register(File.expand_path('example/conf/task.yml'), tag: 'latest')
6
+ service = client.service.update(ENV['ECS_SERVICE'], task_definition)
12
7
 
13
8
  puts service.service_arn
@@ -8,7 +8,7 @@ module EcsDeployer
8
8
  # @return [EcsDeployer::Client]
9
9
  def initialize(cluster, logger = nil, aws_options = {})
10
10
  @cluster = cluster
11
- @logger = logger.nil? ? Logger.new(nil) : logger
11
+ @logger = logger.nil? ? Logger.new(STDOUT) : logger
12
12
  @aws_options = aws_options
13
13
  end
14
14
 
@@ -37,7 +37,7 @@ module EcsDeployer
37
37
  name: name,
38
38
  command: command
39
39
  }
40
- container_override[:environment] = override_environments if override_environments.count > 0
40
+ container_override[:environment] = override_environments if override_environments.count.positive?
41
41
 
42
42
  @container_overrides << container_override
43
43
  end
@@ -47,6 +47,7 @@ module EcsDeployer
47
47
  )
48
48
  result[:services].each do |svc|
49
49
  next unless svc[:service_name] == service && svc[:status] == 'ACTIVE'
50
+
50
51
  status = svc
51
52
  break
52
53
  end
@@ -148,7 +149,7 @@ module EcsDeployer
148
149
  @logger.info LOG_SEPARATOR
149
150
  end
150
151
 
151
- if result[:new_registerd_task_count] == desired_count && result[:current_task_count] == 0
152
+ if result[:new_registerd_task_count] == desired_count && result[:current_task_count].zero?
152
153
  @logger.info "Service update succeeded. [#{result[:new_registerd_task_count]}/#{desired_count}]"
153
154
  @logger.info "New task definition: #{task_definition_arn}"
154
155
 
@@ -52,7 +52,7 @@ module EcsDeployer
52
52
 
53
53
  task_definition = result[:task_definition].to_hash
54
54
 
55
- delete_keys = [:task_definition_arn, :revision, :status, :requires_attributes, :compatibilities]
55
+ delete_keys = %i[task_definition_arn revision status requires_attributes compatibilities]
56
56
  delete_keys.each do |delete_key|
57
57
  task_definition.delete(delete_key)
58
58
  end
@@ -68,7 +68,7 @@ module EcsDeployer
68
68
  # @param [Array, Hash] variables
69
69
  # @param [Hash] replace_variables
70
70
  def replace_parameter_variables!(variables, replace_variables = {})
71
- for variable in variables do
71
+ variables.each do |variable|
72
72
  if variable.class == Array || variable.class == Hash
73
73
  replace_parameter_variables!(variable, replace_variables)
74
74
  elsif variable.class == String
@@ -82,6 +82,7 @@ module EcsDeployer
82
82
  # @param [Hash] task_definition
83
83
  def decrypt_environment_variables!(task_definition)
84
84
  raise TaskDefinitionValidateError, '\'container_definition\' is undefined.' unless task_definition.key?(:container_definitions)
85
+
85
86
  task_definition[:container_definitions].each do |container_definition|
86
87
  next unless container_definition.key?(:environment)
87
88
 
@@ -3,7 +3,7 @@ require 'base64'
3
3
  module EcsDeployer
4
4
  module Util
5
5
  class Cipher
6
- ENCRYPT_VARIABLE_PATTERN = /^\${(.+)}$/
6
+ ENCRYPT_VARIABLE_PATTERN = /^\${(.+)}$/.freeze
7
7
 
8
8
  # @param [Hash] aws_options
9
9
  # @return [EcsDeployer::Util::Cipher]
@@ -1,3 +1,3 @@
1
1
  module EcsDeployer
2
- VERSION = '2.2.2'.freeze
2
+ VERSION = '2.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecs_deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - naomichi-y
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-13 00:00:00.000000000 Z
11
+ date: 2019-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -16,70 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.9.0
19
+ version: 3.0.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.0
27
- - !ruby/object:Gem::Dependency
28
- name: aws_config
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.1'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.1'
26
+ version: 3.0.1
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: oj
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '3.0'
33
+ version: 3.8.1
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '3.0'
40
+ version: 3.8.1
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: thor
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0.19'
47
+ version: 0.20.3
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0.19'
54
+ version: 0.20.3
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '1.13'
61
+ version: 1.17.2
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '1.13'
68
+ version: 1.17.2
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: codeclimate-test-reporter
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,76 +80,62 @@ dependencies:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '1.0'
97
- - !ruby/object:Gem::Dependency
98
- name: config
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 1.5.1
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 1.5.1
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: rake
113
85
  requirement: !ruby/object:Gem::Requirement
114
86
  requirements:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
- version: '10.0'
89
+ version: 12.3.3
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
93
  requirements:
122
94
  - - "~>"
123
95
  - !ruby/object:Gem::Version
124
- version: '10.0'
96
+ version: 12.3.3
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: rspec
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
101
  - - "~>"
130
102
  - !ruby/object:Gem::Version
131
- version: '3.0'
103
+ version: 3.8.0
132
104
  type: :development
133
105
  prerelease: false
134
106
  version_requirements: !ruby/object:Gem::Requirement
135
107
  requirements:
136
108
  - - "~>"
137
109
  - !ruby/object:Gem::Version
138
- version: '3.0'
110
+ version: 3.8.0
139
111
  - !ruby/object:Gem::Dependency
140
112
  name: rubocop
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
115
  - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: '0.48'
117
+ version: 0.74.0
146
118
  type: :development
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: '0.48'
124
+ version: 0.74.0
153
125
  - !ruby/object:Gem::Dependency
154
126
  name: simplecov
155
127
  requirement: !ruby/object:Gem::Requirement
156
128
  requirements:
157
129
  - - "~>"
158
130
  - !ruby/object:Gem::Version
159
- version: '0.14'
131
+ version: 0.17.0
160
132
  type: :development
161
133
  prerelease: false
162
134
  version_requirements: !ruby/object:Gem::Requirement
163
135
  requirements:
164
136
  - - "~>"
165
137
  - !ruby/object:Gem::Version
166
- version: '0.14'
138
+ version: 0.17.0
167
139
  description: Deploy Docker container on AWS ECS.
168
140
  email:
169
141
  - n.yamakita@gmail.com
@@ -172,17 +144,21 @@ executables:
172
144
  extensions: []
173
145
  extra_rdoc_files: []
174
146
  files:
147
+ - ".circleci/config.yml"
148
+ - ".dockerignore"
149
+ - ".env.default"
175
150
  - ".gitignore"
176
151
  - ".rspec"
177
152
  - ".rubocop.yml"
153
+ - Dockerfile
178
154
  - Gemfile
179
155
  - LICENSE.txt
180
156
  - README.md
181
157
  - Rakefile
182
158
  - bin/console
183
159
  - bin/setup
184
- - circle.yml
185
160
  - config.yml
161
+ - docker-compose.yml
186
162
  - ecs_deployer.gemspec
187
163
  - example/register_task.rb
188
164
  - example/update_scheduled_task.rb
@@ -218,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
194
  version: '0'
219
195
  requirements: []
220
196
  rubyforge_project:
221
- rubygems_version: 2.7.6
197
+ rubygems_version: 2.5.2.3
222
198
  signing_key:
223
199
  specification_version: 4
224
200
  summary: Deploy application to ECS.
data/circle.yml DELETED
@@ -1,7 +0,0 @@
1
- machine:
2
- ruby:
3
- version: 2.4.0
4
- test:
5
- override:
6
- - bundle exec rspec
7
- - bundle exec codeclimate-test-reporter tmp/coverage/.resultset.json