indocker 0.1.12 → 0.1.17

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/Gemfile +0 -1
  4. data/Gemfile.lock +8 -2
  5. data/example/indocker/bin/deploy +3 -6
  6. data/example/indocker/bin/remote/compile +2 -6
  7. data/example/indocker/bin/remote/run +2 -6
  8. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_build/Dockerfile +0 -0
  9. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_build/container.rb +2 -1
  10. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_build/image.rb +0 -0
  11. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_start/Dockerfile +0 -0
  12. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_start/build_context/bin/run +0 -0
  13. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_start/container.rb +2 -1
  14. data/example/indocker/bounded_contexts/{shared → bad_containers}/bad_container_start/image.rb +0 -0
  15. data/example/indocker/bounded_contexts/good_containers/daemon_container/Dockerfile +1 -0
  16. data/example/indocker/bounded_contexts/good_containers/daemon_container/container.rb +6 -0
  17. data/example/indocker/bounded_contexts/good_containers/daemon_container/image.rb +4 -0
  18. data/example/indocker/bounded_contexts/good_containers/dependency_container/Dockerfile +1 -0
  19. data/example/indocker/bounded_contexts/good_containers/dependency_container/container.rb +6 -0
  20. data/example/indocker/bounded_contexts/good_containers/dependency_container/image.rb +4 -0
  21. data/example/indocker/bounded_contexts/good_containers/good_container/Dockerfile +3 -0
  22. data/example/indocker/bounded_contexts/good_containers/good_container/build_context/example_file.txt +2 -0
  23. data/example/indocker/bounded_contexts/good_containers/good_container/container.rb +10 -0
  24. data/example/indocker/bounded_contexts/good_containers/good_container/image.rb +4 -0
  25. data/example/indocker/bounded_contexts/shared/{good_container → parent_image}/Dockerfile +1 -1
  26. data/example/indocker/bounded_contexts/shared/parent_image/image.rb +3 -0
  27. data/example/indocker/bounded_contexts/shared/ruby/container.rb +2 -1
  28. data/example/indocker/configurations/external.rb +11 -1
  29. data/example/indocker/env_files/development_env.env +1 -0
  30. data/example/indocker/infrastructure/artifacts.rb +26 -0
  31. data/example/indocker/infrastructure/env_files.rb +6 -0
  32. data/example/indocker/setup.rb +3 -1
  33. data/indocker.gemspec +1 -0
  34. data/lib/indocker.rb +42 -20
  35. data/lib/indocker/artifacts/base.rb +26 -0
  36. data/lib/indocker/artifacts/dto/file_dto.rb +8 -0
  37. data/lib/indocker/artifacts/git.rb +17 -5
  38. data/lib/indocker/artifacts/remote.rb +17 -0
  39. data/lib/indocker/artifacts/services/synchronizer.rb +59 -0
  40. data/lib/indocker/build_context.rb +6 -41
  41. data/lib/indocker/build_context_helper.rb +1 -1
  42. data/lib/indocker/container_deployer.rb +12 -23
  43. data/lib/indocker/crontab_redeploy_rules_builder.rb +6 -6
  44. data/lib/indocker/deploy_context.rb +4 -32
  45. data/lib/indocker/deployment_checker.rb +4 -2
  46. data/lib/indocker/docker_run_args.rb +2 -2
  47. data/lib/indocker/images/image_compiler.rb +0 -1
  48. data/lib/indocker/{configuration_deployer.rb → launchers/configuration_deployer.rb} +66 -113
  49. data/lib/indocker/{container_runner.rb → launchers/container_runner.rb} +2 -3
  50. data/lib/indocker/launchers/dto/remote_operation_dto.rb +10 -0
  51. data/lib/indocker/{images_compiler.rb → launchers/images_compiler.rb} +1 -2
  52. data/lib/indocker/{network.rb → networks/network.rb} +1 -1
  53. data/lib/indocker/{network_helper.rb → networks/network_helper.rb} +1 -1
  54. data/lib/indocker/repositories/cloner.rb +73 -0
  55. data/lib/indocker/server_pools/build_server_connection.rb +15 -0
  56. data/lib/indocker/server_pools/build_server_pool.rb +40 -0
  57. data/lib/indocker/server_pools/deploy_server_connection.rb +17 -0
  58. data/lib/indocker/server_pools/deploy_server_pool.rb +41 -0
  59. data/lib/indocker/server_pools/server_connection.rb +37 -0
  60. data/lib/indocker/version.rb +1 -1
  61. data/lib/indocker/{volume_helper.rb → volumes/volume_helper.rb} +1 -1
  62. metadata +56 -24
  63. data/example/indocker/bounded_contexts/shared/good_container/container.rb +0 -5
  64. data/example/indocker/bounded_contexts/shared/good_container/image.rb +0 -3
  65. data/example/spec/indocker_spec.rb +0 -39
  66. data/example/spec/spec_helper.rb +0 -39
  67. data/lib/indocker/build_context_pool.rb +0 -42
  68. data/lib/indocker/configurations/formatters/stdout.rb +0 -36
  69. data/lib/indocker/repositories/clonner.rb +0 -17
  70. data/lib/indocker/server_pool.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 288383229ce87e66ab3869aa6fcd5180e0a54d09ca4046ed32a4ec34550a564f
