kuber_kit 0.1.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.
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,74 @@
1
+ class KuberKit::Actions::ConfigurationLoader
2
+ include KuberKit::Import[
3
+ "core.registry_store",
4
+ "core.image_store",
5
+ "core.configuration_store",
6
+ "artifacts_sync.artifacts_updater",
7
+ "tools.logger",
8
+ "shell.local_shell",
9
+ "ui",
10
+ "configs"
11
+ ]
12
+
13
+ Contract Hash => Any
14
+ def call(options)
15
+ root_path = options[:path] || File.join(Dir.pwd, configs.kuber_kit_dirname)
16
+ images_path = options[:images_path] || File.join(root_path, configs.images_dirname)
17
+ infra_path = options[:infra_path] || File.join(root_path, configs.infra_dirname)
18
+ configurations_path = options[:configurations_path] || File.join(root_path, configs.configurations_dirname)
19
+ configuration_name = options[:configuration]
20
+
21
+ logger.info "Launching kuber_kit with:"
22
+ logger.info " Root path: #{root_path.to_s.yellow}"
23
+ logger.info " Images path: #{images_path.to_s.yellow}"
24
+ logger.info " Infrastructure path: #{infra_path.to_s.yellow}"
25
+ logger.info " Configurations path: #{configurations_path.to_s.yellow}"
26
+ logger.info " Configuration name: #{configuration_name.to_s.yellow}"
27
+
28
+ unless File.exists?(root_path)
29
+ ui.print_warning "WARNING", "KuberKit root path #{root_path} doesn't exist. You may want to pass it --path parameter."
30
+ end
31
+
32
+ load_configurations(configurations_path, configuration_name)
33
+ load_infrastructure(infra_path)
34
+
35
+ ui.create_task("Updating artifacts") do |task|
36
+ artifacts = KuberKit.current_configuration.artifacts.values
37
+ artifacts_updater.update(local_shell, artifacts)
38
+ task.update_title("Updated #{artifacts.count} artifacts")
39
+ end
40
+
41
+ ui.create_task("Loading image definitions") do |task|
42
+ files = image_store.load_definitions(images_path)
43
+ task.update_title("Loaded #{files.count} image definitions")
44
+ end
45
+ end
46
+
47
+ def load_configurations(configurations_path, configuration_name)
48
+ configuration_store.load_definitions(configurations_path)
49
+
50
+ if configuration_store.count.zero?
51
+ configuration_store.define(:_default_)
52
+ configuration_name ||= :_default_
53
+ end
54
+
55
+ if configuration_store.count == 1 && configuration_name.nil?
56
+ first_configurations = configuration_store.all_definitions.values.first
57
+ configuration_name = first_configurations.configuration_name
58
+ end
59
+
60
+ if configuration_store.count > 1 && configuration_name.nil?
61
+ raise KuberKit::Error, "Please set configuration name using -C option"
62
+ end
63
+
64
+ KuberKit.set_configuration_name(configuration_name)
65
+ end
66
+
67
+ def load_infrastructure(infra_path)
68
+ local_shell.recursive_list_files(infra_path).each do |path|
69
+ require(path)
70
+ end
71
+ rescue KuberKit::Shell::AbstractShell::DirNotFoundError
72
+ logger.warn("Directory with infrastructure not found: #{infra_path}")
73
+ end
74
+ end
@@ -0,0 +1,17 @@
1
+ require 'json'
2
+
3
+ class KuberKit::Actions::EnvFileReader
4
+ include KuberKit::Import[
5
+ "core.env_file_store",
6
+ "env_file_reader.reader",
7
+ "shell.local_shell",
8
+ "ui"
9
+ ]
10
+
11
+ Contract Symbol, Hash => Any
12
+ def call(env_file_name, options)
13
+ env_file = env_file_store.get(env_file_name)
14
+ result = reader.read(local_shell, env_file)
15
+ ui.print_info(env_file_name.to_s, JSON.pretty_generate(result))
16
+ end
17
+ end
@@ -0,0 +1,56 @@
1
+ class KuberKit::Actions::ImageCompiler
2
+ include KuberKit::Import[
3
+ "image_compiler.compiler",
4
+ "image_compiler.image_dependency_resolver",
5
+ "shell.local_shell",
6
+ "tools.logger",
7
+ "configs",
8
+ "ui"
9
+ ]
10
+
11
+ Contract ArrayOf[Symbol], Hash => Any
12
+ def call(image_names, options)
13
+ build_id = generate_build_id
14
+
15
+ resolved_dependencies = []
16
+ dependencies = image_dependency_resolver.get_next(image_names)
17
+
18
+ while (dependencies - resolved_dependencies).any?
19
+ compile_simultaneously(dependencies, build_id)
20
+ resolved_dependencies += dependencies
21
+ dependencies = image_dependency_resolver.get_next(image_names, resolved: resolved_dependencies)
22
+ end
23
+
24
+ compile_simultaneously(image_names - resolved_dependencies, build_id)
25
+ end
26
+
27
+ private
28
+ def compile_simultaneously(image_names, build_id)
29
+ task_group = ui.create_task_group
30
+ image_names.map do |image_name|
31
+
32
+ logger.info("Started compiling: #{image_name.to_s.green}")
33
+ task_group.add("Compiling #{image_name.to_s.yellow}") do |task|
34
+ compile_image(image_name, build_id)
35
+
36
+ task.update_title("Compiled #{image_name.to_s.green}")
37
+ logger.info("Finished compiling: #{image_name.to_s.green}")
38
+ end
39
+
40
+ end
41
+ task_group.wait
42
+ end
43
+
44
+ def compile_image(image_name, build_id)
45
+ compile_dir = generate_compile_dir(build_id: build_id)
46
+ image_compiler.compile(local_shell, image_name, compile_dir)
47
+ end
48
+
49
+ def generate_build_id
50
+ Time.now.strftime("%H%M%S")
51
+ end
52
+
53
+ def generate_compile_dir(build_id:)
54
+ File.join(configs.image_compile_dir, build_id)
55
+ end
56
+ end
@@ -0,0 +1,17 @@
1
+ class KuberKit::Actions::KubectlApplier
2
+ include KuberKit::Import[
3
+ "shell.kubectl_commands",
4
+ "shell.local_shell",
5
+ "ui"
6
+ ]
7
+
8
+ Contract String, Hash => Any
9
+ def call(file_path, options)
10
+ kubecfg_path = KuberKit.current_configuration.kubecfg_path
11
+ ui.create_task("Applying file: #{file_path}") do |task|
12
+ kubectl_commands.apply_file(local_shell, file_path, kubecfg_path: kubecfg_path)
13
+ task.update_title("Applied file: #{file_path}")
14
+ end
15
+ nil
16
+ end
17
+ end
@@ -0,0 +1,39 @@
1
+ class KuberKit::Actions::ServiceApplier
2
+ include KuberKit::Import[
3
+ "core.service_store",
4
+ "service_deployer.service_reader",
5
+ "service_deployer.service_list_resolver",
6
+ "shell.local_shell",
7
+ "shell.kubectl_commands",
8
+ "configs",
9
+ "ui"
10
+ ]
11
+
12
+ Contract KeywordArgs[
13
+ services: Maybe[ArrayOf[String]],
14
+ tags: Maybe[ArrayOf[String]],
15
+ ] => Any
16
+ def call(services:, tags:)
17
+ service_names = service_list_resolver.resolve(
18
+ services: services || [],
19
+ tags: tags || []
20
+ )
21
+ service_names.each do |service_name|
22
+ apply_service(service_name.to_sym)
23
+ end
24
+ end
25
+
26
+ def apply_service(service_name)
27
+ service = service_store.get_service(service_name)
28
+ kubecfg_path = KuberKit.current_configuration.kubecfg_path
29
+
30
+ result = service_reader.read(local_shell, service)
31
+ file_path = "#{configs.service_config_dir}/#{service.name}.yml"
32
+ local_shell.write(file_path, result)
33
+
34
+ ui.create_task("Applying file: #{file_path}") do |task|
35
+ kubectl_commands.apply_file(local_shell, file_path, kubecfg_path: kubecfg_path)
36
+ task.update_title("Applied file: #{file_path}")
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,17 @@
1
+ class KuberKit::Actions::ServiceReader
2
+ include KuberKit::Import[
3
+ "core.service_store",
4
+ "service_deployer.service_reader",
5
+ "shell.local_shell",
6
+ "ui"
7
+ ]
8
+
9
+ Contract Symbol, Hash => Any
10
+ def call(service_name, options)
11
+ service = service_store.get_service(service_name)
12
+
13
+ result = service_reader.read(local_shell, service)
14
+
15
+ ui.print_info(service_name.to_s, result)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ class KuberKit::Actions::TemplateReader
2
+ include KuberKit::Import[
3
+ "core.template_store",
4
+ "template_reader.reader",
5
+ "shell.local_shell",
6
+ "ui"
7
+ ]
8
+
9
+ Contract Symbol, Hash => Any
10
+ def call(template_name, options)
11
+ template = template_store.get(template_name)
12
+
13
+ result = reader.read(local_shell, template)
14
+
15
+ ui.print_info(template_name.to_s, result)
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ class KuberKit::ArtifactsSync::AbstractArtifactResolver
2
+ def resolve(shell, artifact)
3
+ raise KuberKit::NotImplementedError, "must be implemented"
4
+ end
5
+ end
@@ -0,0 +1,42 @@
1
+ class KuberKit::ArtifactsSync::ArtifactsUpdater
2
+ ResolverNotFoundError = Class.new(KuberKit::NotFoundError)
3
+
4
+ include KuberKit::Import[
5
+ "artifacts_sync.git_artifact_resolver",
6
+ "artifacts_sync.null_artifact_resolver",
7
+ "tools.logger"
8
+ ]
9
+
10
+ def use_resolver(artifact_resolver, artifact_class:)
11
+ @@resolvers ||= {}
12
+
13
+ if !artifact_resolver.is_a?(KuberKit::ArtifactsSync::AbstractArtifactResolver)
14
+ raise ArgumentError.new("should be an instance of KuberKit::ArtifactsSync::AbstractArtifactResolver, got: #{artifact_resolver.inspect}")
15
+ end
16
+
17
+ @@resolvers[artifact_class] = artifact_resolver
18
+ end
19
+
20
+ def update(shell, artifacts)
21
+ add_default_resolvers
22
+
23
+ artifacts.each do |artifact|
24
+ resolver = @@resolvers[artifact.class]
25
+
26
+ logger.info "Updating artifact #{artifact.name.to_s.green}"
27
+
28
+ raise ResolverNotFoundError, "Can't find resolver for artifact #{artifact}" if resolver.nil?
29
+
30
+ resolver.resolve(shell, artifact)
31
+ end
32
+ end
33
+
34
+ def add_default_resolvers
35
+ use_resolver(git_artifact_resolver, artifact_class: KuberKit::Core::Artifacts::Git)
36
+ use_resolver(null_artifact_resolver, artifact_class: KuberKit::Core::Artifacts::Local)
37
+ end
38
+
39
+ def reset!
40
+ @@resolvers = {}
41
+ end
42
+ end
@@ -0,0 +1,31 @@
1
+ class KuberKit::ArtifactsSync::GitArtifactResolver < KuberKit::ArtifactsSync::AbstractArtifactResolver
2
+
3
+ include KuberKit::Import[
4
+ "shell.git_commands",
5
+ ]
6
+
7
+ Contract KuberKit::Shell::AbstractShell, KuberKit::Core::Artifacts::Git => Any
8
+ def resolve(shell, artifact)
9
+ already_cloned = artifact_already_cloned?(
10
+ shell: shell,
11
+ target_path: artifact.cloned_path,
12
+ remote_url: artifact.remote_url,
13
+ )
14
+
15
+ if already_cloned
16
+ git_commands.force_pull_repo(shell,
17
+ path: artifact.cloned_path, branch: artifact.branch
18
+ )
19
+ else
20
+ git_commands.download_repo(shell,
21
+ remote_url: artifact.remote_url, path: artifact.cloned_path, branch: artifact.branch
22
+ )
23
+ end
24
+ end
25
+
26
+ private
27
+ def artifact_already_cloned?(shell:, target_path:, remote_url:)
28
+ target_remote_url = git_commands.get_remote_url(shell, target_path)
29
+ target_remote_url == remote_url
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ class KuberKit::ArtifactsSync::NullArtifactResolver < KuberKit::ArtifactsSync::AbstractArtifactResolver
2
+
3
+ Contract KuberKit::Shell::AbstractShell, Any => Any
4
+ def resolve(shell, artifact)
5
+ return true
6
+ end
7
+ end
@@ -0,0 +1,72 @@
1
+ require 'thor'
2
+
3
+ class KuberKit::CLI < Thor
4
+ class_option :path, :type => :string
5
+ class_option :images_path, :type => :string
6
+ class_option :infra_path, :type => :string
7
+ class_option :configurations_path, :type => :string
8
+ class_option :debug, :type => :boolean, aliases: ["-d"]
9
+ class_option :configuration, :type => :string, aliases: ["-C"]
10
+
11
+ desc "compile IMAGE_NAMES", "Compile image with IMAGE_NAMES (comma-separated)"
12
+ def compile(image_names_str)
13
+ KuberKit.set_debug_mode(options[:debug])
14
+
15
+ image_names = image_names_str.split(",").map(&:strip).map(&:to_sym)
16
+
17
+ KuberKit::Container['actions.configuration_loader'].call(options)
18
+ KuberKit::Container['actions.image_compiler'].call(image_names, options)
19
+
20
+ logger = KuberKit::Container['tools.logger']
21
+ logger.info("---------------------------")
22
+ logger.info("Image compilation finished!")
23
+ logger.info("---------------------------")
24
+ end
25
+
26
+ desc "env ENV_FILE_NAME", "Return content of Env File ENV_FILE_NAME"
27
+ def env(env_file_name)
28
+ KuberKit.set_debug_mode(options[:debug])
29
+
30
+ KuberKit::Container['actions.configuration_loader'].call(options)
31
+ KuberKit::Container['actions.env_file_reader'].call(env_file_name.to_sym, options)
32
+ end
33
+
34
+ desc "template TEMPLATE_NAME", "Return content of Template TEMPLATE_NAME"
35
+ def template(template_name)
36
+ KuberKit.set_debug_mode(options[:debug])
37
+
38
+ KuberKit::Container['actions.configuration_loader'].call(options)
39
+ KuberKit::Container['actions.template_reader'].call(template_name.to_sym, options)
40
+ end
41
+
42
+ desc "service SERVICE_NAME", "Return content of Service SERVICE_NAME"
43
+ def service(service_name)
44
+ KuberKit.set_debug_mode(options[:debug])
45
+
46
+ KuberKit::Container['actions.configuration_loader'].call(options)
47
+ KuberKit::Container['actions.service_reader'].call(service_name.to_sym, options)
48
+ end
49
+
50
+ desc "apply FILE_PATH", "Apply FILE_PATH with kubectl"
51
+ def apply(file_path)
52
+ KuberKit.set_debug_mode(options[:debug])
53
+
54
+ KuberKit::Container['actions.configuration_loader'].call(options)
55
+ KuberKit::Container['actions.kubectl_applier'].call(File.expand_path(file_path), options)
56
+ end
57
+
58
+ desc "deploy CONTEXT_NAME", "Deploy CONTEXT_NAME with kubectl"
59
+ method_option :services, :type => :array, aliases: ["-s"]
60
+ method_option :tags, :type => :array, aliases: ["-t"]
61
+ def deploy
62
+ KuberKit.set_debug_mode(options[:debug])
63
+
64
+ KuberKit::Container['actions.configuration_loader'].call(options)
65
+
66
+ KuberKit::Container['actions.service_applier'].call(services: options[:services], tags: options[:tags])
67
+ end
68
+
69
+ def self.exit_on_failure?
70
+ true
71
+ end
72
+ end
@@ -0,0 +1,42 @@
1
+ class KuberKit::Configs
2
+ IMAGE_DOCKERFILE_NAME = "Dockerfile".freeze
3
+ IMAGE_BUILD_CONTEXT_DIR = "build_context".freeze
4
+ IMAGE_TAG = 'latest'.freeze
5
+ IMAGE_COMPILE_DIR = "/tmp/kuber_kit/image_builds"
6
+ DOCKER_IGNORE_LIST = [
7
+ 'Dockerfile',
8
+ '.DS_Store',
9
+ '**/.DS_Store',
10
+ '**/*.log',
11
+ 'node_modules',
12
+ '.vagrant',
13
+ '.vscode',
14
+ 'tmp',
15
+ 'logs'
16
+ ]
17
+ INDOCKER_DIRNAME = "kuber_kit".freeze
18
+ IMAGES_DIRNAME = "images".freeze
19
+ INFRA_DIRNAME = "infrastructure".freeze
20
+ CONFIGURATIONS_DIRNAME = "configurations".freeze
21
+ ARTIFACT_CLONE_DIR = "/tmp/kuber_kit/artifacts"
22
+ SERVICE_CONFIG_DIR = "/tmp/kuber_kit/services"
23
+
24
+ attr_accessor :image_dockerfile_name, :image_build_context_dir, :image_tag,
25
+ :docker_ignore_list, :image_compile_dir,
26
+ :kuber_kit_dirname, :images_dirname, :infra_dirname, :configurations_dirname,
27
+ :artifact_clone_dir, :service_config_dir
28
+
29
+ def initialize
30
+ @image_dockerfile_name = IMAGE_DOCKERFILE_NAME
31
+ @image_build_context_dir = IMAGE_BUILD_CONTEXT_DIR
32
+ @image_tag = IMAGE_TAG
33
+ @image_compile_dir = IMAGE_COMPILE_DIR
34
+ @docker_ignore_list = DOCKER_IGNORE_LIST
35
+ @kuber_kit_dirname = INDOCKER_DIRNAME
36
+ @images_dirname = IMAGES_DIRNAME
37
+ @infra_dirname = INFRA_DIRNAME
38
+ @configurations_dirname = CONFIGURATIONS_DIRNAME
39
+ @artifact_clone_dir = ARTIFACT_CLONE_DIR
40
+ @service_config_dir = SERVICE_CONFIG_DIR
41
+ end
42
+ end