devkitkat 0.1.26 → 0.1.33

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc1ec65b940b53a2d04d473ed109dbd6b97256f09ac270f2b59edb607201b310
4
- data.tar.gz: c14fa3b11c1fe1fd4e33e92fece3bfa9e5eaf3ad233cb34cf0e5b8dfe2783a10
3
+ metadata.gz: ace209a03eb21d620b72245e0637ab380faf6a40542a18092bef7d33ed830583
4
+ data.tar.gz: 7716f985f8fec38aa5f1165d0997df890653bb025e4f0f7dfd45f88f673e8381
5
5
  SHA512:
6
- metadata.gz: b331ae89d8c5cf523fe51b0b4cc36bad069b7f5750e7b8413ec4f41896ebcded43f680e42dfff6aa44bf4755aabf9d459e1f0c4c1e1243b80977baf787c06750
7
- data.tar.gz: 78dcc4f8d93ddb3727c6f9ff254b9a4dd2ef406f7c95f07ae7bd6a216f622dc08b748811f3be5eec5d8822c2570375762d1f99063be2199589682cdc5ace505f
6
+ metadata.gz: 67ec50212126fe7cd1a30dd90018488421a8dce074828a6fd046803ee9d10019bf188c1eb60975572931b3cb888e5b89000b467cf8774c75d2c05ae380fc6771
7
+ data.tar.gz: d55adea94edc0e232edbdf07b8d45c6390befaf5ea8effcc138d4c1024aa8928ddc5208e249a0933c6049e8bfd350b3292fc884588595f1d4c07fb8afac23000
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- devkitkat (0.1.25)
4
+ devkitkat (0.1.33)
5
5
  activesupport (~> 6.0.0)
6
6
  colorize (~> 0.8.1)
7
- docker-api (~> 1.34.2)
7
+ docker-api (~> 2.0.0)
8
8
  parallel (~> 1.17.0)
9
9
  pry (~> 0.12.2)
10
10
  pry-nav
@@ -14,25 +14,25 @@ PATH
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- activesupport (6.0.2.2)
17
+ activesupport (6.0.3.4)
18
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
19
  i18n (>= 0.7, < 2)
20
20
  minitest (~> 5.1)
21
21
  tzinfo (~> 1.1)
22
- zeitwerk (~> 2.2)
23
- coderay (1.1.2)
22
+ zeitwerk (~> 2.2, >= 2.2.2)
23
+ coderay (1.1.3)
24
24
  colorize (0.8.1)
25
- concurrent-ruby (1.1.6)
25
+ concurrent-ruby (1.1.7)
26
26
  diff-lcs (1.3)
27
- docker-api (1.34.2)
27
+ docker-api (2.0.0)
28
28
  excon (>= 0.47.0)
29
29
  multi_json
30
- excon (0.73.0)
31
- i18n (1.8.2)
30
+ excon (0.78.0)
31
+ i18n (1.8.5)
32
32
  concurrent-ruby (~> 1.0)
33
33
  method_source (0.9.2)
34
- minitest (5.14.0)
35
- multi_json (1.14.1)
34
+ minitest (5.14.2)
35
+ multi_json (1.15.0)
36
36
  parallel (1.17.0)
37
37
  pry (0.12.2)
38
38
  coderay (~> 1.1.0)
@@ -60,17 +60,17 @@ GEM
60
60
  thread_safe (0.3.6)
61
61
  tzinfo (1.2.7)
62
62
  thread_safe (~> 0.1)
63
- zeitwerk (2.3.0)
63
+ zeitwerk (2.4.0)
64
64
 
65
65
  PLATFORMS
66
66
  ruby
67
67
 
68
68
  DEPENDENCIES
69
- bundler (~> 1.17)
69
+ bundler (~> 2.1.4)
70
70
  devkitkat!
71
71
  rake (~> 12.3.3)
72
72
  rspec (~> 3.0)
73
73
  rspec-temp_dir (~> 1.1.0)
74
74
 
75
75
  BUNDLED WITH
76
- 1.17.3
76
+ 2.1.4
data/README.md CHANGED
@@ -46,6 +46,20 @@ download/prepare services. These are available keys.
46
46
 