4
- data.tar.gz: 77eed21c9ad07145d0141c8450495fd74b6336cea91fc76a5dc37909f3983ee6
3
+ metadata.gz: 87f0d247cd6a4aa8f3958d6b9d9aef1dfd879c15651c9e4c01c9e15e7bffe0a0
4
+ data.tar.gz: e0391bebb9cd04117a68e904caef9ccd72b586fd10a8e2ba02b3673b389de8de
5
5
  SHA512:
6
- metadata.gz: 6e91c51c6898841882c3543a31710b84db43e2fc20498174119b269eaa47f9caf260a0720d99645a03dd292d470be4adadaaec6d4cadebce1290998782a3156a
7
- data.tar.gz: cbf4395ff9f1f21c56785fa926dbaf3af80f33cad68041fa4ee9c2e8cee85faa353f0efe9c34aa23707b47764e5a0c6b4359dacf1a50b17f4e02db003455689d
6
+ metadata.gz: baad11d2671bb96f35cfed12ca80ac713d135ee19a4b8e7222ab91685a9f5efd65a84d539425cc68e7f786eca689e451b46ea2e503569037b080aee422f01fe2
7
+ data.tar.gz: 876a4b96e5a96f7a1f9ffff7138597e413739a84c4bc1dbe8b0adb18073e431ecef0da966b7c7bf861d3f6792de8ec21e43f5970aae6ccb3b5813b095700a787
@@ -0,0 +1 @@
1
+ 2.5.0
data/Gemfile CHANGED
@@ -6,6 +6,5 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
6
6
  gemspec
7
7
 
8
8
  group :test do
9
- gem 'rspec'
10
9
  gem 'pry'
11
10
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- indocker (0.1.12)
4
+ indocker (0.1.17)
5
5
  net-ssh
6
6
 
7
7
  GEM
@@ -9,6 +9,7 @@ GEM
9
9
  specs:
10
10
  coderay (1.1.3)
11
11
  diff-lcs (1.3)
12
+ docile (1.3.2)
12
13
  method_source (1.0.0)
13
14
  net-ssh (6.1.0)
14
15
  pry (0.13.1)
@@ -28,6 +29,10 @@ GEM
28
29
  diff-lcs (>= 1.2.0, < 2.0)
29
30
  rspec-support (~> 3.9.0)
30
31
  rspec-support (3.9.2)
32
+ simplecov (0.18.5)
33
+ docile (~> 1.1)
34
+ simplecov-html (~> 0.11)
35
+ simplecov-html (0.12.2)
31
36
 
32
37
  PLATFORMS
33
38
  ruby
@@ -37,7 +42,8 @@ DEPENDENCIES
37
42
  indocker!
38
43
  pry
39
44
  rake (~> 12.3.3)
40
- rspec
45
+ rspec (~> 3.0)
46
+ simplecov (~> 0.18.5)
41
47
 
42
48
  BUNDLED WITH
43
49
  1.17.3
@@ -94,12 +94,9 @@ if !configurations.include?(options[:configuration])
94
94
  exit 1
95
95
  end
96
96
 
97
- begin
98
- require 'indocker'
99
- rescue LoadError
100
- puts "InDocker has been moved into a separate gem. Please install using `gem install indocker`"
101
- exit
102
- end
97
+ require 'rubygems'
98
+ require 'bundler/setup'
99
+ require 'indocker'
103
100
 
104
101
  if options[:debug]
105
102
  Indocker.set_log_level(Logger::DEBUG)
@@ -49,12 +49,8 @@ if !options.has_key?(:images)
49
49
  puts "At least one image should be provided"
50
50
  end
51
51
 
52
- begin
53
- require 'indocker'
54
- rescue LoadError
55
- puts "InDocker has been moved into a separate gem. Please install using `gem install indocker`"
56
- exit 1
57
- end
52
+ require 'rubygems'
53
+ require 'indocker'
58
54
 
