kuber_kit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +7 -0
  7. data/Gemfile +8 -0
  8. data/Gemfile.lock +67 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +19 -0
  11. data/Rakefile +6 -0
  12. data/TODO.md +2 -0
  13. data/bin/console +14 -0
  14. data/bin/kit +8 -0
  15. data/example/app_data/service.yml +7 -0
  16. data/example/app_data/test.env +2 -0
  17. data/example/app_data/test.txt +1 -0
  18. data/example/configurations/review.rb +4 -0
  19. data/example/images/app_sources/Dockerfile +6 -0
  20. data/example/images/app_sources/build_context/source.rb +2 -0
  21. data/example/images/app_sources/image.rb +4 -0
  22. data/example/images/ruby/Dockerfile +1 -0
  23. data/example/images/ruby/image.rb +3 -0
  24. data/example/images/ruby_app/Dockerfile +11 -0
  25. data/example/images/ruby_app/build_context/example_file.txt +2 -0
  26. data/example/images/ruby_app/image.rb +15 -0
  27. data/example/images/ruby_app2/Dockerfile +8 -0
  28. data/example/images/ruby_app2/build_context/example_file.txt +2 -0
  29. data/example/images/ruby_app2/image.rb +4 -0
  30. data/example/infrastructure/artifacts.rb +13 -0
  31. data/example/infrastructure/env_files.rb +4 -0
  32. data/example/infrastructure/registries.rb +4 -0
  33. data/example/infrastructure/services.rb +3 -0
  34. data/example/infrastructure/templates.rb +4 -0
  35. data/kuber_kit.gemspec +35 -0
  36. data/lib/kuber_kit.rb +205 -0
  37. data/lib/kuber_kit/actions/configuration_loader.rb +74 -0
  38. data/lib/kuber_kit/actions/env_file_reader.rb +17 -0
  39. data/lib/kuber_kit/actions/image_compiler.rb +56 -0
  40. data/lib/kuber_kit/actions/kubectl_applier.rb +17 -0
  41. data/lib/kuber_kit/actions/service_applier.rb +39 -0
  42. data/lib/kuber_kit/actions/service_reader.rb +17 -0
  43. data/lib/kuber_kit/actions/template_reader.rb +17 -0
  44. data/lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb +5 -0
  45. data/lib/kuber_kit/artifacts_sync/artifacts_updater.rb +42 -0
  46. data/lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb +31 -0
  47. data/lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb +7 -0
  48. data/lib/kuber_kit/cli.rb +72 -0
  49. data/lib/kuber_kit/configs.rb +42 -0
  50. data/lib/kuber_kit/container.rb +207 -0
  51. data/lib/kuber_kit/core/artifacts/abstract_artifact.rb +13 -0
  52. data/lib/kuber_kit/core/artifacts/artifact_store.rb +45 -0
  53. data/lib/kuber_kit/core/artifacts/git.rb +22 -0
  54. data/lib/kuber_kit/core/artifacts/local.rb +14 -0
  55. data/lib/kuber_kit/core/configuration.rb +20 -0
  56. data/lib/kuber_kit/core/configuration_definition.rb +67 -0
  57. data/lib/kuber_kit/core/configuration_definition_factory.rb +5 -0
  58. data/lib/kuber_kit/core/configuration_factory.rb +61 -0
  59. data/lib/kuber_kit/core/configuration_store.rb +72 -0
  60. data/lib/kuber_kit/core/context_helper/base_helper.rb +28 -0
  61. data/lib/kuber_kit/core/context_helper/context_helper_factory.rb +23 -0
  62. data/lib/kuber_kit/core/context_helper/image_helper.rb +2 -0
  63. data/lib/kuber_kit/core/context_helper/service_helper.rb +19 -0
  64. data/lib/kuber_kit/core/env_files/abstract_env_file.rb +9 -0
  65. data/lib/kuber_kit/core/env_files/artifact_file.rb +9 -0
  66. data/lib/kuber_kit/core/env_files/env_file_store.rb +45 -0
  67. data/lib/kuber_kit/core/image.rb +39 -0
  68. data/lib/kuber_kit/core/image_definition.rb +85 -0
  69. data/lib/kuber_kit/core/image_definition_factory.rb +5 -0
  70. data/lib/kuber_kit/core/image_factory.rb +40 -0
  71. data/lib/kuber_kit/core/image_store.rb +60 -0
  72. data/lib/kuber_kit/core/registries/abstract_registry.rb +25 -0
  73. data/lib/kuber_kit/core/registries/registry.rb +24 -0
  74. data/lib/kuber_kit/core/registries/registry_store.rb +49 -0
  75. data/lib/kuber_kit/core/service.rb +14 -0
  76. data/lib/kuber_kit/core/service_definition.rb +33 -0
  77. data/lib/kuber_kit/core/service_definition_factory.rb +5 -0
  78. data/lib/kuber_kit/core/service_factory.rb +17 -0
  79. data/lib/kuber_kit/core/service_store.rb +68 -0
  80. data/lib/kuber_kit/core/templates/abstract_template.rb +9 -0
  81. data/lib/kuber_kit/core/templates/artifact_file.rb +9 -0
  82. data/lib/kuber_kit/core/templates/template_store.rb +45 -0
  83. data/lib/kuber_kit/env_file_reader/abstract_env_file_reader.rb +5 -0
  84. data/lib/kuber_kit/env_file_reader/artifact_file_reader.rb +86 -0
  85. data/lib/kuber_kit/env_file_reader/reader.rb +35 -0
  86. data/lib/kuber_kit/extensions/colored_string.rb +43 -0
  87. data/lib/kuber_kit/extensions/contracts.rb +4 -0
  88. data/lib/kuber_kit/extensions/indocker_compat.rb +19 -0
  89. data/lib/kuber_kit/extensions/inspectable.rb +10 -0
  90. data/lib/kuber_kit/image_compiler/compiler.rb +21 -0
  91. data/lib/kuber_kit/image_compiler/image_build_dir_creator.rb +37 -0
  92. data/lib/kuber_kit/image_compiler/image_builder.rb +26 -0
  93. data/lib/kuber_kit/image_compiler/image_dependency_resolver.rb +40 -0
  94. data/lib/kuber_kit/image_compiler/version_tag_builder.rb +5 -0
  95. data/lib/kuber_kit/preprocessing/dir_preprocessor.rb +19 -0
  96. data/lib/kuber_kit/preprocessing/file_preprocessor.rb +33 -0
  97. data/lib/kuber_kit/preprocessing/text_preprocessor.rb +7 -0
  98. data/lib/kuber_kit/service_deployer/service_list_resolver.rb +56 -0
  99. data/lib/kuber_kit/service_deployer/service_reader.rb +20 -0
  100. data/lib/kuber_kit/shell/abstract_shell.rb +20 -0
  101. data/lib/kuber_kit/shell/bash_commands.rb +25 -0
  102. data/lib/kuber_kit/shell/command_counter.rb +19 -0
  103. data/lib/kuber_kit/shell/docker_commands.rb +16 -0
  104. data/lib/kuber_kit/shell/git_commands.rb +28 -0
  105. data/lib/kuber_kit/shell/kubectl_commands.rb +12 -0
  106. data/lib/kuber_kit/shell/local_shell.rb +64 -0
  107. data/lib/kuber_kit/shell/rsync_commands.rb +20 -0
  108. data/lib/kuber_kit/template_reader/abstract_template_reader.rb +5 -0
  109. data/lib/kuber_kit/template_reader/artifact_file_reader.rb +14 -0
  110. data/lib/kuber_kit/template_reader/reader.rb +35 -0
  111. data/lib/kuber_kit/tools/file_presence_checker.rb +25 -0
  112. data/lib/kuber_kit/tools/files_sync.rb +10 -0
  113. data/lib/kuber_kit/tools/logger_factory.rb +34 -0
  114. data/lib/kuber_kit/ui.rb +18 -0
  115. data/lib/kuber_kit/ui/interactive.rb +44 -0
  116. data/lib/kuber_kit/ui/simple.rb +75 -0
  117. data/lib/kuber_kit/version.rb +3 -0
  118. metadata +273 -0