47
47
  There are pre-occupied special keys, please do not use these keys in your config file: `services:system`, `services:self`
48
48
 
49
+ ### `machine:` key
50
+
51
+ |Key |Type |Required|Default|Description|
52
+ |--- |--- |--- |---|---|
53
+ |`machine:` |Hash |No |-|The machine to run the application|
54
+ |`machine:driver` |String |No |-|The driver name, one of `none` or `docker`. Default is `none`.|
55
+ |`machine:location` |String |No |-|The machine location, one of `local` or `remote`. Default is `local`.|
56
+ |`machine:image` |String |No |-|The docker image used as the machine image.|
57
+ |`machine:extra_hosts` |Array<String>|No |-|Extra hosts to be added to `/etc/hosts` in the machine|
58
+ |`machine:network_mode` |String |No |-|Docker Network Mode, one of `bridge`, `host`.|
59
+ |`machine:extra_write_accesses` |Array<String>|No |-|Extra write access to each service. By default, a service mounts only own directory as read-write and mounts the other service directories as read-only volume. To add extra write access, you specify `'<service-name>:to:<service-name>'`|
60
+
61
+
62
+
49
63
  ## Sample `.devkitkat.yml` that runs services in local environment
50
64
 
51
65
  ```yaml
@@ -60,7 +74,9 @@ services:
60
74
  ## Sample `.devkitkat.yml` that runs services in docker containers
61
75
 
62
76
  ```yaml
63
- image: ruby:2.6
77
+ machine:
78
+ driver: docker
79
+ image: your-dev-machine-image:latest
64
80
 
65
81
  services:
66
82
  web:
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = "devkitkat"
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.17"
26
+ spec.add_development_dependency "bundler", "~> 2.1.4"
27
27
  spec.add_development_dependency "rake", "~> 12.3.3"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
29
  spec.add_development_dependency "rspec-temp_dir", "~> 1.1.0"
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
33
33
  spec.add_runtime_dependency "parallel", "~> 1.17.0"
34
34
  spec.add_runtime_dependency "ruby-progressbar", "~> 1.10.1"
35
35
  spec.add_runtime_dependency "colorize", "~> 0.8.1"
36
- spec.add_runtime_dependency "docker-api", "~> 1.34.2"
36
+ spec.add_runtime_dependency "docker-api", "~> 2.0.0"
37
37
  spec.add_runtime_dependency "require_all", "~> 3.0.0"
38
38
  end
@@ -46,6 +46,10 @@ module Devkitkat
46
46
  opts.separator ""
47
47
  opts.separator "Options:"
48
48
 
49
+ opts.on("-d", "--driver", "Machine Driver") do |v|
50
+ options[:driver] = v
51
+ end
52
+
49
53
  opts.on("-d", "--debug", "Debug mode") do |v|
50
54
  options[:debug] = v
51
55
  end
@@ -94,6 +98,8 @@ module Devkitkat
94
98
  opts.separator "clean - Clean the service dir"
95
99
  opts.separator "poop - Poop"
96
100
  opts.separator "show-variables - Show all variables via 'export' command"
101
+ opts.separator "remove-containers - Remove all related containers"
102
+ opts.separator "start-container - Start a container (dry-run)"
97
103
  end
98
104
  end
99
105
 
@@ -59,5 +59,9 @@ module Devkitkat
59
59
 
60
60
  File.join(script_dir, 'shared')
61
61
  end
62
+
63
+ def machine_driver
64
+ config.service_hash(name).dig('machine', 'driver')
65
+ end
62
66
  end
63
67
  end
@@ -84,7 +84,8 @@ module Devkitkat
84
84
  'Image' => image,
85
85
  'name' => name,
86
86
  'HostConfig' => {
87
- 'Binds' => all_mounts
87
+ 'Binds' => all_mounts,
88
+ 'Privileged' => true
88
89
  }
89
90
  }
90
91
 
@@ -121,7 +122,7 @@ module Devkitkat
121
122
  else
122
123
  "#{service.dir}:#{ROOT_IN_CONTAINER}/services/#{service.name}:ro"
123
124
  end
124
- end
125
+ end.append('/var/run/docker.sock:/var/run/docker.sock')
125
126
  end
126
127
 