59
55
  if options[:debug]
60
56
  Indocker.set_log_level(Logger::DEBUG)
@@ -46,12 +46,8 @@ if !configurations.include?(options[:configuration])
46
46
  exit 1
47
47
  end
48
48
 
49
- begin
50
- require 'indocker'
51
- rescue LoadError
52
- puts "InDocker has been moved into a separate gem. Please install using `gem install indocker`"
53
- exit 1
54
- end
49
+ require 'rubygems'
50
+ require 'indocker'
55
51
 
56
52
  if options[:debug]
57
53
  Indocker.set_log_level(Logger::DEBUG)
@@ -2,4 +2,5 @@ Indocker
2
2
  .define_container(:bad_container_build)
3
3
  .tags('bad_container_build', 'console=true')
4
4
  .image(:bad_container_build)
5
- .networks(:app_net)
5
+ .networks(:app_net)
6
+ .daemonize(false)
@@ -2,4 +2,5 @@ Indocker
2
2
  .define_container(:bad_container_start)
3
3
  .tags('bad_container_start', 'console=true')
4
4
  .image(:bad_container_start)
5
- .networks(:app_net)
5
+ .networks(:app_net)
6
+ .daemonize(false)
@@ -0,0 +1 @@
1
+ FROM <%= image_url(:parent_image) %>
@@ -0,0 +1,6 @@
1
+ Indocker
2
+ .define_container(:daemon_container)
3
+ .tags('daemon_container', 'console=true')
4
+ .image(:daemon_container)
5
+ .networks(:app_net)
6
+ .daemonize(true)
@@ -0,0 +1,4 @@
1
+ Indocker
2
+ .define_image(:daemon_container)
3
+ .depends_on(:parent_image)
4
+ .registry(:default)
@@ -0,0 +1 @@
1
+ FROM <%= image_url(:parent_image) %>
@@ -0,0 +1,6 @@
1
+ Indocker
2
+ .define_container(:dependency_container)
3
+ .tags('dependency_container', 'console=true')
4
+ .image(:dependency_container)
5
+ .networks(:app_net)
6
+ .daemonize(false)
@@ -0,0 +1,4 @@
1
+ Indocker
2
+ .define_image(:dependency_container)
3
+ .depends_on(:parent_image)
4
+ .registry(:default)
@@ -0,0 +1,3 @@
1
+ FROM <%= image_url(:parent_image) %>
2
+
3
+ COPY example_file.txt example_file.txt
@@ -0,0 +1,2 @@
1
+ domain: <%= global_build_args.domain %>
2
+ hostname: <%= containers.good_container.hostname %>
@@ -0,0 +1,10 @@
1
+ Indocker
2
+ .define_container(:good_container)
3
+ .depends_on(:dependency_container)
4
+ .tags('good_container', 'console=true')
5
+ .image(:good_container)
6
+ .networks(:app_net)
7
+ .daemonize(false)
8
+ # .start({
9
+ # env_files: [:default_env],
10
+ # })
@@ -0,0 +1,4 @@
1
+ Indocker
2
+ .define_image(:good_container)
3
+ .depends_on(:parent_image)
4
+ .registry(:default)
@@ -1,4 +1,4 @@
1
1
  FROM ruby:2.5.0
2
2
 
3
3
  RUN mkdir /app
4
- WORKDIR /app
4
+ WORKDIR /app
@@ -0,0 +1,3 @@
1
+ Indocker
2
+ .define_image(:parent_image)
3
+ .registry(:default)
@@ -2,4 +2,5 @@ Indocker
2
2
  .define_container(:ruby)
3
3
  .tags('ruby', 'console=true')
4
4
  .image(:ruby)
5
- .networks(:app_net)
5
+ .networks(:app_net)
6
+ .daemonize(false)
@@ -2,6 +2,10 @@ Indocker
2
2
  .build_configuration(:external)
3
3
  .use_registry(:dev, as: :default)
4
4
  .use_build_server(:external_bs)
