kuby-core 0.17.0 → 0.18.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/CHANGELOG.md +44 -0
- data/Gemfile +6 -2
- data/Rakefile +5 -3
- data/bin/tapioca +29 -0
- data/kuby-core.gemspec +9 -11
- data/lib/kuby/basic_logger.rb +34 -34
- data/lib/kuby/cli_base.rb +43 -43
- data/lib/kuby/commands.rb +94 -11
- data/lib/kuby/definition.rb +12 -12
- data/lib/kuby/dependable.rb +20 -0
- data/lib/kuby/dependency.rb +14 -0
- data/lib/kuby/docker/alpine.rb +10 -10
- data/lib/kuby/docker/app_image.rb +11 -11
- data/lib/kuby/docker/app_phase.rb +36 -0
- data/lib/kuby/docker/assets_phase.rb +2 -2
- data/lib/kuby/docker/bundler_phase.rb +42 -40
- data/lib/kuby/docker/cli.rb +71 -43
- data/lib/kuby/docker/copy_phase.rb +7 -7
- data/lib/kuby/docker/credentials.rb +1 -0
- data/lib/kuby/docker/debian.rb +10 -10
- data/lib/kuby/docker/distro.rb +13 -13
- data/lib/kuby/docker/docker_uri.rb +20 -20
- data/lib/kuby/docker/dockerfile.rb +48 -39
- data/lib/kuby/docker/image.rb +66 -54
- data/lib/kuby/docker/inline_layer.rb +4 -4
- data/lib/kuby/docker/layer.rb +6 -6
- data/lib/kuby/docker/layer_stack.rb +35 -35
- data/lib/kuby/docker/local_tags.rb +16 -16
- data/lib/kuby/docker/package_list.rb +16 -16
- data/lib/kuby/docker/package_phase.rb +16 -16
- data/lib/kuby/docker/packages/managed_package.rb +13 -13
- data/lib/kuby/docker/packages/nodejs.rb +5 -5
- data/lib/kuby/docker/packages/package.rb +8 -8
- data/lib/kuby/docker/packages/simple_managed_package.rb +7 -7
- data/lib/kuby/docker/packages/yarn.rb +6 -6
- data/lib/kuby/docker/remote_tags.rb +16 -16
- data/lib/kuby/docker/setup_phase.rb +18 -20
- data/lib/kuby/docker/spec.rb +93 -72
- data/lib/kuby/docker/timestamp_tag.rb +16 -11
- data/lib/kuby/docker/timestamped_image.rb +59 -40
- data/lib/kuby/docker/webserver_phase.rb +20 -20
- data/lib/kuby/docker/yarn_phase.rb +29 -5
- data/lib/kuby/docker.rb +2 -1
- data/lib/kuby/kubernetes/bare_metal_provider.rb +9 -9
- data/lib/kuby/kubernetes/deployer.rb +22 -10
- data/lib/kuby/kubernetes/docker_config.rb +1 -0
- data/lib/kuby/kubernetes/provider.rb +1 -0
- data/lib/kuby/kubernetes/spec.rb +47 -7
- data/lib/kuby/plugin.rb +22 -1
- data/lib/kuby/plugins/nginx_ingress.rb +8 -6
- data/lib/kuby/plugins/rails_app/assets.rb +16 -4
- data/lib/kuby/plugins/rails_app/assets_image.rb +17 -8
- data/lib/kuby/plugins/rails_app/crdb/plugin.rb +473 -0
- data/lib/kuby/plugins/rails_app/crdb.rb +9 -0
- data/lib/kuby/plugins/rails_app/database.rb +12 -8
- data/lib/kuby/plugins/rails_app/generators/kuby.rb +17 -16
- data/lib/kuby/plugins/rails_app/plugin.rb +29 -18
- data/lib/kuby/plugins/rails_app/sqlite.rb +7 -3
- data/lib/kuby/plugins/rails_app/tasks.rake +25 -12
- data/lib/kuby/plugins/rails_app.rb +1 -0
- data/lib/kuby/plugins/system.rb +16 -0
- data/lib/kuby/plugins.rb +1 -0
- data/lib/kuby/railtie.rb +31 -1
- data/lib/kuby/tasks.rb +72 -5
- data/lib/kuby/trailing_hash.rb +2 -2
- data/lib/kuby/utils/sem_ver/constraint.rb +68 -0
- data/lib/kuby/utils/sem_ver/constraint_set.rb +25 -0
- data/lib/kuby/utils/sem_ver/version.rb +49 -0
- data/lib/kuby/utils/sem_ver.rb +17 -0
- data/lib/kuby/utils/which.rb +65 -0
- data/lib/kuby/utils.rb +7 -1
- data/lib/kuby/version.rb +1 -1
- data/lib/kuby.rb +37 -2
- data/rbi/kuby-core.rbi +2128 -0
- data/spec/docker/spec_spec.rb +50 -26
- data/spec/dummy/app/channels/application_cable/channel.rb +2 -1
- data/spec/dummy/app/channels/application_cable/connection.rb +2 -1
- data/spec/dummy/app/controllers/application_controller.rb +2 -1
- data/spec/dummy/app/jobs/application_job.rb +2 -1
- data/spec/dummy/app/mailers/application_mailer.rb +2 -1
- data/spec/dummy/app/models/application_record.rb +2 -1
- data/spec/dummy/config/application.rb +2 -1
- data/spec/dummy/config/initializers/wrap_parameters.rb +2 -1
- data/spec/dummy/config/routes.rb +2 -1
- data/spec/dummy/test/application_system_test_case.rb +2 -1
- data/spec/dummy/test/channels/application_cable/connection_test.rb +2 -1
- data/spec/spec_helper.rb +13 -1
- metadata +44 -39
- data/lib/kuby/plugins/rails_app/mysql.rb +0 -158
- data/lib/kuby/plugins/rails_app/postgres.rb +0 -163
data/spec/docker/spec_spec.rb
CHANGED
@@ -12,7 +12,9 @@ describe Kuby::Docker::Spec do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
context 'when the distro is set to Alpine' do
|
15
|
-
before
|
15
|
+
before do
|
16
|
+
on_define { |env| env.docker.distro(:alpine) }
|
17
|
+
end
|
16
18
|
|
17
19
|
it 'uses the Alpine base image' do
|
18
20
|
expect(subject).to include("FROM ruby:#{RUBY_VERSION}-alpine\n")
|
@@ -20,7 +22,9 @@ describe Kuby::Docker::Spec do
|
|
20
22
|
end
|
21
23
|
|
22
24
|
context 'when the base image is set to something custom' do
|
23
|
-
before
|
25
|
+
before do
|
26
|
+
on_define { |env| env.docker.base_image('foo/bar') }
|
27
|
+
end
|
24
28
|
|
25
29
|
it 'uses the base image as given' do
|
26
30
|
expect(subject).to include("FROM foo/bar\n")
|
@@ -42,7 +46,9 @@ describe Kuby::Docker::Spec do
|
|
42
46
|
end
|
43
47
|
|
44
48
|
context 'when the working dir is set to something custom' do
|
45
|
-
before
|
49
|
+
before do
|
50
|
+
on_define { |env| env.docker.working_dir('/foo/bar') }
|
51
|
+
end
|
46
52
|
|
47
53
|
it 'uses the working dir as given' do
|
48
54
|
expect(subject).to include("WORKDIR /foo/bar\n")
|
@@ -59,7 +65,9 @@ describe Kuby::Docker::Spec do
|
|
59
65
|
end
|
60
66
|
|
61
67
|
context 'when the environment is set to something custom' do
|
62
|
-
before
|
68
|
+
before do
|
69
|
+
on_define { |env| env.docker.rails_env('foobar') }
|
70
|
+
end
|
63
71
|
|
64
72
|
it 'uses the environment as given' do
|
65
73
|
expect(subject).to include("ENV RAILS_ENV=foobar\n")
|
@@ -81,7 +89,9 @@ describe Kuby::Docker::Spec do
|
|
81
89
|
end
|
82
90
|
|
83
91
|
context 'when the bundler version is set to something custom' do
|
84
|
-
before
|
92
|
+
before do
|
93
|
+
on_define { |env| env.docker.bundler_version('1.17.3') }
|
94
|
+
end
|
85
95
|
|
86
96
|
it 'installs the given version' do
|
87
97
|
expect(subject).to include("RUN gem install bundler -v 1.17.3\n")
|
@@ -93,30 +103,34 @@ describe Kuby::Docker::Spec do
|
|
93
103
|
subject { spec.image.dockerfile.to_s }
|
94
104
|
|
95
105
|
it 'uses the default Gemfile' do
|
96
|
-
expect(subject).to include("COPY Gemfile
|
97
|
-
expect(subject).to include("COPY Gemfile.lock
|
98
|
-
expect(subject).to
|
106
|
+
expect(subject).to include("COPY Gemfile /usr/src/app/Gemfile\n")
|
107
|
+
expect(subject).to include("COPY Gemfile.lock /usr/src/app/Gemfile.lock\n")
|
108
|
+
expect(subject).to include("ENV BUNDLE_GEMFILE=/usr/src/app/Gemfile")
|
99
109
|
end
|
100
110
|
|
101
111
|
context 'when the gemfile path is set to something custom' do
|
102
|
-
before
|
112
|
+
before do
|
113
|
+
on_define { |env| env.docker.gemfile('foo/bar/Gemfile') }
|
114
|
+
end
|
103
115
|
|
104
116
|
it 'uses the given gemfile' do
|
105
|
-
expect(subject).to include("COPY foo/bar/Gemfile
|
106
|
-
expect(subject).to include("COPY foo/bar/Gemfile.lock
|
107
|
-
expect(subject).to
|
117
|
+
expect(subject).to include("COPY foo/bar/Gemfile /usr/src/app/foo/bar/Gemfile\n")
|
118
|
+
expect(subject).to include("COPY foo/bar/Gemfile.lock /usr/src/app/foo/bar/Gemfile.lock\n")
|
119
|
+
expect(subject).to include("ENV BUNDLE_GEMFILE=/usr/src/app/foo/bar/Gemfile")
|
108
120
|
end
|
109
121
|
end
|
110
122
|
|
111
123
|
context 'when multiple gemfiles are specified' do
|
112
|
-
before
|
124
|
+
before do
|
125
|
+
on_define { |env| env.docker.bundler_phase.gemfiles('gemfiles/a.gemfile', 'gemfiles/b.gemfile') }
|
126
|
+
end
|
113
127
|
|
114
128
|
it 'uses all gemfiles including the default one' do
|
115
|
-
expect(subject).to include("COPY Gemfile
|
116
|
-
expect(subject).to include("COPY Gemfile.lock
|
117
|
-
expect(subject).to include("COPY gemfiles/a.gemfile gemfiles/a.gemfile\n")
|
118
|
-
expect(subject).to include("COPY gemfiles/b.gemfile gemfiles/b.gemfile\n")
|
119
|
-
expect(subject).to
|
129
|
+
expect(subject).to include("COPY Gemfile /usr/src/app/Gemfile\n")
|
130
|
+
expect(subject).to include("COPY Gemfile.lock /usr/src/app/Gemfile.lock\n")
|
131
|
+
expect(subject).to include("COPY gemfiles/a.gemfile /usr/src/app/gemfiles/a.gemfile\n")
|
132
|
+
expect(subject).to include("COPY gemfiles/b.gemfile /usr/src/app/gemfiles/b.gemfile\n")
|
133
|
+
expect(subject).to include("ENV BUNDLE_GEMFILE=/usr/src/app/Gemfile")
|
120
134
|
end
|
121
135
|
end
|
122
136
|
end
|
@@ -125,8 +139,10 @@ describe Kuby::Docker::Spec do
|
|
125
139
|
subject { spec.image.dockerfile.to_s }
|
126
140
|
|
127
141
|
it 'installs the given package' do
|
128
|
-
|
129
|
-
|
142
|
+
on_define do |env|
|
143
|
+
# configured in spec_helper.rb
|
144
|
+
env.docker.package(:fake_package)
|
145
|
+
end
|
130
146
|
|
131
147
|
expect(subject).to match(/apt-get install .* fake_package/m)
|
132
148
|
end
|
@@ -140,7 +156,9 @@ describe Kuby::Docker::Spec do
|
|
140
156
|
end
|
141
157
|
|
142
158
|
context 'when given a custom path to copy' do
|
143
|
-
before
|
159
|
+
before do
|
160
|
+
on_define { |env| env.docker.files('./foo/bar') }
|
161
|
+
end
|
144
162
|
|
145
163
|
it 'copies the given paths only' do
|
146
164
|
expect(subject).to include("COPY ./foo/bar .\n")
|
@@ -160,7 +178,9 @@ describe Kuby::Docker::Spec do
|
|
160
178
|
end
|
161
179
|
|
162
180
|
context 'when given a custom port' do
|
163
|
-
before
|
181
|
+
before do
|
182
|
+
on_define { |env| env.docker.port(5555) }
|
183
|
+
end
|
164
184
|
|
165
185
|
it 'exposes the given port' do
|
166
186
|
expect(subject).to include("EXPOSE 5555\n")
|
@@ -181,7 +201,9 @@ describe Kuby::Docker::Spec do
|
|
181
201
|
end
|
182
202
|
end
|
183
203
|
|
184
|
-
|
204
|
+
on_define do |env|
|
205
|
+
env.docker.insert :foo_phase, foo_phase.new, after: :webserver_phase
|
206
|
+
end
|
185
207
|
end
|
186
208
|
|
187
209
|
it 'inserts the commands' do
|
@@ -191,9 +213,11 @@ describe Kuby::Docker::Spec do
|
|
191
213
|
|
192
214
|
context 'with a custom inline build phase' do
|
193
215
|
before do
|
194
|
-
|
195
|
-
|
196
|
-
dockerfile.
|
216
|
+
on_define do |env|
|
217
|
+
env.docker.insert :hello, after: :webserver_phase do |dockerfile|
|
218
|
+
dockerfile.insert_at(0) do
|
219
|
+
dockerfile.run('echo "foo"')
|
220
|
+
end
|
197
221
|
end
|
198
222
|
end
|
199
223
|
end
|
data/spec/dummy/config/routes.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# typed: false
|
2
|
+
|
2
3
|
$:.push(File.expand_path('.', __dir__))
|
3
4
|
|
5
|
+
require 'sorbet-runtime'
|
4
6
|
require 'kuby'
|
5
7
|
require 'pry-byebug'
|
6
8
|
|
@@ -43,11 +45,17 @@ module SpecHelpers
|
|
43
45
|
)
|
44
46
|
end
|
45
47
|
|
48
|
+
let(:on_define_blocks) { [] }
|
49
|
+
|
50
|
+
def on_define(&block)
|
51
|
+
on_define_blocks << block
|
52
|
+
end
|
53
|
+
|
46
54
|
let(:definition) do
|
47
55
|
context = self
|
48
56
|
|
49
57
|
definition = Kuby.define('dummy') do
|
50
|
-
environment(:production) do
|
58
|
+
env = environment(:production) do
|
51
59
|
docker do
|
52
60
|
credentials do
|
53
61
|
username context.docker_username
|
@@ -71,6 +79,10 @@ module SpecHelpers
|
|
71
79
|
end
|
72
80
|
end
|
73
81
|
end
|
82
|
+
|
83
|
+
context.on_define_blocks.each do |blk|
|
84
|
+
blk.call(env)
|
85
|
+
end
|
74
86
|
end
|
75
87
|
|
76
88
|
docker = definition.environment.docker
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuby-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: gli
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2.
|
47
|
+
version: '2.21'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2.
|
54
|
+
version: '2.21'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: helm-cli
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,78 +70,72 @@ dependencies:
|
|
70
70
|
name: krane
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.1.4
|
76
|
-
- - "<"
|
73
|
+
- - "~>"
|
77
74
|
- !ruby/object:Gem::Version
|
78
75
|
version: '2.0'
|
79
76
|
type: :runtime
|
80
77
|
prerelease: false
|
81
78
|
version_requirements: !ruby/object:Gem::Requirement
|
82
79
|
requirements:
|
83
|
-
- - "
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 1.1.4
|
86
|
-
- - "<"
|
80
|
+
- - "~>"
|
87
81
|
- !ruby/object:Gem::Version
|
88
82
|
version: '2.0'
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
84
|
name: kuby-cert-manager
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
92
86
|
requirements:
|
93
|
-
- - "
|
87
|
+
- - "~>"
|
94
88
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0.
|
89
|
+
version: '0.4'
|
96
90
|
type: :runtime
|
97
91
|
prerelease: false
|
98
92
|
version_requirements: !ruby/object:Gem::Requirement
|
99
93
|
requirements:
|
100
|
-
- - "
|
94
|
+
- - "~>"
|
101
95
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0.
|
96
|
+
version: '0.4'
|
103
97
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
98
|
+
name: kuby-crdb
|
105
99
|
requirement: !ruby/object:Gem::Requirement
|
106
100
|
requirements:
|
107
101
|
- - "~>"
|
108
102
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0.
|
103
|
+
version: '0.2'
|
110
104
|
type: :runtime
|
111
105
|
prerelease: false
|
112
106
|
version_requirements: !ruby/object:Gem::Requirement
|
113
107
|
requirements:
|
114
108
|
- - "~>"
|
115
109
|
- !ruby/object:Gem::Version
|
116
|
-
version: '0.
|
110
|
+
version: '0.2'
|
117
111
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
112
|
+
name: kube-dsl
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
|
-
- - "
|
115
|
+
- - "~>"
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version: '0.
|
117
|
+
version: '0.7'
|
124
118
|
type: :runtime
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
|
-
- - "
|
122
|
+
- - "~>"
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version: '0.
|
124
|
+
version: '0.7'
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
126
|
name: kubernetes-cli
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
134
128
|
requirements:
|
135
129
|
- - "~>"
|
136
130
|
- !ruby/object:Gem::Version
|
137
|
-
version: '0.
|
131
|
+
version: '0.4'
|
138
132
|
type: :runtime
|
139
133
|
prerelease: false
|
140
134
|
version_requirements: !ruby/object:Gem::Requirement
|
141
135
|
requirements:
|
142
136
|
- - "~>"
|
143
137
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0.
|
138
|
+
version: '0.4'
|
145
139
|
- !ruby/object:Gem::Dependency
|
146
140
|
name: railties
|
147
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,19 +165,19 @@ dependencies:
|
|
171
165
|
- !ruby/object:Gem::Version
|
172
166
|
version: '3.0'
|
173
167
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
168
|
+
name: rake
|
175
169
|
requirement: !ruby/object:Gem::Requirement
|
176
170
|
requirements:
|
177
|
-
- - "
|
171
|
+
- - ">="
|
178
172
|
- !ruby/object:Gem::Version
|
179
|
-
version: '0
|
173
|
+
version: '0'
|
180
174
|
type: :runtime
|
181
175
|
prerelease: false
|
182
176
|
version_requirements: !ruby/object:Gem::Requirement
|
183
177
|
requirements:
|
184
|
-
- - "
|
178
|
+
- - ">="
|
185
179
|
- !ruby/object:Gem::Version
|
186
|
-
version: '0
|
180
|
+
version: '0'
|
187
181
|
- !ruby/object:Gem::Dependency
|
188
182
|
name: rspec
|
189
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,6 +206,7 @@ files:
|
|
212
206
|
- README.md
|
213
207
|
- Rakefile
|
214
208
|
- bin/kuby
|
209
|
+
- bin/tapioca
|
215
210
|
- kuby-core.gemspec
|
216
211
|
- lib/kuby-core.rb
|
217
212
|
- lib/kuby.rb
|
@@ -219,9 +214,12 @@ files:
|
|
219
214
|
- lib/kuby/cli_base.rb
|
220
215
|
- lib/kuby/commands.rb
|
221
216
|
- lib/kuby/definition.rb
|
217
|
+
- lib/kuby/dependable.rb
|
218
|
+
- lib/kuby/dependency.rb
|
222
219
|
- lib/kuby/docker.rb
|
223
220
|
- lib/kuby/docker/alpine.rb
|
224
221
|
- lib/kuby/docker/app_image.rb
|
222
|
+
- lib/kuby/docker/app_phase.rb
|
225
223
|
- lib/kuby/docker/assets_phase.rb
|
226
224
|
- lib/kuby/docker/bundler_phase.rb
|
227
225
|
- lib/kuby/docker/cli.rb
|
@@ -274,20 +272,27 @@ files:
|
|
274
272
|
- lib/kuby/plugins/rails_app/asset_copy_task.rb
|
275
273
|
- lib/kuby/plugins/rails_app/assets.rb
|
276
274
|
- lib/kuby/plugins/rails_app/assets_image.rb
|
275
|
+
- lib/kuby/plugins/rails_app/crdb.rb
|
276
|
+
- lib/kuby/plugins/rails_app/crdb/plugin.rb
|
277
277
|
- lib/kuby/plugins/rails_app/database.rb
|
278
278
|
- lib/kuby/plugins/rails_app/generators/kuby.rb
|
279
|
-
- lib/kuby/plugins/rails_app/mysql.rb
|
280
279
|
- lib/kuby/plugins/rails_app/plugin.rb
|
281
|
-
- lib/kuby/plugins/rails_app/postgres.rb
|
282
280
|
- lib/kuby/plugins/rails_app/rewrite_db_config.rb
|
283
281
|
- lib/kuby/plugins/rails_app/sqlite.rb
|
284
282
|
- lib/kuby/plugins/rails_app/tasks.rake
|
283
|
+
- lib/kuby/plugins/system.rb
|
285
284
|
- lib/kuby/railtie.rb
|
286
285
|
- lib/kuby/tasks.rb
|
287
286
|
- lib/kuby/trailing_hash.rb
|
288
287
|
- lib/kuby/utils.rb
|
288
|
+
- lib/kuby/utils/sem_ver.rb
|
289
|
+
- lib/kuby/utils/sem_ver/constraint.rb
|
290
|
+
- lib/kuby/utils/sem_ver/constraint_set.rb
|
291
|
+
- lib/kuby/utils/sem_ver/version.rb
|
289
292
|
- lib/kuby/utils/table.rb
|
293
|
+
- lib/kuby/utils/which.rb
|
290
294
|
- lib/kuby/version.rb
|
295
|
+
- rbi/kuby-core.rbi
|
291
296
|
- spec/docker/spec_spec.rb
|
292
297
|
- spec/docker/timestamp_tag_spec.rb
|
293
298
|
- spec/docker/timestamped_image_spec.rb
|
@@ -358,7 +363,7 @@ files:
|
|
358
363
|
homepage: http://github.com/getkuby/kuby-core
|
359
364
|
licenses: []
|
360
365
|
metadata: {}
|
361
|
-
post_install_message:
|
366
|
+
post_install_message:
|
362
367
|
rdoc_options: []
|
363
368
|
require_paths:
|
364
369
|
- lib
|
@@ -373,8 +378,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
373
378
|
- !ruby/object:Gem::Version
|
374
379
|
version: '0'
|
375
380
|
requirements: []
|
376
|
-
rubygems_version: 3.
|
377
|
-
signing_key:
|
381
|
+
rubygems_version: 3.1.6
|
382
|
+
signing_key:
|
378
383
|
specification_version: 4
|
379
384
|
summary: Deploy your Rails app onto Kubernetes the easy way.
|
380
385
|
test_files: []
|
@@ -1,158 +0,0 @@
|
|
1
|
-
# typed: false
|
2
|
-
|
3
|
-
require 'kube-dsl'
|
4
|
-
require 'kuby/kube-db'
|
5
|
-
|
6
|
-
module Kuby
|
7
|
-
module Plugins
|
8
|
-
module RailsApp
|
9
|
-
class MySQL < ::Kuby::Plugin
|
10
|
-
ROLE = 'web'.freeze
|
11
|
-
|
12
|
-
attr_reader :environment, :configs
|
13
|
-
|
14
|
-
def initialize(environment, configs)
|
15
|
-
@environment = environment
|
16
|
-
@configs = configs
|
17
|
-
end
|
18
|
-
|
19
|
-
def requires_credentials?
|
20
|
-
true
|
21
|
-
end
|
22
|
-
|
23
|
-
def name
|
24
|
-
:mysql
|
25
|
-
end
|
26
|
-
|
27
|
-
def resources
|
28
|
-
@resources ||= [secret, database]
|
29
|
-
end
|
30
|
-
|
31
|
-
def after_configuration
|
32
|
-
environment.docker.package_phase.add(:mysql_dev)
|
33
|
-
environment.docker.package_phase.add(:mysql_client)
|
34
|
-
end
|
35
|
-
|
36
|
-
def host
|
37
|
-
# host is the same as the name thanks to k8s DNS
|
38
|
-
@host ||= database.metadata.name
|
39
|
-
end
|
40
|
-
|
41
|
-
def rewritten_configs
|
42
|
-
# deep dup
|
43
|
-
@rewritten_configs ||= Marshal.load(Marshal.dump(configs)).tap do |new_configs|
|
44
|
-
new_configs[environment.name]['host'] = host
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def user(user)
|
49
|
-
secret do
|
50
|
-
data do
|
51
|
-
set :user, user
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def password(password)
|
57
|
-
secret do
|
58
|
-
data do
|
59
|
-
set :password, password
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def storage(amount)
|
65
|
-
database do
|
66
|
-
spec do
|
67
|
-
storage do
|
68
|
-
resources do
|
69
|
-
requests do
|
70
|
-
set :storage, amount
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def secret(&block)
|
79
|
-
context = self
|
80
|
-
|
81
|
-
@secret ||= KubeDSL.secret do
|
82
|
-
metadata do
|
83
|
-
name "#{context.base_name}-mysql-secret"
|
84
|
-
namespace context.kubernetes.namespace.metadata.name
|
85
|
-
end
|
86
|
-
|
87
|
-
type 'Opaque'
|
88
|
-
end
|
89
|
-
|
90
|
-
@secret.instance_eval(&block) if block
|
91
|
-
@secret
|
92
|
-
end
|
93
|
-
|
94
|
-
def database(&block)
|
95
|
-
context = self
|
96
|
-
|
97
|
-
@database ||= Kuby::KubeDB.my_sql do
|
98
|
-
api_version 'kubedb.com/v1alpha1'
|
99
|
-
|
100
|
-
metadata do
|
101
|
-
name "#{context.base_name}-mysql"
|
102
|
-
namespace context.kubernetes.namespace.metadata.name
|
103
|
-
end
|
104
|
-
|
105
|
-
spec do
|
106
|
-
database_secret do
|
107
|
-
secret_name context.secret.metadata.name
|
108
|
-
end
|
109
|
-
|
110
|
-
version '5.7-v2'
|
111
|
-
storage_type 'Durable'
|
112
|
-
|
113
|
-
storage do
|
114
|
-
storage_class_name context.kubernetes.provider.storage_class_name
|
115
|
-
access_modes ['ReadWriteOnce']
|
116
|
-
|
117
|
-
resources do
|
118
|
-
requests do
|
119
|
-
add :storage, '10Gi'
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
termination_policy 'DoNotTerminate'
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
@database.instance_eval(&block) if block
|
129
|
-
@database
|
130
|
-
end
|
131
|
-
|
132
|
-
def base_name
|
133
|
-
@base_name ||= "#{kubernetes.selector_app}-#{ROLE}"
|
134
|
-
end
|
135
|
-
|
136
|
-
def kubernetes
|
137
|
-
environment.kubernetes
|
138
|
-
end
|
139
|
-
|
140
|
-
private
|
141
|
-
|
142
|
-
def config
|
143
|
-
configs[environment.name]
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
Kuby.register_package(:mysql_client,
|
151
|
-
debian: 'default-mysql-client',
|
152
|
-
alpine: 'mariadb-client'
|
153
|
-
)
|
154
|
-
|
155
|
-
Kuby.register_package(:mysql_dev,
|
156
|
-
debian: 'default-libmysqlclient-dev',
|
157
|
-
alpine: 'mariadb-dev'
|
158
|
-
)
|