@@ -0,0 +1,64 @@
1
+ require 'fileutils'
2
+
3
+ class KuberKit::Shell::LocalShell < KuberKit::Shell::AbstractShell
4
+ include KuberKit::Import[
5
+ "tools.logger",
6
+ "shell.command_counter"
7
+ ]
8
+
9
+ def exec!(command)
10
+ command_number = command_counter.get_number.to_s.rjust(2, "0")
11
+
12
+ logger.info("Executed command [#{command_number}]: #{command.to_s.cyan}")
13
+
14
+ result = nil
15
+ IO.popen(command, err: [:child, :out]) do |io|
16
+ result = io.read.chomp.strip
17
+ end
18
+
19
+ if result && result != ""
20
+ logger.info("Finished command [#{command_number}] with result: \n#{result.grey}")
21
+ end
22
+
23
+ if $?.exitstatus != 0
24
+ raise ShellError, "Shell command failed: #{command}\r\n#{result}"
25
+ end
26
+
27
+ result
28
+ end
29
+
30
+ def read(file_path)
31
+ File.read(file_path)
32
+ end
33
+
34
+ def write(file_path, content)
35
+ ensure_directory_exists(file_path)
36
+
37
+ File.write(file_path, content)
38
+
39
+ logger.info("Created file #{file_path.to_s.cyan}\r\n#{content.grey}")
40
+
41
+ true
42
+ end
43
+
44
+ def recursive_list_files(path, name: nil)
45
+ command = %Q{find -L #{path} -type f}
46
+ command += " -name #{name}" if name
47
+ exec!(command).split(/[\r\n]+/)
48
+ rescue => e
49
+ if e.message.include?("No such file or directory")
50
+ raise DirNotFoundError.new("Dir not found: #{path}")
51
+ else
52
+ raise e
53
+ end
54
+ end
55
+
56
+ private
57
+ def ensure_directory_exists(file_path)
58
+ dir_path = File.dirname(file_path)
59
+
60
+ unless Dir.exists?(dir_path)
61
+ FileUtils.mkdir_p(dir_path)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,20 @@
1
+ class KuberKit::Shell::RsyncCommands
2
+ def rsync(shell, source_path, target_path, exclude: nil)
3
+ # Add a trailing slash to directory to have behavior similar to CP command
4
+ if path_is_directory?(source_path) && !source_path.end_with?("/")
5
+ source_path = "#{source_path}/"
6
+ end
7
+
8
+ args = [source_path, target_path]
9
+ if exclude
10
+ args << "--exclude=#{exclude}"
11
+ end
12
+
13
+ shell.exec!(%Q{rsync -a #{args.join(' ')}})
14
+ end
15
+
16
+ private
17
+ def path_is_directory?(path)
18
+ File.directory?(path)
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ class KuberKit::TemplateReader::AbstractTemplateReader
2
+ def read(shell, template)
3
+ raise KuberKit::NotImplementedError, "must be implemented"
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ class KuberKit::TemplateReader::ArtifactFileReader < KuberKit::TemplateReader::AbstractTemplateReader
2
+ include KuberKit::Import[
3
+ "core.artifact_store"
4
+ ]
5
+
6
+ def read(shell, env_file)
7
+ artifact = artifact_store.get(env_file.artifact_name)
8
+
9
+ file_parts = [artifact.cloned_path, env_file.file_path].compact
10
+ file_path = File.join(*file_parts)
11
+
12
+ shell.read(file_path)
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ class KuberKit::TemplateReader::Reader
2
+ ReaderNotFoundError = Class.new(KuberKit::NotFoundError)
3
+
4
+ include KuberKit::Import[
5
+ "template_reader.artifact_file_reader",
6
+ ]
7
+
8
+ def use_reader(template_reader, template_class:)
9
+ @@readers ||= {}
10
+
11
+ if !template_reader.is_a?(KuberKit::TemplateReader::AbstractTemplateReader)
12
+ raise ArgumentError.new("should be an instance of KuberKit::TemplateReader::AbstractTemplateReader, got: #{template_reader.inspect}")
13
+ end
14
+
15
+ @@readers[template_class] = template_reader
16
+ end
17
+
18
+ def read(shell, template)
19
+ add_default_readers
20
+
21
+ reader = @@readers[template.class]
22
+
23
+ raise ReaderNotFoundError, "Can't find reader for template #{template}" if reader.nil?
24
+
25
+ reader.read(shell, template)
26
+ end
27
+
28
+ def add_default_readers
29
+ use_reader(artifact_file_reader, template_class: KuberKit::Core::Templates::ArtifactFile)
30
+ end
31
+
32
+ def reset!
33
+ @@readers = {}
34
+ end
35
+ end
@@ -0,0 +1,25 @@
1
+ class KuberKit::Tools::FilePresenceChecker
2
+ FileNotFound = Class.new(KuberKit::Error)
3
+
4
+ def check_file!(file_path)
5
+ unless file_exists?(file_path)
6
+ raise FileNotFound, "File not found at path: #{file_path}"
7
+ end
8
+ true
9
+ end
10
+
11
+ def file_exists?(file_path)
12
+ File.exists?(file_path)
13
+ end
14
+
15
+ def check_dir!(dir_path)
16
+ unless dir_exists?(dir_path)
17
+ raise FileNotFound, "Directory not found at path: #{dir_path}"
18
+ end
19
+ true
20
+ end
21
+
22
+ def dir_exists?(dir_path)
23
+ Dir.exists?(dir_path)
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ class KuberKit::Tools::FilesSync
2
+ include KuberKit::Import[
3
+ "shell.rsync_commands",
4
+ "shell.local_shell"
5
+ ]
6
+
7
+ def sync(from_path, to_path, exclude: nil)
8
+ rsync_commands.rsync(local_shell, from_path, to_path, exclude: exclude)
9
+ end
10
+ end
@@ -0,0 +1,34 @@
1
+ require 'logger'
2
+
3
+ class KuberKit::Tools::LoggerFactory
4
+ SEVERITY_COLORS_BY_LEVEL = {
5
+ Logger::INFO => String::Colors::GREEN,
6
+ Logger::WARN => String::Colors::PURPLE,
7
+ Logger::DEBUG => String::Colors::YELLOW,
8
+ Logger::ERROR => String::Colors::RED,
9
+ Logger::FATAL => String::Colors::PURPLE,
10
+ }
11
+
12
+ def create(stdout, level = nil)
13
+ logger = Logger.new(stdout)
14
+
15
+ logger.level = level || Logger::DEBUG
16
+
17
+ logger.formatter = proc do |severity, datetime, progname, msg|
18
+ level = Logger::SEV_LABEL.index(severity)
19
+
20
+ severity_color = SEVERITY_COLORS_BY_LEVEL[level]
21
+
22
+ severity_text = severity.to_s
23
+ severity_text = severity_text.colorize(severity_color) if severity_color
24
+
25
+ if level == Logger::INFO
26
+ "#{datetime.strftime("%Y/%m/%d %H:%M:%S").grey} #{msg}\n"
27
+ else
28
+ "#{datetime.strftime("%Y/%m/%d %H:%M:%S").grey} #{severity_text.downcase}: #{msg}\n"
29
+ end
30
+ end
31
+
32
+ logger
33
+ end
34
+ end
@@ -0,0 +1,18 @@
1
+ require 'cli/ui'
2
+
3
+ class KuberKit::UI
4
+ class TaskGroup < CLI::UI::SpinGroup
5
+ end
6
+
7
+ def init
8
+ ::CLI::UI::StdoutRouter.enable
9
+ end
10
+
11
+ def create_task_group
12
+ TaskGroup.new
13
+ end
14
+
15
+ def create_task(title, &block)
16
+ CLI::UI::Spinner.spin(title, &block)
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ require 'cli/ui'
2
+
3
+ class KuberKit::UI::Interactive
4
+ class TaskGroup < CLI::UI::SpinGroup
5
+ end
6
+
7
+ def create_task_group
8
+ init_if_needed
9
+ TaskGroup.new
10
+ end
11
+
12
+ def create_task(title, &block)
13
+ init_if_needed
14
+ CLI::UI::Spinner.spin(title, &block)
15
+ end
16
+
17
+ def print_info(title, text)
18
+ print_in_frame(title, text, color: :blue)
19
+ end
20
+
21
+ def print_error(title, text)
22
+ print_in_frame(title, text, color: :red)
23
+ end
24
+
25
+ def print_warning(title, text)
26
+ print_in_frame(title, text, color: :yellow)
27
+ end
28
+
29
+ private
30
+ def init
31
+ @initialized = true
32
+ ::CLI::UI::StdoutRouter.enable
33
+ end
34
+
35
+ def init_if_needed
36
+ init unless @initialized
37
+ end
38
+
39
+ def print_in_frame(title, text, color:)
40
+ CLI::UI::Frame.open(title, color: color) do
41
+ puts text
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,75 @@
1
+ class KuberKit::UI::Simple
2
+ class Task
3
+ def initialize(title, &callback)
4
+ @title = title
5
+ @callback = callback
6
+ end
7
+
8
+ def execute
9
+ if @thread
10
+ raise "Already started execution of task '#{title}'"
11
+ end
12
+
13
+ @thread = Thread.new do
14
+ puts "Start task: #{@title.green}"
15
+ @callback.call(self)
16
+ puts "Finish task: #{@title.green}"
17
+ end
18
+ end
19
+
20
+ def wait
21
+ if !@thread
22
+ raise "Task '#{title}' not started"
23
+ end
24
+ @thread.join
25
+ end
26
+
27
+ def update_title(title)
28
+ @title = title
29
+ end
30
+ end
31
+
32
+ class TaskGroup
33
+ def add(task_title, &task_block)
34
+ task = Task.new(task_title, &task_block)
35
+ task.execute
36
+ add_task(task)
37
+ end
38
+
39
+ def add_task(task)
40
+ @tasks ||= []
41
+ @tasks << task
42
+ end
43
+
44
+ def wait
45
+ @tasks.each(&:wait)
46
+ end
47
+ end
48
+
49
+ def create_task_group
50
+ TaskGroup.new
51
+ end
52
+
53
+ def create_task(title, &block)
54
+ task = Task.new(title, &block)
55
+ task.execute
56
+ task.wait
57
+ end
58
+
59
+ def print_info(title, text)
60
+ print_text(title, text, color: String::Colors::BLUE)
61
+ end
62
+
63
+ def print_error(title, text)
64
+ print_text(title, text, color: String::Colors::RED)
65
+ end
66
+
67
+ def print_warning(title, text)
68
+ print_text(title, text, color: String::Colors::YELLOW)
69
+ end
70
+
71
+ private
72
+ def print_text(title, text, color:)
73
+ puts "#{title.colorize(color)}\r\n #{text.colorize(color)}"
74
+ end
75
+ end
@@ -0,0 +1,3 @@
1
+ module KuberKit
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kuber_kit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Iskander Khaziev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-10-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: contracts-lite
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-auto_inject
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: cli-ui
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.17'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.17'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Docker Containers Build & Deployment
126
+ email:
127
+ - gvalmon@gmail.com
128
+ executables:
129
+ - console
130
+ - kit
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".ruby-gemset"
137
+ - ".ruby-version"
138
+ - ".travis.yml"
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - LICENSE.txt
142
+ - README.md
143
+ - Rakefile
144
+ - TODO.md
145
+ - bin/console
146
+ - bin/kit
147
+ - example/app_data/service.yml
148
+ - example/app_data/test.env
149
+ - example/app_data/test.txt
150
+ - example/configurations/review.rb
151
+ - example/images/app_sources/Dockerfile
152
+ - example/images/app_sources/build_context/source.rb
153
+ - example/images/app_sources/image.rb
154
+ - example/images/ruby/Dockerfile
155
+ - example/images/ruby/image.rb
156
+ - example/images/ruby_app/Dockerfile
157
+ - example/images/ruby_app/build_context/example_file.txt
158
+ - example/images/ruby_app/image.rb
159
+ - example/images/ruby_app2/Dockerfile
160
+ - example/images/ruby_app2/build_context/example_file.txt
161
+ - example/images/ruby_app2/image.rb
162
+ - example/infrastructure/artifacts.rb
163
+ - example/infrastructure/env_files.rb
164
+ - example/infrastructure/registries.rb
165
+ - example/infrastructure/services.rb
166
+ - example/infrastructure/templates.rb
167
+ - kuber_kit.gemspec
168
+ - lib/kuber_kit.rb
169
+ - lib/kuber_kit/actions/configuration_loader.rb
170
+ - lib/kuber_kit/actions/env_file_reader.rb
171
+ - lib/kuber_kit/actions/image_compiler.rb
172
+ - lib/kuber_kit/actions/kubectl_applier.rb
173
+ - lib/kuber_kit/actions/service_applier.rb
174
+ - lib/kuber_kit/actions/service_reader.rb
175
+ - lib/kuber_kit/actions/template_reader.rb
176
+ - lib/kuber_kit/artifacts_sync/abstract_artifact_resolver.rb
177
+ - lib/kuber_kit/artifacts_sync/artifacts_updater.rb
178
+ - lib/kuber_kit/artifacts_sync/git_artifact_resolver.rb
179
+ - lib/kuber_kit/artifacts_sync/null_artifact_resolver.rb
180
+ - lib/kuber_kit/cli.rb
181
+ - lib/kuber_kit/configs.rb
182
+ - lib/kuber_kit/container.rb
183
+ - lib/kuber_kit/core/artifacts/abstract_artifact.rb
184
+ - lib/kuber_kit/core/artifacts/artifact_store.rb
185
+ - lib/kuber_kit/core/artifacts/git.rb
186
+ - lib/kuber_kit/core/artifacts/local.rb
187
+ - lib/kuber_kit/core/configuration.rb
188
+ - lib/kuber_kit/core/configuration_definition.rb
189
+ - lib/kuber_kit/core/configuration_definition_factory.rb
190
+ - lib/kuber_kit/core/configuration_factory.rb
191
+ - lib/kuber_kit/core/configuration_store.rb
192
+ - lib/kuber_kit/core/context_helper/base_helper.rb
193
+ - lib/kuber_kit/core/context_helper/context_helper_factory.rb
194
+ - lib/kuber_kit/core/context_helper/image_helper.rb
195
+ - lib/kuber_kit/core/context_helper/service_helper.rb
196
+ - lib/kuber_kit/core/env_files/abstract_env_file.rb
197
+ - lib/kuber_kit/core/env_files/artifact_file.rb
198
+ - lib/kuber_kit/core/env_files/env_file_store.rb
199
+ - lib/kuber_kit/core/image.rb
200
+ - lib/kuber_kit/core/image_definition.rb
201
+ - lib/kuber_kit/core/image_definition_factory.rb
202
+ - lib/kuber_kit/core/image_factory.rb
203
+ - lib/kuber_kit/core/image_store.rb
204
+ - lib/kuber_kit/core/registries/abstract_registry.rb
205
+ - lib/kuber_kit/core/registries/registry.rb
206
+ - lib/kuber_kit/core/registries/registry_store.rb
207
+ - lib/kuber_kit/core/service.rb
208
+ - lib/kuber_kit/core/service_definition.rb
209
+ - lib/kuber_kit/core/service_definition_factory.rb
210
+ - lib/kuber_kit/core/service_factory.rb
211
+ - lib/kuber_kit/core/service_store.rb
212
+ - lib/kuber_kit/core/templates/abstract_template.rb
213
+ - lib/kuber_kit/core/templates/artifact_file.rb
214
+ - lib/kuber_kit/core/templates/template_store.rb
215
+ - lib/kuber_kit/env_file_reader/abstract_env_file_reader.rb
216
+ - lib/kuber_kit/env_file_reader/artifact_file_reader.rb
217
+ - lib/kuber_kit/env_file_reader/reader.rb
218
+ - lib/kuber_kit/extensions/colored_string.rb
219
+ - lib/kuber_kit/extensions/contracts.rb
220
+ - lib/kuber_kit/extensions/indocker_compat.rb
221
+ - lib/kuber_kit/extensions/inspectable.rb
222
+ - lib/kuber_kit/image_compiler/compiler.rb
223
+ - lib/kuber_kit/image_compiler/image_build_dir_creator.rb
224
+ - lib/kuber_kit/image_compiler/image_builder.rb
225
+ - lib/kuber_kit/image_compiler/image_dependency_resolver.rb
226
+ - lib/kuber_kit/image_compiler/version_tag_builder.rb
227
+ - lib/kuber_kit/preprocessing/dir_preprocessor.rb
228
+ - lib/kuber_kit/preprocessing/file_preprocessor.rb
229
+ - lib/kuber_kit/preprocessing/text_preprocessor.rb
230
+ - lib/kuber_kit/service_deployer/service_list_resolver.rb
231
+ - lib/kuber_kit/service_deployer/service_reader.rb
232
+ - lib/kuber_kit/shell/abstract_shell.rb
233
+ - lib/kuber_kit/shell/bash_commands.rb
234
+ - lib/kuber_kit/shell/command_counter.rb
235
+ - lib/kuber_kit/shell/docker_commands.rb
236
+ - lib/kuber_kit/shell/git_commands.rb
237
+ - lib/kuber_kit/shell/kubectl_commands.rb
238
+ - lib/kuber_kit/shell/local_shell.rb
239
+ - lib/kuber_kit/shell/rsync_commands.rb
240
+ - lib/kuber_kit/template_reader/abstract_template_reader.rb
241
+ - lib/kuber_kit/template_reader/artifact_file_reader.rb
242
+ - lib/kuber_kit/template_reader/reader.rb
243
+ - lib/kuber_kit/tools/file_presence_checker.rb
244
+ - lib/kuber_kit/tools/files_sync.rb
245
+ - lib/kuber_kit/tools/logger_factory.rb
246
+ - lib/kuber_kit/ui.rb
247
+ - lib/kuber_kit/ui/interactive.rb
248
+ - lib/kuber_kit/ui/simple.rb
249
+ - lib/kuber_kit/version.rb
250
+ homepage: https://github.com/ArtStation/kuber_kit
251
+ licenses:
252
+ - MIT
253
+ metadata: {}
254
+ post_install_message:
255
+ rdoc_options: []
256
+ require_paths:
257
+ - lib
258
+ required_ruby_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ version: '0'
268
+ requirements: []
269
+ rubygems_version: 3.0.8
270
+ signing_key:
271
+ specification_version: 4
272
+ summary: Docker Containers Build & Deployment
273
+ test_files: []