5
+ .global_build_args({
6
+ domain: 'indocker.me',
7
+ })
8
+ .use_env_file(:development_env, as: :default_env)
5
9
  .enabled_containers(
6
10
  ruby: {
7
11
  servers: [:external],
@@ -14,5 +18,11 @@ Indocker
14
18
  },
15
19
  bad_container_start: {
16
20
  servers: [:external],
21
+ },
22
+ daemon_container: {
23
+ servers: [:external],
17
24
  }
18
- )
25
+ ).artifacts(
26
+ indocker_readme: [:external],
27
+ hosts_file: [:external],
28
+ )
@@ -0,0 +1 @@
1
+ PROJECT_NAME=indocker
@@ -0,0 +1,26 @@
1
+ Indocker.add_artifact(
2
+ Indocker::Artifacts::Git.new(
3
+ name: :indocker_readme,
4
+ remote_name: 'origin',
5
+ remote_url: 'https://github.com/ArtStation/indocker.git',
6
+ branch: :master,
7
+ files: [
8
+ Indocker::Artifacts::DTO::FileDTO.new(
9
+ source_path: './README.md',
10
+ target_path: Indocker.deploy_dir,
11
+ )
12
+ ]
13
+ )
14
+ )
15
+
16
+ Indocker.add_artifact(
17
+ Indocker::Artifacts::Remote.new(
18
+ name: :hosts_file,
19
+ files: [
20
+ Indocker::Artifacts::DTO::FileDTO.new(
21
+ source_path: '/etc/hosts',
22
+ target_path: Indocker.deploy_dir,
23
+ )
24
+ ]
25
+ )
26
+ )
@@ -0,0 +1,6 @@
1
+ Indocker.define_env_file(
2
+ Indocker::EnvFiles::Local.new(
3
+ :development_env,
4
+ File.expand_path(File.join(__dir__, '../env_files/development_env.env'))
5
+ )
6
+ )
@@ -3,7 +3,7 @@ require 'indocker'
3
3
  root_dir = File.join(__dir__, '..', '..')
4
4
 
5
5
  Indocker.set_root_dir(__dir__)
6
- Indocker.set_deploy_dir('~/deployment')
6
+ Indocker.set_deploy_dir('~/.indocker-deployment')
7
7
 