127
128
  def allowed_by_extra_write_accesses?(service)
@@ -162,6 +163,7 @@ module Devkitkat
162
163
 
163
164
  prepare!(['chown', "#{user_name}:#{user_name}", ROOT_IN_CONTAINER])
164
165
  prepare!(['chown', '-R', "#{user_name}:#{user_name}", "#{ROOT_IN_CONTAINER}/services/#{service.name}"])
166
+ prepare!(['usermod', '-aG', 'docker', user_name])
165
167
  end
166
168
 
167
169
  def prepare!(cmds, params = {})
@@ -40,9 +40,11 @@ module Devkitkat
40
40
  if File.exist?(service.script_path)
41
41
  scripter.write(%Q{echo "INFO: This script is a custom script."})
42
42
  scripter.write(service.script_path)
43
+ @machine_driver = command.options[:driver]
43
44
  elsif predefined_command_available?
44
45
  scripter.write(%Q{echo "INFO: This script is a predefined script in devkitkat."})
45
46
  scripter.write(predefined_command.to_script)
47
+ @machine_driver = predefined_command.machine_driver
46
48
  else
47
49
  false
48
50
  end
@@ -51,6 +53,7 @@ module Devkitkat
51
53
  end
52
54
 
53
55
  def execute!
56
+ driver = get_driver_klass.new(service)
54
57
  driver.prepare
55
58
 
56
59
  driver.execute(scripter.file_path).tap do |result|
@@ -60,10 +63,6 @@ module Devkitkat
60
63
  driver.cleanup
61
64
  end
62
65
 
63
- def driver
64
- @driver ||= driver_klass.new(service)
65
- end
66
-
67
66
  def scripter
68
67
  @scripter ||= Scripter.new(service)
69
68
  end
@@ -80,8 +79,10 @@ module Devkitkat
80
79
  @predefined_command ||= predefined_command_klass.new(service)
81
80
  end
82
81
 
83
- def driver_klass
84
- Object.const_get("Devkitkat::Service::Driver::#{config.machine_driver.camelize}")
82
+ def get_driver_klass
83
+ driver = @machine_driver || service.machine_driver || config.machine_driver
84
+
85
+ Object.const_get("Devkitkat::Service::Driver::#{driver.camelize}")
85
86
  end
86
87
 
87
88
  def predefined_command_klass
@@ -18,9 +18,12 @@ module Devkitkat
18
18
  def predefined_global_variables
19
19
  variables = []
20
20
  variables << "export DK_ROOT_DIR=#{command.kit_root}"
21
+ variables << "export DK_COMMAND_TARGET=#{command.target}"
21
22
  variables << "export DK_MACHINE_DRIVER=#{config.machine_driver.to_s}"
22
23
  variables << "export DK_MACHINE_LOCATION=#{config.machine_location.to_s}"
23
24
  variables << "export DK_MACHINE_IMAGE=#{config.machine_image.to_s}"
25
+ variables << "export DK_MACHINE_EXTRA_HOSTS=#{config.machine_extra_hosts&.join(',').to_s}"
26
+ variables << "export DK_MACHINE_NETWORK_MODE=#{config.machine_network_mode.to_s}"
24
27
  variables << "export DK_APPLICATION=#{config.application.to_s}"
25
28
  variables
26
29
  end
@@ -36,6 +39,8 @@ module Devkitkat
36
39
  end
37
40
 
38
41
  config.service_hash(service.name).each do |key, value|
42
+ next if value.is_a?(Hash)
43
+
39
44
  variables << "export DK_#{service.name.upcase}_#{key.upcase}=#{value}"
40
45
  end
41
46
 
@@ -65,6 +70,8 @@ module Devkitkat
65
70
 
66
71
  def config_service_variables
67
72
  config.service_hash(service.name).map do |key, value|
73
+ next if value.is_a?(Hash)
74
+
68
75
  "export #{key}=#{value}"
69
76
  end
70
77
  end
@@ -26,6 +26,10 @@ fi
26
26
  def available?
27
27
  true
28
28
  end
29
+
30
+ def machine_driver
31
+ 'none'
32
+ end
29
33
  end
30
34
  end
31
35
  end
@@ -23,6 +23,10 @@ EOL
23
23
  def file_path
