indocker 0.1.12 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
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,