hako 2.15.0 → 2.17.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 +4 -4
- data/.github/workflows/ci.yml +37 -0
- data/.rubocop.yml +3 -1
- data/CHANGELOG.md +18 -0
- data/README.md +1 -1
- data/examples/hello-fargate-batch.jsonnet +3 -0
- data/examples/hello-fargate.jsonnet +3 -0
- data/hako.gemspec +1 -2
- data/lib/hako/cli.rb +3 -3
- data/lib/hako/schedulers/ecs.rb +28 -3
- data/lib/hako/schedulers/ecs_elb_v2.rb +1 -1
- data/lib/hako/schedulers/ecs_service_discovery.rb +2 -2
- data/lib/hako/scripts/nginx_front.rb +2 -2
- data/lib/hako/version.rb +1 -1
- metadata +5 -19
- data/.travis.yml +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39056ee36a91a2e24c9dc59cfe7e5a0fef62c55578c31cf6aa2243d29d89ca8e
|
4
|
+
data.tar.gz: ca5ecea7f27470068cf6d69d925363fa43dfcde5bba28764e51df11e9e57cfb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c17719f1f60db1bd9c5413f6cb02005464f90bda67f5f543b6537d71796f0fe8ea9e32a267bf1000bcc48e1b98ef03c03cf4a0878cc1d8b2107e9fb405b362
|
7
|
+
data.tar.gz: 23f57698cb4d2cdf7fd59bed1c25977fefbea9868fcbd4179d860729ca0ebf372d177dd8d25d5205e6814b7edd77450837054da96d232f8844c604e743324264
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
pull_request:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
rspec:
|
10
|
+
name: RSpec
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
fail-fast: false
|
14
|
+
matrix:
|
15
|
+
ruby:
|
16
|
+
- '2.6'
|
17
|
+
- '2.7'
|
18
|
+
- '3.0'
|
19
|
+
- '3.1'
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby }}
|
25
|
+
bundler-cache: true
|
26
|
+
- run: bundle exec rspec
|
27
|
+
rubocop:
|
28
|
+
name: RuboCop
|
29
|
+
runs-on: ubuntu-latest
|
30
|
+
steps:
|
31
|
+
- uses: actions/checkout@v2
|
32
|
+
- uses: ruby/setup-ruby@v1
|
33
|
+
with:
|
34
|
+
# Use the same version with .rubocop.yml
|
35
|
+
ruby-version: 2.6
|
36
|
+
bundler-cache: true
|
37
|
+
- run: bundle exec rubocop
|
data/.rubocop.yml
CHANGED
@@ -2,7 +2,7 @@ inherit_from: .rubocop_todo.yml
|
|
2
2
|
|
3
3
|
AllCops:
|
4
4
|
DisplayCopNames: true
|
5
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.6
|
6
6
|
NewCops: disable
|
7
7
|
|
8
8
|
Layout/FirstArgumentIndentation:
|
@@ -36,6 +36,8 @@ Style/PercentLiteralDelimiters:
|
|
36
36
|
'%i': '[]'
|
37
37
|
Style/RaiseArgs:
|
38
38
|
EnforcedStyle: compact
|
39
|
+
Style/RedundantCondition:
|
40
|
+
Enabled: false
|
39
41
|
Style/SignalException:
|
40
42
|
Enabled: false
|
41
43
|
Style/SoleNestedConditional:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 2.17.0 (2022-05-31)
|
2
|
+
## New features
|
3
|
+
- Support runtime_platform option
|
4
|
+
|
5
|
+
# 2.16.0 (2022-05-02)
|
6
|
+
## New features
|
7
|
+
- Support ephemeral_storage option in ECS scheduler
|
8
|
+
|
9
|
+
## Bug fixes
|
10
|
+
- Fix keyword arguments for Ruby 3.0
|
11
|
+
|
12
|
+
## Changes
|
13
|
+
- Drop support for Ruby 2.5 (EOL on 2021-04-05)
|
14
|
+
|
15
|
+
# 2.15.1 (2021-08-06)
|
16
|
+
## Bug fixes
|
17
|
+
- Fix keyword arguments for Ruby 3.0
|
18
|
+
|
1
19
|
# 2.15.0 (2020-11-02)
|
2
20
|
## New features
|
3
21
|
- Support protocol_version and matcher option of ALB target groups
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Hako
|
2
2
|
[](http://badge.fury.io/rb/hako)
|
3
|
-
|
3
|
+

|
4
4
|
|
5
5
|
Deploy Docker container.
|
6
6
|
|
@@ -51,6 +51,9 @@ local awslogs = {
|
|
51
51
|
execution_role_arn: 'arn:aws:iam::012345678901:role/ecsTaskExecutionRole',
|
52
52
|
cpu: '1024',
|
53
53
|
memory: '2048',
|
54
|
+
ephemeral_storage: {
|
55
|
+
size_in_gi_b: '25',
|
56
|
+
},
|
54
57
|
requires_compatibilities: ['FARGATE'],
|
55
58
|
network_mode: 'awsvpc',
|
56
59
|
launch_type: 'FARGATE',
|
data/hako.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.bindir = 'exe'
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
|
-
spec.required_ruby_version = '>= 2.
|
22
|
+
spec.required_ruby_version = '>= 2.6.0'
|
23
23
|
|
24
24
|
spec.add_dependency 'aws-sdk-applicationautoscaling'
|
25
25
|
spec.add_dependency 'aws-sdk-autoscaling'
|
@@ -36,7 +36,6 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency 'jsonnet'
|
37
37
|
|
38
38
|
spec.add_development_dependency 'bundler'
|
39
|
-
spec.add_development_dependency 'coveralls'
|
40
39
|
spec.add_development_dependency 'rake'
|
41
40
|
spec.add_development_dependency 'rspec'
|
42
41
|
spec.add_development_dependency 'rubocop', '>= 0.53.0'
|
data/lib/hako/cli.rb
CHANGED
@@ -73,7 +73,7 @@ module Hako
|
|
73
73
|
else
|
74
74
|
{}
|
75
75
|
end
|
76
|
-
Commander.new(Application.new(@definition_path, options)).deploy(force: @force, tag: @tag, dry_run: @dry_run, timeout: @timeout)
|
76
|
+
Commander.new(Application.new(@definition_path, **options)).deploy(force: @force, tag: @tag, dry_run: @dry_run, timeout: @timeout)
|
77
77
|
end
|
78
78
|
|
79
79
|
DEFAULT_TIMEOUT = 1200 # 20 minutes
|
@@ -121,7 +121,7 @@ module Hako
|
|
121
121
|
else
|
122
122
|
{}
|
123
123
|
end
|
124
|
-
Commander.new(Application.new(@definition_path, options)).rollback(dry_run: @dry_run)
|
124
|
+
Commander.new(Application.new(@definition_path, **options)).rollback(dry_run: @dry_run)
|
125
125
|
end
|
126
126
|
|
127
127
|
def parse!(argv)
|
@@ -164,7 +164,7 @@ module Hako
|
|
164
164
|
else
|
165
165
|
{}
|
166
166
|
end
|
167
|
-
Commander.new(Application.new(@definition_path, options)).oneshot(@argv, tag: @tag, containers: @containers, env: @env, dry_run: @dry_run, no_wait: @no_wait, overrides: @overrides)
|
167
|
+
Commander.new(Application.new(@definition_path, **options)).oneshot(@argv, tag: @tag, containers: @containers, env: @env, dry_run: @dry_run, no_wait: @no_wait, overrides: @overrides)
|
168
168
|
end
|
169
169
|
|
170
170
|
def parse!(argv)
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -72,7 +72,22 @@ module Hako
|
|
72
72
|
@execution_role_arn = options.fetch('execution_role_arn', nil)
|
73
73
|
@cpu = options.fetch('cpu', nil)
|
74
74
|
@memory = options.fetch('memory', nil)
|
75
|
+
if options.key?('ephemeral_storage')
|
76
|
+
ephemeral_storage = options.fetch('ephemeral_storage')
|
77
|
+
if ephemeral_storage.key?('size_in_gi_b')
|
78
|
+
@ephemeral_storage = {
|
79
|
+
size_in_gi_b: ephemeral_storage.fetch('size_in_gi_b')
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
75
83
|
@requires_compatibilities = options.fetch('requires_compatibilities', nil)
|
84
|
+
if options.key?('runtime_platform')
|
85
|
+
runtime_platform = options.fetch('runtime_platform')
|
86
|
+
@runtime_platform = {
|
87
|
+
cpu_architecture: runtime_platform.fetch('cpu_architecture', nil),
|
88
|
+
operating_system_family: runtime_platform.fetch('operating_system_family', nil),
|
89
|
+
}
|
90
|
+
end
|
76
91
|
@launch_type = options.fetch('launch_type', nil)
|
77
92
|
if options.key?('capacity_provider_strategy')
|
78
93
|
@capacity_provider_strategy = options.fetch('capacity_provider_strategy').map do |strategy|
|
@@ -515,6 +530,12 @@ module Hako
|
|
515
530
|
if actual_definition.requires_compatibilities != @requires_compatibilities
|
516
531
|
return true
|
517
532
|
end
|
533
|
+
if actual_definition.runtime_platform != @runtime_platform
|
534
|
+
return true
|
535
|
+
end
|
536
|
+
if actual_definition.ephemeral_storage != @ephemeral_storage
|
537
|
+
return true
|
538
|
+
end
|
518
539
|
|
519
540
|
actual_tags_set = Set.new(actual_tags.map { |t| { key: t.key, value: t.value } })
|
520
541
|
tags_set = Set.new(@tags)
|
@@ -555,8 +576,10 @@ module Hako
|
|
555
576
|
container_definitions: definitions,
|
556
577
|
volumes: volumes_definition,
|
557
578
|
requires_compatibilities: @requires_compatibilities,
|
579
|
+
runtime_platform: @runtime_platform,
|
558
580
|
cpu: @cpu,
|
559
581
|
memory: @memory,
|
582
|
+
ephemeral_storage: @ephemeral_storage,
|
560
583
|
tags: @tags.empty? ? nil : @tags,
|
561
584
|
).task_definition
|
562
585
|
[true, new_task_definition]
|
@@ -591,8 +614,10 @@ module Hako
|
|
591
614
|
container_definitions: definitions,
|
592
615
|
volumes: volumes_definition,
|
593
616
|
requires_compatibilities: @requires_compatibilities,
|
617
|
+
runtime_platform: @runtime_platform,
|
594
618
|
cpu: @cpu,
|
595
619
|
memory: @memory,
|
620
|
+
ephemeral_storage: @ephemeral_storage,
|
596
621
|
tags: @tags.empty? ? nil : @tags,
|
597
622
|
).task_definition
|
598
623
|
return [true, new_task_definition]
|
@@ -916,7 +941,7 @@ module Hako
|
|
916
941
|
warn_placement_policy_change(current_service)
|
917
942
|
warn_service_registries_change(current_service)
|
918
943
|
if service_changed?(current_service, params)
|
919
|
-
ecs_client.update_service(params).service
|
944
|
+
ecs_client.update_service(**params).service
|
920
945
|
else
|
921
946
|
:noop
|
922
947
|
end
|
@@ -952,7 +977,7 @@ module Hako
|
|
952
977
|
@service_discovery.apply
|
953
978
|
params[:service_registries] = @service_discovery.service_registries
|
954
979
|
end
|
955
|
-
ecs_client.create_service(params).service
|
980
|
+
ecs_client.create_service(**params).service
|
956
981
|
end
|
957
982
|
|
958
983
|
# @param [Aws::ECS::Types::Service] service
|
@@ -1322,7 +1347,7 @@ module Hako
|
|
1322
1347
|
when 'NONE'
|
1323
1348
|
cmd << '--no-healthcheck'
|
1324
1349
|
when 'CMD', 'CMD-SHELL'
|
1325
|
-
health_check_command = definition[:health_check][:command][1
|
1350
|
+
health_check_command = definition[:health_check][:command][1..].join(' ')
|
1326
1351
|
cmd << '--health-cmd' << health_check_command.inspect
|
1327
1352
|
else
|
1328
1353
|
raise "Health check command type #{health_check_command_type} is not supported. CMD, CMD-SHELL and NONE are supported."
|
@@ -127,7 +127,7 @@ module Hako
|
|
127
127
|
end
|
128
128
|
|
129
129
|
unless listener_ports.include?(params[:port])
|
130
|
-
listener = elb_client.create_listener(params).listeners[0]
|
130
|
+
listener = elb_client.create_listener(**params).listeners[0]
|
131
131
|
Hako.logger.info("Created listener #{listener.listener_arn}")
|
132
132
|
end
|
133
133
|
end
|
@@ -134,7 +134,7 @@ module Hako
|
|
134
134
|
condition: 'EQ',
|
135
135
|
],
|
136
136
|
}
|
137
|
-
services = service_discovery_client.list_services(params).flat_map(&:services)
|
137
|
+
services = service_discovery_client.list_services(**params).flat_map(&:services)
|
138
138
|
services.find { |service| service.name == service_name }
|
139
139
|
end
|
140
140
|
|
@@ -146,7 +146,7 @@ module Hako
|
|
146
146
|
# @param [Hash] service
|
147
147
|
# @return [Aws::ServiceDiscovery::Types::Service]
|
148
148
|
def create_service(service)
|
149
|
-
service_discovery_client.create_service(create_service_params(service)).service
|
149
|
+
service_discovery_client.create_service(**create_service_params(service)).service
|
150
150
|
end
|
151
151
|
|
152
152
|
# @param [Hash] service
|
@@ -107,7 +107,7 @@ module Hako
|
|
107
107
|
|
108
108
|
# @return [String]
|
109
109
|
def render
|
110
|
-
ERB.new(File.read(nginx_conf_erb),
|
110
|
+
ERB.new(File.read(nginx_conf_erb), trim_mode: '-').result(binding)
|
111
111
|
end
|
112
112
|
|
113
113
|
private
|
@@ -150,7 +150,7 @@ module Hako
|
|
150
150
|
# @param [Location] location
|
151
151
|
# @return [String]
|
152
152
|
def render_location(listen_spec, location)
|
153
|
-
ERB.new(File.read(nginx_location_conf_erb),
|
153
|
+
ERB.new(File.read(nginx_location_conf_erb), trim_mode: '-').result(binding).each_line.map do |line|
|
154
154
|
" #{line}"
|
155
155
|
end.join('')
|
156
156
|
end
|
data/lib/hako/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hako
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kohei Suzuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-applicationautoscaling
|
@@ -206,20 +206,6 @@ dependencies:
|
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: coveralls
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - ">="
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
-
type: :development
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - ">="
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
210
|
name: rake
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -298,11 +284,11 @@ executables:
|
|
298
284
|
extensions: []
|
299
285
|
extra_rdoc_files: []
|
300
286
|
files:
|
287
|
+
- ".github/workflows/ci.yml"
|
301
288
|
- ".gitignore"
|
302
289
|
- ".rspec"
|
303
290
|
- ".rubocop.yml"
|
304
291
|
- ".rubocop_todo.yml"
|
305
|
-
- ".travis.yml"
|
306
292
|
- ".yardopts"
|
307
293
|
- CHANGELOG.md
|
308
294
|
- Gemfile
|
@@ -391,14 +377,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
391
377
|
requirements:
|
392
378
|
- - ">="
|
393
379
|
- !ruby/object:Gem::Version
|
394
|
-
version: 2.
|
380
|
+
version: 2.6.0
|
395
381
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
396
382
|
requirements:
|
397
383
|
- - ">="
|
398
384
|
- !ruby/object:Gem::Version
|
399
385
|
version: '0'
|
400
386
|
requirements: []
|
401
|
-
rubygems_version: 3.
|
387
|
+
rubygems_version: 3.2.32
|
402
388
|
signing_key:
|
403
389
|
specification_version: 4
|
404
390
|
summary: Deploy Docker container
|