8
8
  Indocker.set_dockerignore [
9
9
  'Dockerfile',
@@ -18,6 +18,8 @@ require_relative 'infrastructure/registries'
18
18
  require_relative 'infrastructure/servers'
19
19
  require_relative 'infrastructure/build_servers'
20
20
  require_relative 'infrastructure/networks'
21
+ require_relative 'infrastructure/artifacts'
22
+ require_relative 'infrastructure/env_files'
21
23
 
22
24
  Indocker.set_bounded_contexts_dir(File.join(__dir__, 'bounded_contexts'))
23
25
 
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "bundler", "~> 1.17"
28
28
  spec.add_development_dependency "rake", "~> 12.3.3"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
+ spec.add_development_dependency "simplecov", "~> 0.18.5"
30
31
  end
@@ -10,16 +10,12 @@ module Indocker
10
10
  autoload :Git, 'repositories/git'
11
11
  autoload :Local, 'repositories/local'
12
12
  autoload :NoSync, 'repositories/no_sync'
13
- autoload :Clonner, 'repositories/clonner'
13
+ autoload :Cloner, 'repositories/cloner'
14
14
  end
15
15
 
16
16
  module Configurations
17
17
  autoload :Configuration, 'configurations/configuration'
18
18
  autoload :ConfigurationBuilder, 'configurations/configuration_builder'
19
-
20
- module Formatters
21
- autoload :Stdout, 'configurations/formatters/stdout'
22
- end
23
19
  end
24
20
 
25
21
  module Registries
@@ -50,6 +46,7 @@ module Indocker
50
46
  autoload :Local, 'volumes/local'
51
47
  autoload :External, 'volumes/external'
52
48
  autoload :Repository, 'volumes/repository'
49
+ autoload :VolumeHelper, 'volumes/volume_helper'
53
50
  end
54
51
 
55
52
  module EnvFiles
@@ -58,33 +55,58 @@ module Indocker
58
55
  end
59
56
 
60
57
  module Artifacts
58
+ autoload :Base, 'artifacts/base'
61
59
  autoload :Git, 'artifacts/git'
60
+ autoload :Remote, 'artifacts/remote'
61
+
62
+ module DTO
63
+ autoload :FileDTO, 'artifacts/dto/file_dto'
64
+ end
65
+
66
+ module Services
67
+ autoload :Synchronizer, 'artifacts/services/synchronizer'
68
+ end
69
+ end
70
+
71
+ module Networks
72
+ autoload :Network, 'networks/network'
73
+ autoload :NetworkHelper, 'networks/network_helper'
74
+ end
75
+
76
+ module Launchers
77
+ autoload :ConfigurationDeployer, 'launchers/configuration_deployer'
78
+ autoload :ImagesCompiler, 'launchers/images_compiler'
79
+ autoload :ContainerRunner, 'launchers/container_runner'
80
+
81
+ module DTO
82
+ autoload :RemoteOperationDTO, 'launchers/dto/remote_operation_dto'
83
+ end
84
+ end
85
+
86
+ module ServerPools
87
+ autoload :ServerConnection, 'server_pools/server_connection'
88
+ autoload :DeployServerPool, 'server_pools/deploy_server_pool'
89
+ autoload :DeployServerConnection, 'server_pools/deploy_server_connection'
90
+ autoload :BuildServerPool, 'server_pools/build_server_pool'
91
+ autoload :BuildServerConnection, 'server_pools/build_server_connection'
62
92
  end
63
93
 
64
94
  autoload :HashMerger, 'hash_merger'
65
95
  autoload :BuildServer, 'build_server'
66
96
  autoload :Server, 'server'
67
- autoload :ConfigurationDeployer, 'configuration_deployer'
68
97
  autoload :SshSession, 'ssh_session'
69
- autoload :BuildContextPool, 'build_context_pool'
70
98
  autoload :BuildContext, 'build_context'
71
99
  autoload :BuildContextHelper, 'build_context_helper'
72
100
  autoload :Shell, 'shell'
73
101
  autoload :Docker, 'docker'
74
102
  autoload :ContextArgs, 'context_args'
75
- autoload :Network, 'network'
76
103
  autoload :ContainerDeployer, 'container_deployer'
77
- autoload :ServerPool, 'server_pool'
78
104
  autoload :DeployContext, 'deploy_context'
79
105
  autoload :ContainerHelper, 'container_helper'
80
106
  autoload :DockerRunArgs, 'docker_run_args'
81
- autoload :VolumeHelper, 'volume_helper'
82
- autoload :NetworkHelper, 'network_helper'
83
107
  autoload :Rsync, 'rsync'
84
108
  autoload :EnvFileHelper, 'env_file_helper'
85
109
  autoload :IndockerHelper, 'indocker_helper'
86
- autoload :ImagesCompiler, 'images_compiler'
87
- autoload :ContainerRunner, 'container_runner'
88
110
  autoload :SshResultLogger, 'ssh_result_logger'
89
111
  autoload :DeploymentProgress, 'deployment_progress'
90
112
  autoload :DeploymentChecker, 'deployment_checker'
@@ -172,7 +194,7 @@ module Indocker
172
194
  raise ArgumentError.new("network :#{name} was already defined")
173
195
  end
174
196
 
175
- networks.push(Indocker::Network.new(name))
197
+ networks.push(Indocker::Networks::Network.new(name))
176
198
  end
177
199
 
178
200
  def container_files
@@ -320,9 +342,9 @@ module Indocker
320
342
  builder
321
343
  end
322
344
 
323
- def deploy(containers: [], skip_tags: [], tags: [], skip_dependent: false,
345
+ def deploy(containers: [], skip_tags: [], tags: [], skip_dependent: false,
324
346
  skip_containers: [], servers: [], skip_build: false, skip_deploy: false,
325
- force_restart: false, skip_force_restart: [], auto_confirm: false,
347
+ force_restart: false, skip_force_restart: [], auto_confirm: false,
326
348
  require_confirmation: false)
327
349
 
328
350
  deployment_policy = Indocker::DeploymentPolicy.new(
@@ -340,7 +362,7 @@ module Indocker
340
362
  require_confirmation: require_confirmation,
341
363
  )
342
364
 
343
- Indocker::ConfigurationDeployer
365
+ Indocker::Launchers::ConfigurationDeployer
344
366
  .new(logger: Indocker.logger, global_logger: Indocker.global_logger)
345
367
  .run(
346
368
  configuration: configuration,
@@ -357,7 +379,7 @@ module Indocker
357
379
  )
358
380
  end
359
381
 
360
- def launched?(contaner_name, servers: [])
382
+ def launched?(contaner_name, servers: nil)
361
383
  silent_logger = Logger.new(File.open(File::NULL, "w"))
362
384
  Indocker::DeploymentChecker
363
385
  .new(silent_logger, silent_logger)
@@ -369,7 +391,7 @@ module Indocker
369
391
  end
370
392
 
371
393
  def compile(images:, skip_dependent:)
372
- Indocker::ImagesCompiler
394
+ Indocker::Launchers::ImagesCompiler
373
395
  .new(Indocker.logger)
374
396
  .compile(
375
397
  configuration: configuration,
@@ -379,7 +401,7 @@ module Indocker
379
401
  end
380
402
 
381
403
  def run(container_name, force_restart)
382
- Indocker::ContainerRunner
404
+ Indocker::Launchers::ContainerRunner
383
405
  .new(Indocker.logger)
384
406
  .run(
385
407
  configuration: configuration,