24
24
  File.join(command.kit_root, '.gitignore')
25
25
  end
26
+
27
+ def machine_driver
28
+ 'none'
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -29,6 +29,10 @@ fi
29
29
  def available?
30
30
  true
31
31
  end
32
+
33
+ def machine_driver
34
+ 'none'
35
+ end
32
36
  end
33
37
  end
34
38
  end
@@ -15,6 +15,10 @@ module Devkitkat
15
15
  def available?
16
16
  service.system? && !File.exist?(service.shared_script_path)
17
17
  end
18
+
19
+ def machine_driver
20
+ 'none'
21
+ end
18
22
  end
19
23
  end
20
24
  end
@@ -11,6 +11,10 @@ module Devkitkat
11
11
  def available?
12
12
  raise NotImplementedError
13
13
  end
14
+
15
+ def machine_driver
16
+ nil
17
+ end
14
18
  end
15
19
  end
16
20
  end
@@ -16,6 +16,10 @@ module Devkitkat
16
16
  def available?
17
17
  true
18
18
  end
19
+
20
+ def machine_driver
21
+ 'none'
22
+ end
19
23
  end
20
24
  end
21
25
  end
@@ -19,6 +19,10 @@ module Devkitkat
19
19
  def available?
20
20
  service.repo_defined?
21
21
  end
22
+
23
+ def machine_driver
24
+ 'none'
25
+ end
22
26
  end
23
27
  end
24
28
  end
@@ -13,6 +13,10 @@ module Devkitkat
13
13
  def available?
14
14
  service.repo_defined?
15
15
  end
16
+
17
+ def machine_driver
18
+ 'none'
19
+ end
16
20
  end
17
21
  end
18
22
  end
@@ -0,0 +1,21 @@
1
+ module Devkitkat
2
+ class Service
3
+ class PredefinedCommand
4
+ class RemoveContainers < Base
5
+ def to_script
6
+ <<~EOS
7
+ docker rm -f $(docker ps -a -f name=#{config.application}-* -q)
8
+ EOS
9
+ end
10
+
11
+ def available?
12
+ true
13
+ end
14
+
15
+ def machine_driver
16
+ 'none'
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -11,6 +11,10 @@ module Devkitkat
11
11
  def available?
12
12
  true
13
13
  end
14
+
15
+ def machine_driver
16
+ 'none'
17
+ end
14
18
  end
15
19
  end
16
20
  end
@@ -0,0 +1,21 @@
1
+ module Devkitkat
2
+ class Service
3
+ class PredefinedCommand
4
+ class StartContainer < Base
5
+ def to_script
6
+ <<~EOS
7
+ tail -f
8
+ EOS
9
+ end
10
+
11
+ def available?
12
+ true
13
+ end
14
+
15
+ def machine_driver
16
+ 'docker'
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Devkitkat
2
- VERSION = "0.1.26"
2
+ VERSION = "0.1.33"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devkitkat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.26
4
+ version: 0.1.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinya Maeda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-25 00:00:00.000000000 Z
11
+ date: 2020-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: 2.1.4
20
20
  type: :development
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: '1.17'
26
+ version: 2.1.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.34.2
159
+ version: 2.0.0
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.34.2
166
+ version: 2.0.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: require_all
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -228,7 +228,9 @@ files:
228
228
  - lib/devkitkat/service/predefined_command/poop.rb
229
229
  - lib/devkitkat/service/predefined_command/pull.rb
230
230
  - lib/devkitkat/service/predefined_command/reconfigure.rb
231
+ - lib/devkitkat/service/predefined_command/remove_containers.rb
231
232
  - lib/devkitkat/service/predefined_command/show_variables.rb
233
+ - lib/devkitkat/service/predefined_command/start_container.rb
232
234
  - lib/devkitkat/version.rb
233
235
  homepage: https://gitlab.com/dosuken123/devkitkat
234
236
  licenses:
@@ -249,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
251
  - !ruby/object:Gem::Version
250
252
  version: '0'
251
253
  requirements: []
252
- rubygems_version: 3.0.3
254
+ rubygems_version: 3.1.4
253
255
  signing_key:
254
256
  specification_version: 4
255
257
  summary: Make micro services easy