kuby-core 0.9.0 → 0.11.1
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/CHANGELOG.md +32 -0
- data/Gemfile +1 -0
- data/README.md +4 -2
- data/kuby-core.gemspec +2 -1
- data/lib/kuby-core.rb +1 -0
- data/lib/kuby.rb +14 -0
- data/lib/kuby/basic_logger.rb +1 -0
- data/lib/kuby/cli_base.rb +53 -4
- data/lib/kuby/commands.rb +29 -4
- data/lib/kuby/definition.rb +1 -0
- data/lib/kuby/dev_setup.rb +1 -0
- data/lib/kuby/docker.rb +3 -0
- data/lib/kuby/docker/alpine.rb +16 -12
- data/lib/kuby/docker/assets_phase.rb +5 -0
- data/lib/kuby/docker/bundler_phase.rb +36 -2
- data/lib/kuby/docker/cli.rb +47 -2
- data/lib/kuby/docker/copy_phase.rb +11 -3
- data/lib/kuby/docker/credentials.rb +1 -0
- data/lib/kuby/docker/debian.rb +14 -10
- data/lib/kuby/docker/dev_spec.rb +82 -18
- data/lib/kuby/docker/distro.rb +43 -0
- data/lib/kuby/docker/dockerfile.rb +67 -19
- data/lib/kuby/docker/errors.rb +9 -0
- data/lib/kuby/docker/inline_layer.rb +7 -0
- data/lib/kuby/docker/layer.rb +11 -0
- data/lib/kuby/docker/layer_stack.rb +43 -6
- data/lib/kuby/docker/local_tags.rb +23 -2
- data/lib/kuby/docker/metadata.rb +35 -7
- data/lib/kuby/docker/package_list.rb +22 -3
- data/lib/kuby/docker/package_phase.rb +25 -5
- data/lib/kuby/docker/packages.rb +1 -0
- data/lib/kuby/docker/packages/managed_package.rb +20 -2
- data/lib/kuby/docker/packages/nodejs.rb +8 -0
- data/lib/kuby/docker/packages/package.rb +15 -1
- data/lib/kuby/docker/packages/simple_managed_package.rb +10 -1
- data/lib/kuby/docker/packages/yarn.rb +14 -0
- data/lib/kuby/docker/remote_tags.rb +21 -2
- data/lib/kuby/docker/setup_phase.rb +35 -4
- data/lib/kuby/docker/spec.rb +89 -13
- data/lib/kuby/docker/tags.rb +37 -2
- data/lib/kuby/docker/timestamp_tag.rb +14 -2
- data/lib/kuby/docker/webserver_phase.rb +41 -6
- data/lib/kuby/docker/yarn_phase.rb +5 -0
- data/lib/kuby/environment.rb +4 -0
- data/lib/kuby/kubernetes.rb +1 -0
- data/lib/kuby/kubernetes/deploy_task.rb +1 -0
- data/lib/kuby/kubernetes/deployer.rb +8 -4
- data/lib/kuby/kubernetes/docker_config.rb +1 -0
- data/lib/kuby/kubernetes/docker_desktop_provider.rb +1 -0
- data/lib/kuby/kubernetes/errors.rb +1 -0
- data/lib/kuby/kubernetes/manifest.rb +1 -0
- data/lib/kuby/kubernetes/provider.rb +1 -0
- data/lib/kuby/kubernetes/registry_secret.rb +1 -0
- data/lib/kuby/kubernetes/spec.rb +1 -0
- data/lib/kuby/middleware.rb +1 -0
- data/lib/kuby/middleware/health_check.rb +1 -0
- data/lib/kuby/plugin.rb +1 -0
- data/lib/kuby/plugin_registry.rb +1 -0
- data/lib/kuby/plugins.rb +1 -0
- data/lib/kuby/plugins/nginx_ingress.rb +1 -0
- data/lib/kuby/plugins/rails_app.rb +1 -0
- data/lib/kuby/plugins/rails_app/asset_copy_task.rb +1 -0
- data/lib/kuby/plugins/rails_app/assets.rb +1 -0
- data/lib/kuby/plugins/rails_app/database.rb +10 -9
- data/lib/kuby/plugins/rails_app/generators/kuby.rb +45 -32
- data/lib/kuby/plugins/rails_app/mysql.rb +1 -3
- data/lib/kuby/plugins/rails_app/plugin.rb +13 -4
- data/lib/kuby/plugins/rails_app/postgres.rb +1 -0
- data/lib/kuby/plugins/rails_app/rewrite_db_config.rb +1 -0
- data/lib/kuby/plugins/rails_app/sqlite.rb +1 -0
- data/lib/kuby/rails_commands.rb +14 -19
- data/lib/kuby/railtie.rb +1 -0
- data/lib/kuby/tasks.rb +3 -1
- data/lib/kuby/trailing_hash.rb +5 -3
- data/lib/kuby/version.rb +3 -1
- data/spec/docker/metadata_spec.rb +1 -0
- data/spec/docker/spec_spec.rb +37 -0
- data/spec/docker/timestamp_tag_spec.rb +1 -0
- data/spec/dummy/app/channels/application_cable/channel.rb +1 -0
- data/spec/dummy/app/channels/application_cable/connection.rb +1 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -0
- data/spec/dummy/app/helpers/application_helper.rb +1 -0
- data/spec/dummy/app/jobs/application_job.rb +1 -0
- data/spec/dummy/app/mailers/application_mailer.rb +1 -0
- data/spec/dummy/app/models/application_record.rb +1 -0
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/boot.rb +1 -0
- data/spec/dummy/config/environment.rb +1 -0
- data/spec/dummy/config/environments/development.rb +1 -0
- data/spec/dummy/config/environments/production.rb +1 -0
- data/spec/dummy/config/environments/test.rb +1 -0
- data/spec/dummy/config/initializers/application_controller_renderer.rb +1 -0
- data/spec/dummy/config/initializers/assets.rb +1 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +1 -0
- data/spec/dummy/config/initializers/content_security_policy.rb +1 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +1 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +1 -0
- data/spec/dummy/config/initializers/inflections.rb +1 -0
- data/spec/dummy/config/initializers/mime_types.rb +1 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +1 -0
- data/spec/dummy/config/puma.rb +1 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/dummy/config/spring.rb +1 -0
- data/spec/dummy/db/seeds.rb +1 -0
- data/spec/dummy/test/application_system_test_case.rb +1 -0
- data/spec/dummy/test/channels/application_cable/connection_test.rb +1 -0
- data/spec/dummy/test/test_helper.rb +1 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/docker/fake_cli.rb +1 -0
- data/spec/support/docker/remote/fake_client.rb +1 -0
- data/spec/trailing_hash_spec.rb +2 -0
- metadata +20 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8664691d15dc7ba054a6986e9b62ef0ad3fc1ff7aa9e80a12595bee3029b7814
|
|
4
|
+
data.tar.gz: 1a29a74242aa420dbf1c8c50804f85b24716d479f226bd8b411fdb5794031d41
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3fd0f6fc04d728e7122287889c6013a3578b4eb4a7bc0ae8903232bbd42b99265567271a6e171ec26838259e193f042558df583c2f66ac7d90454aa2f53943ef
|
|
7
|
+
data.tar.gz: e3480ec344cd46ca020cc7f4615028490f721ed21887b1c45efcb0d17f4d2e1739741946768ed52bab8a1fa75f417ff061a5c970a331fa003520044e0cfca508
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
## 0.11.1
|
|
2
|
+
* Use integers for ports instead of strings to appease Kubernetes.
|
|
3
|
+
|
|
4
|
+
## 0.11.0
|
|
5
|
+
* Defer evaluation of database config until after Kuby has been configured.
|
|
6
|
+
- The issue that prompted this was that the `database` block was being evaluated before the Rails root had been set via `root`. Kuby couldn't find database.yml in a non-standard location and blew up with an error.
|
|
7
|
+
* Fix tests broken in 0.10.1.
|
|
8
|
+
* Set up Travis CI builds.
|
|
9
|
+
* Add a few tests for custom build phases.
|
|
10
|
+
* Add the `Environment#configured?` method that will return `true` if Kuby has been configured and `false` if configuration hasn't happened or is in progress.
|
|
11
|
+
* Add sorbet typedefs for some classes.
|
|
12
|
+
* Fix issue in Rails generator (hadn't been updated with new `environment` block).
|
|
13
|
+
* Add kuby-core.rb so Bundler setup works for Kuby without having to add a Rails initializer.
|
|
14
|
+
|
|
15
|
+
## 0.10.1
|
|
16
|
+
* Fix bug causing some `rails` and `rake` commands to not be executed.
|
|
17
|
+
* Fix issue restricting Docker CLI output.
|
|
18
|
+
|
|
19
|
+
## 0.10.0
|
|
20
|
+
* Set default database user and password in dev environment.
|
|
21
|
+
* Add ability to run rake tasks in dev environment.
|
|
22
|
+
* Disallow running rails and rake tasks in non-dev environments.
|
|
23
|
+
* Don't run database config through ERB.
|
|
24
|
+
- Rails env often isn't loaded, so ERB rendering can blow up with `NoMethodError`s, etc.
|
|
25
|
+
- All we really need to know is what database engine to stand up.
|
|
26
|
+
* Require database user/password to be added manually to Kuby config.
|
|
27
|
+
|
|
28
|
+
## 0.9.1
|
|
29
|
+
* Run dev setup when asked to.
|
|
30
|
+
- Bug caused dev setup to be skipped even when requested.
|
|
31
|
+
* Deployer should be tolerant of missing namespace.
|
|
32
|
+
|
|
1
33
|
## 0.9.0
|
|
2
34
|
* Add support for developing your app using a local Kubernetes cluster.
|
|
3
35
|
- Includes a default `:development` Kuby environment.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
## Kuby
|
|
2
2
|
|
|
3
|
+
[](https://travis-ci.com/getkuby/kuby-core)
|
|
4
|
+
|
|
3
5
|
Deploy your Rails app the easy way.
|
|
4
6
|
|
|
5
7
|
## What is Kuby?
|
|
@@ -20,11 +22,11 @@ Kuby embraces the same convention-over-configuration approach that Rails does. I
|
|
|
20
22
|
|
|
21
23
|
## Getting Started
|
|
22
24
|
|
|
23
|
-
See the [Quick Start Guide](https://
|
|
25
|
+
See the [Quick Start Guide](https://getkuby.io/docs)
|
|
24
26
|
|
|
25
27
|
## More Info
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
Check out [getkuby.io](https://getkuby.io).
|
|
28
30
|
|
|
29
31
|
## Running Tests
|
|
30
32
|
|
data/kuby-core.gemspec
CHANGED
|
@@ -20,11 +20,12 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
# See: https://github.com/Shopify/krane/blob/master/CHANGELOG.md#114
|
|
21
21
|
s.add_dependency 'krane', '>= 1.1.4', '< 2.0'
|
|
22
22
|
s.add_dependency 'kuby-cert-manager', '>= 0.3'
|
|
23
|
-
s.add_dependency 'kube-dsl', '~> 0.
|
|
23
|
+
s.add_dependency 'kube-dsl', '~> 0.4'
|
|
24
24
|
s.add_dependency 'kuby-kube-db', '>= 0.6'
|
|
25
25
|
s.add_dependency 'kubernetes-cli', '~> 0.3'
|
|
26
26
|
s.add_dependency 'railties', '>= 5.1'
|
|
27
27
|
s.add_dependency 'rouge', '~> 3.0'
|
|
28
|
+
s.add_dependency 'sorbet-runtime-stub', '~> 0.2'
|
|
28
29
|
|
|
29
30
|
s.add_development_dependency 'rspec'
|
|
30
31
|
|
data/lib/kuby-core.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'kuby'
|
data/lib/kuby.rb
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# typed: false
|
|
2
|
+
|
|
3
|
+
require 'sorbet-runtime-stub'
|
|
1
4
|
require 'kuby/railtie'
|
|
2
5
|
|
|
3
6
|
begin
|
|
@@ -23,6 +26,8 @@ module Kuby
|
|
|
23
26
|
autoload :TrailingHash, 'kuby/trailing_hash'
|
|
24
27
|
|
|
25
28
|
DEFAULT_ENV = 'development'.freeze
|
|
29
|
+
DEFAULT_DB_USER = 'root'.freeze
|
|
30
|
+
DEFAULT_DB_PASSWORD = 'password'.freeze
|
|
26
31
|
|
|
27
32
|
class UndefinedEnvironmentError < StandardError; end
|
|
28
33
|
class MissingConfigError < StandardError; end
|
|
@@ -52,6 +57,11 @@ module Kuby
|
|
|
52
57
|
kubernetes do
|
|
53
58
|
add_plugin(:rails_app) do
|
|
54
59
|
tls_enabled false
|
|
60
|
+
|
|
61
|
+
database do
|
|
62
|
+
user(DEFAULT_DB_USER) if respond_to?(:user)
|
|
63
|
+
password(DEFAULT_DB_PASSWORD) if respond_to?(:password)
|
|
64
|
+
end
|
|
55
65
|
end
|
|
56
66
|
|
|
57
67
|
provider :docker_desktop
|
|
@@ -62,6 +72,10 @@ module Kuby
|
|
|
62
72
|
env.kubernetes.after_configuration
|
|
63
73
|
end
|
|
64
74
|
|
|
75
|
+
@definition.environments.each do |_, env|
|
|
76
|
+
env.configured = true
|
|
77
|
+
end
|
|
78
|
+
|
|
65
79
|
@definition
|
|
66
80
|
end
|
|
67
81
|
|
data/lib/kuby/basic_logger.rb
CHANGED
data/lib/kuby/cli_base.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'open3'
|
|
2
3
|
require 'thread'
|
|
3
4
|
|
|
@@ -81,18 +82,42 @@ module Kuby
|
|
|
81
82
|
end
|
|
82
83
|
|
|
83
84
|
def systemm(cmd)
|
|
85
|
+
if stdout == STDOUT && stderr == STDERR
|
|
86
|
+
systemm_default(cmd)
|
|
87
|
+
else
|
|
88
|
+
systemm_open3(cmd)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def systemm_default(cmd)
|
|
93
|
+
run_before_callbacks(cmd)
|
|
94
|
+
cmd_s = cmd.join(' ')
|
|
95
|
+
system(cmd_s).tap do
|
|
96
|
+
self.last_status = $?
|
|
97
|
+
run_after_callbacks(cmd)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def systemm_open3(cmd)
|
|
84
102
|
run_before_callbacks(cmd)
|
|
85
103
|
cmd_s = cmd.join(' ')
|
|
86
104
|
|
|
87
105
|
Open3.popen3(cmd_s) do |p_stdin, p_stdout, p_stderr, wait_thread|
|
|
88
106
|
Thread.new(stdout) do |t_stdout|
|
|
89
|
-
|
|
107
|
+
begin
|
|
108
|
+
p_stdout.each { |line| t_stdout.puts(line) }
|
|
109
|
+
rescue IOError
|
|
110
|
+
end
|
|
90
111
|
end
|
|
91
112
|
|
|
92
113
|
Thread.new(stderr) do |t_stderr|
|
|
93
|
-
|
|
114
|
+
begin
|
|
115
|
+
p_stderr.each { |line| t_stderr.puts(line) }
|
|
116
|
+
rescue IOError
|
|
117
|
+
end
|
|
94
118
|
end
|
|
95
119
|
|
|
120
|
+
p_stdin.close
|
|
96
121
|
self.last_status = wait_thread.value
|
|
97
122
|
run_after_callbacks(cmd)
|
|
98
123
|
wait_thread.join
|
|
@@ -100,19 +125,43 @@ module Kuby
|
|
|
100
125
|
end
|
|
101
126
|
|
|
102
127
|
def backticks(cmd)
|
|
128
|
+
if stdout == STDOUT && stderr == STDERR
|
|
129
|
+
backticks_default(cmd)
|
|
130
|
+
else
|
|
131
|
+
backticks_open3(cmd)
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def backticks_default(cmd)
|
|
136
|
+
run_before_callbacks(cmd)
|
|
137
|
+
cmd_s = cmd.join(' ')
|
|
138
|
+
`#{cmd_s}`.tap do
|
|
139
|
+
self.last_status = $?
|
|
140
|
+
run_after_callbacks(cmd)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def backticks_open3(cmd)
|
|
103
145
|
run_before_callbacks(cmd)
|
|
104
146
|
cmd_s = cmd.join(' ')
|
|
105
147
|
result = StringIO.new
|
|
106
148
|
|
|
107
149
|
Open3.popen3(cmd_s) do |p_stdin, p_stdout, p_stderr, wait_thread|
|
|
108
150
|
Thread.new do
|
|
109
|
-
|
|
151
|
+
begin
|
|
152
|
+
p_stdout.each { |line| result.puts(line) }
|
|
153
|
+
rescue IOError
|
|
154
|
+
end
|
|
110
155
|
end
|
|
111
156
|
|
|
112
157
|
Thread.new(stderr) do |t_stderr|
|
|
113
|
-
|
|
158
|
+
begin
|
|
159
|
+
p_stderr.each { |line| t_stderr.puts(line) }
|
|
160
|
+
rescue IOError
|
|
161
|
+
end
|
|
114
162
|
end
|
|
115
163
|
|
|
164
|
+
p_stdin.close
|
|
116
165
|
self.last_status = wait_thread.value
|
|
117
166
|
run_after_callbacks(cmd)
|
|
118
167
|
wait_thread.join
|
data/lib/kuby/commands.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'kuby/version'
|
|
2
3
|
require 'gli'
|
|
3
4
|
|
|
@@ -17,9 +18,9 @@ module Kuby
|
|
|
17
18
|
# is no singleton class version of #prepend in the Ruby language).
|
|
18
19
|
singleton_class.send(:prepend, Module.new do
|
|
19
20
|
def run(args)
|
|
20
|
-
if idx = args.index('rails')
|
|
21
|
-
@rails_options = args[
|
|
22
|
-
super(args[0..
|
|
21
|
+
if idx = args.index('rails') || idx = args.index('rake')
|
|
22
|
+
@rails_options = args[idx..-1]
|
|
23
|
+
super(args[0..idx])
|
|
23
24
|
else
|
|
24
25
|
super
|
|
25
26
|
end
|
|
@@ -27,7 +28,13 @@ module Kuby
|
|
|
27
28
|
end)
|
|
28
29
|
|
|
29
30
|
def self.tasks
|
|
30
|
-
Kuby::Tasks.new(Kuby.
|
|
31
|
+
Kuby::Tasks.new(Kuby.environment)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.must_be_dev_env!
|
|
35
|
+
unless Kuby.environment.development?
|
|
36
|
+
fail "Command not supported in the '#{Kuby.environment.name}' environment"
|
|
37
|
+
end
|
|
31
38
|
end
|
|
32
39
|
|
|
33
40
|
program_desc 'Kuby command-line interface. Kuby is a convention '\
|
|
@@ -57,9 +64,16 @@ module Kuby
|
|
|
57
64
|
# commands are handled by the RailsCommands class.
|
|
58
65
|
desc 'Runs a Rails command.'
|
|
59
66
|
command :rails do |rc|
|
|
67
|
+
rc.action do |global_options, options, args|
|
|
68
|
+
must_be_dev_env!
|
|
69
|
+
exit 1 unless tasks.dev_deployment_ok
|
|
70
|
+
Kuby::RailsCommands.run(@rails_options)
|
|
71
|
+
end
|
|
72
|
+
|
|
60
73
|
rc.desc 'Runs the rails server (run `rails server --help` for options)'
|
|
61
74
|
rc.command [:server, :s] do |c|
|
|
62
75
|
c.action do |global_options, options, args|
|
|
76
|
+
must_be_dev_env!
|
|
63
77
|
exit 1 unless tasks.dev_deployment_ok
|
|
64
78
|
Kuby::RailsCommands.run(@rails_options)
|
|
65
79
|
end
|
|
@@ -68,6 +82,7 @@ module Kuby
|
|
|
68
82
|
rc.desc 'Runs a script in the Rails environment (run `rails runner --help` for options)'
|
|
69
83
|
rc.command [:runner, :r] do |c|
|
|
70
84
|
c.action do |global_options, options, args|
|
|
85
|
+
must_be_dev_env!
|
|
71
86
|
exit 1 unless tasks.dev_deployment_ok
|
|
72
87
|
Kuby::RailsCommands.run(@rails_options)
|
|
73
88
|
end
|
|
@@ -77,12 +92,22 @@ module Kuby
|
|
|
77
92
|
'(run `rails console --help` for options)'
|
|
78
93
|
rc.command [:console, :c] do |c|
|
|
79
94
|
c.action do |global_options, options, args|
|
|
95
|
+
must_be_dev_env!
|
|
80
96
|
exit 1 unless tasks.dev_deployment_ok
|
|
81
97
|
Kuby::RailsCommands.run(@rails_options)
|
|
82
98
|
end
|
|
83
99
|
end
|
|
84
100
|
end
|
|
85
101
|
|
|
102
|
+
desc 'Runs a rake task.'
|
|
103
|
+
command :rake do |rc|
|
|
104
|
+
rc.action do |global_options, options, args|
|
|
105
|
+
must_be_dev_env!
|
|
106
|
+
exit 1 unless tasks.dev_deployment_ok
|
|
107
|
+
Kuby::RailsCommands.run(@rails_options)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
86
111
|
desc 'Builds the Docker image.'
|
|
87
112
|
command :build do |c|
|
|
88
113
|
c.action do |global_options, options, args|
|
data/lib/kuby/definition.rb
CHANGED
data/lib/kuby/dev_setup.rb
CHANGED
data/lib/kuby/docker.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
|
|
1
3
|
require 'kuby/docker/errors'
|
|
2
4
|
|
|
3
5
|
module Kuby
|
|
@@ -10,6 +12,7 @@ module Kuby
|
|
|
10
12
|
autoload :Credentials, 'kuby/docker/credentials'
|
|
11
13
|
autoload :Debian, 'kuby/docker/debian'
|
|
12
14
|
autoload :DevSpec, 'kuby/docker/dev_spec'
|
|
15
|
+
autoload :Distro, 'kuby/docker/distro'
|
|
13
16
|
autoload :Dockerfile, 'kuby/docker/dockerfile'
|
|
14
17
|
autoload :InlineLayer, 'kuby/docker/inline_layer'
|
|
15
18
|
autoload :Layer, 'kuby/docker/layer'
|
data/lib/kuby/docker/alpine.rb
CHANGED
|
@@ -1,40 +1,43 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
|
|
1
3
|
module Kuby
|
|
2
4
|
module Docker
|
|
3
|
-
class Alpine
|
|
4
|
-
SHELL_EXE = '/bin/sh'.freeze
|
|
5
|
+
class Alpine < Distro
|
|
6
|
+
SHELL_EXE = T.let('/bin/sh'.freeze, String)
|
|
5
7
|
|
|
6
|
-
DEFAULT_PACKAGES = [
|
|
7
|
-
[:ca_certificates],
|
|
8
|
+
DEFAULT_PACKAGES = T.let([
|
|
9
|
+
[:ca_certificates, nil],
|
|
8
10
|
[:nodejs, '12.14.1'],
|
|
9
11
|
[:yarn, '1.21.1'],
|
|
10
|
-
[:c_toolchain],
|
|
11
|
-
[:tzdata]
|
|
12
|
-
].freeze
|
|
12
|
+
[:c_toolchain, nil],
|
|
13
|
+
[:tzdata, nil]
|
|
14
|
+
].freeze, T::Array[[Symbol, T.nilable(String)]])
|
|
13
15
|
|
|
16
|
+
sig { returns(Layer) }
|
|
14
17
|
attr_reader :phase
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
@phase = phase
|
|
18
|
-
end
|
|
19
|
-
|
|
19
|
+
sig { override.params(packages: T::Array[Distro::PackageImpl], into: Dockerfile).void }
|
|
20
20
|
def install(packages, into:)
|
|
21
21
|
dockerfile = into
|
|
22
22
|
install_managed(packages, dockerfile)
|
|
23
23
|
install_unmanaged(packages, dockerfile)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
sig { override.returns(T::Array[[Symbol, T.nilable(String)]]) }
|
|
26
27
|
def default_packages
|
|
27
28
|
DEFAULT_PACKAGES
|
|
28
29
|
end
|
|
29
30
|
|
|
31
|
+
sig { override.returns(String) }
|
|
30
32
|
def shell_exe
|
|
31
33
|
SHELL_EXE
|
|
32
34
|
end
|
|
33
35
|
|
|
34
36
|
private
|
|
35
37
|
|
|
38
|
+
sig { params(packages: T::Array[Distro::PackageImpl], dockerfile: Dockerfile).void }
|
|
36
39
|
def install_managed(packages, dockerfile)
|
|
37
|
-
pkgs = packages.select(&:managed?)
|
|
40
|
+
pkgs = T.cast(packages.select(&:managed?), T::Array[Distro::ManagedPackageImpl])
|
|
38
41
|
|
|
39
42
|
unless pkgs.empty?
|
|
40
43
|
package_names = pkgs.map { |pkg| pkg.package_name_for(:alpine) }
|
|
@@ -44,6 +47,7 @@ module Kuby
|
|
|
44
47
|
end
|
|
45
48
|
end
|
|
46
49
|
|
|
50
|
+
sig { params(packages: T::Array[Distro::PackageImpl], dockerfile: Dockerfile).void }
|
|
47
51
|
def install_unmanaged(packages, dockerfile)
|
|
48
52
|
packages
|
|
49
53
|
.reject(&:managed?)
|
|
@@ -1,12 +1,44 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
|
|
1
3
|
require 'pathname'
|
|
2
4
|
|
|
3
5
|
module Kuby
|
|
4
6
|
module Docker
|
|
5
7
|
class BundlerPhase < Layer
|
|
6
|
-
|
|
8
|
+
extend T::Sig
|
|
9
|
+
|
|
10
|
+
DEFAULT_WITHOUT = T.let(
|
|
11
|
+
['development', 'test', 'deploy'].freeze, T::Array[String]
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
sig { returns(T.nilable(String)) }
|
|
15
|
+
attr_reader :version
|
|
16
|
+
|
|
17
|
+
sig { params(version: String).void }
|
|
18
|
+
attr_writer :version
|
|
19
|
+
|
|
20
|
+
sig { returns(T.nilable(String)) }
|
|
21
|
+
attr_reader :gemfile
|
|
7
22
|
|
|
8
|
-
|
|
23
|
+
sig { params(gemfile: String).void }
|
|
24
|
+
attr_writer :gemfile
|
|
25
|
+
|
|
26
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
27
|
+
attr_reader :without
|
|
28
|
+
|
|
29
|
+
sig { params(without: T::Array[String]).void }
|
|
30
|
+
attr_writer :without
|
|
31
|
+
|
|
32
|
+
sig { params(environment: Environment).void }
|
|
33
|
+
def initialize(environment)
|
|
34
|
+
super
|
|
35
|
+
|
|
36
|
+
@version = T.let(@version, T.nilable(String))
|
|
37
|
+
@gemfile = T.let(@gemfile, T.nilable(String))
|
|
38
|
+
@without = T.let(@without, T.nilable(T::Array[String]))
|
|
39
|
+
end
|
|
9
40
|
|
|
41
|
+
sig { override.params(dockerfile: Dockerfile).void }
|
|
10
42
|
def apply_to(dockerfile)
|
|
11
43
|
gf = gemfile || default_gemfile
|
|
12
44
|
lf = "#{gf}.lock"
|
|
@@ -41,10 +73,12 @@ module Kuby
|
|
|
41
73
|
|
|
42
74
|
private
|
|
43
75
|
|
|
76
|
+
sig { returns(String) }
|
|
44
77
|
def default_version
|
|
45
78
|
Bundler::VERSION
|
|
46
79
|
end
|
|
47
80
|
|
|
81
|
+
sig { returns(String) }
|
|
48
82
|
def default_gemfile
|
|
49
83
|
Bundler
|
|
50
84
|
.definition
|