buildizer 0.0.9 → 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 (36) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile.lock +3 -5
  3. data/bin/buildizer +1 -1
  4. data/buildizer.gemspec +1 -0
  5. data/lib/buildizer/builder/base.rb +30 -35
  6. data/lib/buildizer/builder/fpm.rb +10 -10
  7. data/lib/buildizer/builder/patch.rb +2 -2
  8. data/lib/buildizer/{packager → buildizer}/buildizer_conf_mod.rb +3 -5
  9. data/lib/buildizer/{packager → buildizer}/ci_mod.rb +2 -2
  10. data/lib/buildizer/{packager → buildizer}/docker_cache_mod.rb +12 -9
  11. data/lib/buildizer/{packager → buildizer}/git_mod.rb +2 -2
  12. data/lib/buildizer/{packager → buildizer}/misc_mod.rb +34 -6
  13. data/lib/buildizer/{packager → buildizer}/overcommit_mod.rb +26 -13
  14. data/lib/buildizer/{packager → buildizer}/package_cloud_mod.rb +11 -9
  15. data/lib/buildizer/{packager → buildizer}/package_version_tag_mod.rb +2 -4
  16. data/lib/buildizer/{packager → buildizer}/project_settings_mod.rb +5 -7
  17. data/lib/buildizer/{packager → buildizer}/user_settings_mod.rb +4 -6
  18. data/lib/buildizer/{packager.rb → buildizer.rb} +29 -33
  19. data/lib/buildizer/ci/base.rb +8 -6
  20. data/lib/buildizer/ci/travis/docker_cache_mod.rb +9 -9
  21. data/lib/buildizer/ci/travis/package_cloud_mod.rb +8 -8
  22. data/lib/buildizer/ci/travis/package_version_tag_mod.rb +3 -5
  23. data/lib/buildizer/ci/travis.rb +18 -14
  24. data/lib/buildizer/cli/base.rb +3 -2
  25. data/lib/buildizer/cli/main.rb +14 -14
  26. data/lib/buildizer/core_ext/false_class.rb +5 -0
  27. data/lib/buildizer/core_ext/hash.rb +48 -0
  28. data/lib/buildizer/core_ext/pathname.rb +17 -0
  29. data/lib/buildizer/core_ext/string.rb +17 -0
  30. data/lib/buildizer/core_ext/true_class.rb +5 -0
  31. data/lib/buildizer/docker.rb +34 -31
  32. data/lib/buildizer/target/base.rb +1 -5
  33. data/lib/buildizer/version.rb +1 -1
  34. data/lib/buildizer.rb +7 -2
  35. metadata +38 -14
  36. data/lib/buildizer/refine.rb +0 -42
@@ -1,17 +1,15 @@
1
1
  module Buildizer
2
- class Packager
3
- autoload :MiscMod, 'buildizer/packager/misc_mod'
4
- autoload :ProjectSettingsMod, 'buildizer/packager/project_settings_mod'
5
- autoload :UserSettingsMod, 'buildizer/packager/user_settings_mod'
6
- autoload :CiMod, 'buildizer/packager/ci_mod'
7
- autoload :BuildizerConfMod, 'buildizer/packager/buildizer_conf_mod'
8
- autoload :PackageVersionTagMod, 'buildizer/packager/package_version_tag_mod'
9
- autoload :GitMod, 'buildizer/packager/git_mod'
10
- autoload :OvercommitMod, 'buildizer/packager/overcommit_mod'
11
- autoload :PackageCloudMod, 'buildizer/packager/package_cloud_mod'
12
- autoload :DockerCacheMod, 'buildizer/packager/docker_cache_mod'
13
-
14
- using Refine
2
+ class Buildizer
3
+ autoload :MiscMod, 'buildizer/buildizer/misc_mod'
4
+ autoload :ProjectSettingsMod, 'buildizer/buildizer/project_settings_mod'
5
+ autoload :UserSettingsMod, 'buildizer/buildizer/user_settings_mod'
6
+ autoload :CiMod, 'buildizer/buildizer/ci_mod'
7
+ autoload :BuildizerConfMod, 'buildizer/buildizer/buildizer_conf_mod'
8
+ autoload :PackageVersionTagMod, 'buildizer/buildizer/package_version_tag_mod'
9
+ autoload :GitMod, 'buildizer/buildizer/git_mod'
10
+ autoload :OvercommitMod, 'buildizer/buildizer/overcommit_mod'
11
+ autoload :PackageCloudMod, 'buildizer/buildizer/package_cloud_mod'
12
+ autoload :DockerCacheMod, 'buildizer/buildizer/docker_cache_mod'
15
13
 
16
14
  include MiscMod
17
15
  include ProjectSettingsMod
@@ -24,16 +22,30 @@ module Buildizer
24
22
  include PackageCloudMod
25
23
  include DockerCacheMod
26
24
 
27
- attr_reader :cli
25
+ attr_reader :options
28
26
  attr_reader :package_path
29
27
  attr_reader :work_path
30
28
  attr_reader :debug
31
29
 
32
- def initialize(cli)
30
+ def initialize(cli: nil, **kwargs)
33
31
  @cli = cli
32
+ @options = kwargs
34
33
  @package_path = Pathname.new(ENV['BUILDIZER_PATH'] || '.').expand_path
35
34
  @work_path = Pathname.new(ENV['BUILDIZER_WORK_PATH'] || '~/.buildizer').expand_path
36
- @debug = ENV['BUILDIZER_DEBUG'].nil? ? cli.options['debug'] : ENV['BUILDIZER_DEBUG'].to_s.on?
35
+ @debug = ENV['BUILDIZER_DEBUG'].nil? ? options[:debug] : ENV['BUILDIZER_DEBUG'].to_s.on?
36
+ @color = interactive? ? options[:color] : false
37
+ end
38
+
39
+ def interactive?
40
+ @cli and $stdout.isatty
41
+ end
42
+
43
+ def secure_option(name, ask: nil, default: nil)
44
+ if interactive? and ask
45
+ @cli.ask(ask, echo: false, default: default).tap{puts}
46
+ else
47
+ options.fetch(name.to_sym, default)
48
+ end
37
49
  end
38
50
 
39
51
  def prepare!
@@ -52,22 +64,6 @@ module Buildizer
52
64
  builder.verify
53
65
  end
54
66
 
55
- def git_hooks_path
56
- package_path.join('.git').join('hooks')
57
- end
58
-
59
- def git_old_hooks_path
60
- git_hooks_path.join('old-hooks')
61
- end
62
-
63
- def git_precommit_path
64
- git_hooks_path.join('pre-commit')
65
- end
66
-
67
- def git_old_precommit_path
68
- git_old_hooks_path.join('pre-commit')
69
- end
70
-
71
67
  def builder
72
68
  @builder ||= begin
73
69
  build_type = buildizer_conf['build_type']
@@ -79,5 +75,5 @@ module Buildizer
79
75
  klass.new(self)
80
76
  end
81
77
  end
82
- end # Packager
78
+ end # Buildizer
83
79
  end # Buildizer
@@ -1,14 +1,12 @@
1
1
  module Buildizer
2
2
  module Ci
3
3
  class Base
4
- using Refine
4
+ attr_reader :buildizer
5
5
 
6
- attr_reader :packager
7
-
8
- def initialize(packager)
6
+ def initialize(buildizer)
9
7
  super()
10
8
 
11
- @packager = packager
9
+ @buildizer = buildizer
12
10
  end
13
11
 
14
12
  def conf
@@ -16,7 +14,7 @@ module Buildizer
16
14
  end
17
15
 
18
16
  def conf_path
19
- packager.package_path.join(conf_file_name)
17
+ buildizer.package_path.join(conf_file_name)
20
18
  end
21
19
 
22
20
  def conf_file_name
@@ -35,6 +33,10 @@ module Buildizer
35
33
  raise
36
34
  end
37
35
 
36
+ def configuration_actual!
37
+ raise Error, message: "#{ci_name} confugration update needed" unless configuration_actual?
38
+ end
39
+
38
40
  def git_tag
39
41
  res = _git_tag.to_s
40
42
  if res.empty? then nil else res end
@@ -15,9 +15,9 @@ module Buildizer
15
15
  end # << self
16
16
 
17
17
  def docker_cache_setup!
18
- if packager.docker_cache_clear_settings?
18
+ if buildizer.docker_cache_clear_settings?
19
19
  with_travis do
20
- packager.with_log(desc: "Travis docker cache settings") do |&fin|
20
+ buildizer.with_log(desc: "Travis docker cache settings") do |&fin|
21
21
  docker_cache_repo_var_delete!
22
22
  docker_cache_user_var_delete!
23
23
  docker_cache_password_var_delete!
@@ -27,14 +27,14 @@ module Buildizer
27
27
  fin.call 'DELETED'
28
28
  end # with_log
29
29
  end # with_travis
30
- elsif packager.docker_cache_update_settings?
30
+ elsif buildizer.docker_cache_update_settings?
31
31
  with_travis do
32
- packager.with_log(desc: "Travis docker cache settings") do |&fin|
33
- docker_cache_repo_var_update! packager.setup_docker_cache_repo, public: true
34
- docker_cache_user_var_update! packager.setup_docker_cache_user, public: false
35
- docker_cache_password_var_update! packager.setup_docker_cache_password, public: false
36
- docker_cache_email_var_update! packager.setup_docker_cache_email, public: false
37
- docker_cache_server_var_update! packager.setup_docker_cache_server, public: true
32
+ buildizer.with_log(desc: "Travis docker cache settings") do |&fin|
33
+ docker_cache_repo_var_update! buildizer.setup_docker_cache_repo, public: true
34
+ docker_cache_user_var_update! buildizer.setup_docker_cache_user, public: true
35
+ docker_cache_password_var_update! buildizer.setup_docker_cache_password, public: false
36
+ docker_cache_email_var_update! buildizer.setup_docker_cache_email, public: false
37
+ docker_cache_server_var_update! buildizer.setup_docker_cache_server, public: true
38
38
 
39
39
  fin.call 'UPDATED'
40
40
  end # with_log
@@ -36,33 +36,33 @@ module Buildizer
36
36
  end
37
37
 
38
38
  def package_cloud_setup!
39
- if packager.package_cloud_clear_settings?
39
+ if buildizer.package_cloud_clear_settings?
40
40
  with_travis do
41
41
  repo_list = []
42
42
  repo_list = package_cloud_repo_list_var.value.split(',') if package_cloud_repo_list_var
43
43
  org_list = repo_list.map {|repo| repo.split('/').first}.uniq
44
44
  org_list.each do |org|
45
- packager.with_log(desc: "Travis package cloud token for '#{org}'") do |&fin|
45
+ buildizer.with_log(desc: "Travis package cloud token for '#{org}'") do |&fin|
46
46
  package_cloud_token_var_delete! org: org
47
47
  fin.call 'DELETED'
48
48
  end
49
49
  end
50
50
 
51
- packager.with_log(desc: "Travis package cloud repo list") do |&fin|
51
+ buildizer.with_log(desc: "Travis package cloud repo list") do |&fin|
52
52
  package_cloud_repo_list_var_delete!
53
53
  fin.call 'DELETED'
54
54
  end
55
55
  end # with_travis
56
- elsif packager.package_cloud_update_settings?
56
+ elsif buildizer.package_cloud_update_settings?
57
57
  with_travis do
58
- packager.with_log(desc: "Travis package cloud repo list") do |&fin|
59
- package_cloud_repo_list_var_update! packager.setup_package_cloud_repo_list.join(','), public: true
58
+ buildizer.with_log(desc: "Travis package cloud repo list") do |&fin|
59
+ package_cloud_repo_list_var_update! buildizer.setup_package_cloud_repo_list.join(','), public: true
60
60
  fin.call 'UPDATED'
61
61
  end # with_log
62
62
 
63
- packager.setup_package_cloud_org_desc_list.each do |desc|
63
+ buildizer.setup_package_cloud_org_desc_list.each do |desc|
64
64
  next unless desc[:token]
65
- packager.with_log(desc: "Travis package cloud token for '#{desc[:org]}'") do |&fin|
65
+ buildizer.with_log(desc: "Travis package cloud token for '#{desc[:org]}'") do |&fin|
66
66
  package_cloud_token_var_update! desc[:token], org: desc[:org], public: false
67
67
  fin.call 'UPDATED'
68
68
  end # with_log
@@ -2,8 +2,6 @@ module Buildizer
2
2
  module Ci
3
3
  class Travis
4
4
  module PackageVersionTagMod
5
- using Refine
6
-
7
5
  def require_tag_var_name
8
6
  'BUILDIZER_REQUIRE_TAG'
9
7
  end
@@ -18,15 +16,15 @@ module Buildizer
18
16
 
19
17
  def require_tag_setup!
20
18
  with_travis do
21
- packager.with_log(desc: "Travis require tag for deploy") do |&fin|
22
- if packager.cli.options['require_tag'].nil?
19
+ buildizer.with_log(desc: "Travis require tag for deploy") do |&fin|
20
+ if buildizer.options[:require_tag].nil?
23
21
  unless require_tag_var
24
22
  require_tag_var_upsert(value: true.to_env)
25
23
  fin.call 'ENABLED'
26
24
  else
27
25
  fin.call
28
26
  end
29
- elsif packager.cli.options['require_tag']
27
+ elsif buildizer.options[:require_tag]
30
28
  require_tag_var_upsert(value: true.to_env)
31
29
  fin.call 'ENABLED'
32
30
  else
@@ -34,7 +34,7 @@ module Buildizer
34
34
  include PackageVersionTagMod
35
35
 
36
36
  def setup!
37
- packager.write_path(conf_path, YAML.dump(actual_conf))
37
+ buildizer.write_yaml conf_path, actual_conf
38
38
  require_tag_setup!
39
39
  end
40
40
 
@@ -55,9 +55,9 @@ module Buildizer
55
55
 
56
56
  'echo "docker-engine hold" | sudo dpkg --set-selections',
57
57
  ]
58
- install.push(*Array(buildizer_install_instructions(master: packager.project_settings['master'])))
58
+ install.push(*Array(buildizer_install_instructions(master: buildizer.project_settings['master'])))
59
59
 
60
- env = packager.targets.map {|t| "BUILDIZER_TARGET=#{t}"}
60
+ env = buildizer.targets.map {|t| "BUILDIZER_TARGET=#{t}"}
61
61
  conf.merge(
62
62
  'dist' => 'trusty',
63
63
  'sudo' => 'required',
@@ -77,11 +77,15 @@ module Buildizer
77
77
  end
78
78
 
79
79
  def repo_name
80
- packager.git_remote_url.split(':')[1].split('.')[0]
80
+ if buildizer.git_remote_url.start_with? 'http'
81
+ buildizer.git_remote_url.split('github.com/')[1]
82
+ else
83
+ buildizer.git_remote_url.split(':')[1].split('.')[0]
84
+ end
81
85
  rescue
82
86
  raise Error, error: :input_error,
83
87
  message: "unable to determine travis repo name " +
84
- "from git remote url #{packager.git_remote_url}"
88
+ "from git remote url #{buildizer.git_remote_url}"
85
89
  end
86
90
 
87
91
  def repo
@@ -90,21 +94,21 @@ module Buildizer
90
94
 
91
95
  def login
92
96
  @logged_in ||= begin
93
- packager.with_log(desc: "Login into travis") do |&fin|
94
- packager.user_settings['travis'] ||= {}
97
+ buildizer.with_log(desc: "Login into travis") do |&fin|
98
+ buildizer.user_settings['travis'] ||= {}
95
99
 
96
- if packager.cli.options['reset_github_token']
97
- packager.user_settings['travis'].delete('github_token')
98
- packager.user_settings_save!
100
+ if buildizer.options[:reset_github_token]
101
+ buildizer.user_settings['travis'].delete('github_token')
102
+ buildizer.user_settings_save!
99
103
  end
100
104
 
101
- packager.user_settings['travis']['github_token'] ||= begin
105
+ buildizer.user_settings['travis']['github_token'] ||= begin
102
106
  reset_github_token = true
103
- packager.cli.ask("GitHub access token:", echo: false).tap{puts}
107
+ buildizer.secure_option(:github_token, ask: "GitHub travis access token:").to_s
104
108
  end
105
109
 
106
- ::Travis.github_auth(packager.user_settings['travis']['github_token'])
107
- packager.user_settings_save! if reset_github_token
110
+ ::Travis.github_auth(buildizer.user_settings['travis']['github_token'])
111
+ buildizer.user_settings_save! if reset_github_token
108
112
 
109
113
  fin.call "LOGGED IN: #{::Travis::User.current.name}"
110
114
  end # with_log
@@ -5,11 +5,12 @@ module Buildizer
5
5
 
6
6
  add_shared_options(
7
7
  debug: {type: :boolean, default: false, desc: "turn on live logging for external commands"},
8
+ color: {type: :boolean, default: true, desc: "colorized output"},
8
9
  )
9
10
 
10
11
  no_commands do
11
- def packager
12
- @packager ||= Buildizer::Packager.new(self)
12
+ def buildizer
13
+ @buildizer ||= ::Buildizer::Buildizer.new(cli: self, **options.zymbolize_keys_deep)
13
14
  end
14
15
  end # no_commands
15
16
  end # Base
@@ -38,47 +38,47 @@ module Buildizer
38
38
  desc: "clear all docker cache settings"
39
39
  def setup
40
40
  if options['verify_ci']
41
- raise(Error, message: "#{packager.ci.ci_name} confugration update needed") unless packager.ci.configuration_actual?
41
+ buildizer.ci.configuration_actual!
42
42
  else
43
- packager.project_settings_setup!
44
- packager.user_settings_setup!
45
- packager.ci.setup!
46
- packager.package_cloud_setup!
47
- packager.docker_cache_setup!
48
- packager.overcommit_setup!
49
- packager.overcommit_verify_setup!
50
- packager.overcommit_ci_setup!
43
+ buildizer.project_settings_setup!
44
+ buildizer.user_settings_setup!
45
+ buildizer.ci.setup!
46
+ buildizer.package_cloud_setup!
47
+ buildizer.docker_cache_setup!
48
+ buildizer.overcommit_setup!
49
+ buildizer.overcommit_verify_setup!
50
+ buildizer.overcommit_ci_setup!
51
51
  end
52
52
  end
53
53
 
54
54
  desc "deinit", "Deinitialize settings (.buildizer.yml, git pre-commit hook)"
55
55
  shared_options
56
56
  def deinit
57
- packager.deinit!
57
+ buildizer.deinit!
58
58
  end
59
59
 
60
60
  desc "prepare", "Prepare images for building packages"
61
61
  shared_options
62
62
  def prepare
63
- packager.prepare!
63
+ buildizer.prepare!
64
64
  end
65
65
 
66
66
  desc "build", "Build packages"
67
67
  shared_options
68
68
  def build
69
- packager.build!
69
+ buildizer.build!
70
70
  end
71
71
 
72
72
  desc "deploy", "Deploy packages"
73
73
  shared_options
74
74
  def deploy
75
- packager.deploy!
75
+ buildizer.deploy!
76
76
  end
77
77
 
78
78
  desc "verify", "Verify targets params"
79
79
  shared_options
80
80
  def verify
81
- packager.verify!
81
+ buildizer.verify!
82
82
  end
83
83
  end # Main
84
84
  end # Cli
@@ -0,0 +1,5 @@
1
+ class FalseClass
2
+ def to_env
3
+ 'no'
4
+ end
5
+ end # FalseClass
@@ -0,0 +1,48 @@
1
+ class Hash
2
+ def zymbolize_keys
3
+ map do |key, value|
4
+ [_symbolize(key), value]
5
+ end.to_h
6
+ end
7
+
8
+ def zymbolize_keys!
9
+ keys.each do |key|
10
+ self[_symbolize(key)] = delete(key)
11
+ end
12
+ self
13
+ end
14
+
15
+ def zymbolize_keys_deep
16
+ map do |key, value|
17
+ [_symbolize(key), if value.is_a? Hash
18
+ value.zymbolize_keys_deep
19
+ else
20
+ value
21
+ end]
22
+ end.to_h
23
+ end
24
+
25
+ def zymbolize_keys_deep!
26
+ queue = [self]
27
+ visited = Set.new
28
+ while hash = queue.shift
29
+ visited.add hash
30
+ hash.keys.each do |key|
31
+ value = hash.delete(key)
32
+ hash[_symbolize(key)] = value
33
+ queue << value if value.is_a? Hash and not visited.include? hash
34
+ end
35
+ end
36
+ self
37
+ end
38
+
39
+ def net_status_message
40
+ [self[:error], self[:message]].compact.join(': ')
41
+ end
42
+
43
+ private
44
+
45
+ def _symbolize(value)
46
+ value.respond_to?(:to_sym) ? value.to_sym : value
47
+ end
48
+ end # Hash
@@ -0,0 +1,17 @@
1
+ class Pathname
2
+ def load_yaml
3
+ exist? ? YAML.load(read) : {}
4
+ rescue Psych::Exception => err
5
+ raise Error, error: :input_error,
6
+ message: "bad yaml config file #{self}: #{err.message}"
7
+ end
8
+
9
+ def dump_yaml(cfg)
10
+ write! YAML.dump(cfg)
11
+ end
12
+
13
+ def write!(*args, &blk)
14
+ dirname.mkpath
15
+ write(*args, &blk)
16
+ end
17
+ end # Pathname
@@ -0,0 +1,17 @@
1
+ class String
2
+ def underscore
3
+ self.gsub(/(.)([A-Z])/,'\1_\2').downcase
4
+ end
5
+
6
+ def match_glob?(glob)
7
+ File.fnmatch? glob, self, File::FNM_EXTGLOB
8
+ end
9
+
10
+ def on?
11
+ ['1', 'true', 'yes'].include? self.downcase
12
+ end
13
+
14
+ def off?
15
+ !on?
16
+ end
17
+ end # String
@@ -0,0 +1,5 @@
1
+ class TrueClass
2
+ def to_env
3
+ 'yes'
4
+ end
5
+ end # TrueClass
@@ -31,10 +31,10 @@ module Buildizer
31
31
  end
32
32
 
33
33
  def with_cache(&blk)
34
- warn("No docker cache account settings " +
35
- "(BUILDIZER_DOCKER_CACHE, BUILDIZER_DOCKER_CACHE_USERNAME," +
36
- " BUILDIZER_DOCKER_CACHE_PASSWORD, BUILDIZER_DOCKER_CACHE_EMAIL," +
37
- " BUILDIZER_DOCKER_CACHE_SERVER) [WARN]") unless cache
34
+ builder.buildizer.warn "No docker cache account settings " +
35
+ "(BUILDIZER_DOCKER_CACHE, BUILDIZER_DOCKER_CACHE_USERNAME," +
36
+ " BUILDIZER_DOCKER_CACHE_PASSWORD, BUILDIZER_DOCKER_CACHE_EMAIL," +
37
+ " BUILDIZER_DOCKER_CACHE_SERVER)" unless cache
38
38
 
39
39
  cache_login! if cache
40
40
  begin
@@ -52,47 +52,47 @@ module Buildizer
52
52
  cmd << "--username=#{cache[:user]}" if cache[:user]
53
53
  cmd << "--password=#{cache[:password]}" if cache[:password]
54
54
  cmd << "--server=#{cache[:server]}" if cache[:server]
55
- builder.packager.command! cmd.join(' '), desc: "Docker cache account login"
55
+ builder.buildizer.command! cmd.join(' '), desc: "Docker cache account login"
56
56
  end
57
57
 
58
58
  def cache_logout!
59
59
  raise Error, error: :logical_error, message: "no docker cache account info" unless cache
60
- builder.packager.command! 'docker logout', desc: "Docker cache account logout"
60
+ builder.buildizer.command! 'docker logout', desc: "Docker cache account logout"
61
61
  end
62
62
 
63
63
  def pull_image(image)
64
- builder.packager.command! "docker pull #{image.base_image}", desc: "Pull docker base image #{image.base_image}"
64
+ builder.buildizer.command! "docker pull #{image.base_image}", desc: "Pull docker base image #{image.base_image}"
65
65
  if cache
66
- pull_cache_res = builder.packager.command(
66
+ pull_cache_res = builder.buildizer.command(
67
67
  "docker pull #{image.cache_name}",
68
- desc: "Try to pull docker cache image #{image.cache_name}"
68
+ desc: "Try to pull docker cache image #{image.cache_name}"
69
69
  )
70
70
  if pull_cache_res.status.success?
71
- builder.packager.command! "docker tag -f #{image.cache_name} #{image.name}",
72
- desc: "Tag cache image #{image.cache_name}" +
73
- " as prepared build image #{image.name}"
74
- builder.packager.command! "docker rmi #{image.cache_name}",
75
- desc: "Remove cache image #{image.cache_name}"
71
+ builder.buildizer.command! "docker tag -f #{image.cache_name} #{image.name}",
72
+ desc: "Tag cache image #{image.cache_name}" +
73
+ " as prepared build image #{image.name}"
74
+ builder.buildizer.command! "docker rmi #{image.cache_name}",
75
+ desc: "Remove cache image #{image.cache_name}"
76
76
  end
77
77
  end
78
78
  end
79
79
 
80
80
  def push_image(image)
81
81
  if cache
82
- builder.packager.command! "docker tag -f #{image.name} #{image.cache_name}",
83
- desc: "Tag prepared build image #{image.name}" +
84
- " as cache image #{image.cache_name}"
85
- builder.packager.command! "docker push #{image.cache_name}",
86
- desc: "Push cache image #{image.cache_name}"
82
+ builder.buildizer.command! "docker tag -f #{image.name} #{image.cache_name}",
83
+ desc: "Tag prepared build image #{image.name}" +
84
+ " as cache image #{image.cache_name}"
85
+ builder.buildizer.command! "docker push #{image.cache_name}",
86
+ desc: "Push cache image #{image.cache_name}"
87
87
  end
88
88
  end
89
89
 
90
90
  def build_image!(target)
91
91
  pull_image target.image
92
92
 
93
- target.image_work_path.join('Dockerfile').write [*target.image.instructions, nil].join("\n")
94
- builder.packager.command! "docker build -t #{target.image.name} #{target.image_work_path}",
95
- desc: "Build docker image #{target.image.name}"
93
+ target.image_work_path.join('Dockerfile').write! [*target.image.instructions, nil].join("\n")
94
+ builder.buildizer.command! "docker build -t #{target.image.name} #{target.image_work_path}",
95
+ desc: "Build docker image #{target.image.name}"
96
96
 
97
97
  push_image target.image
98
98
  end
@@ -119,37 +119,40 @@ module Buildizer
119
119
 
120
120
  def run_target_container!(target:, env: {})
121
121
  container = SecureRandom.uuid
122
- builder.packager.command! [
122
+ builder.buildizer.command! [
123
123
  "docker run --detach --name #{container}",
124
- *Array(_common_docker_params(target, env)),
124
+ *Array(_prepare_docker_params(target, env)),
125
125
  _wrap_docker_run("while true ; do sleep 1 ; done"),
126
126
  ].join(' '), desc: "Run container '#{container}' from docker image '#{target.image.name}'"
127
127
  container
128
128
  end
129
129
 
130
130
  def shutdown_container!(container:)
131
- builder.packager.command! "docker kill #{container}", desc: "Kill container '#{container}'"
132
- builder.packager.command! "docker rm #{container}", desc: "Remove container '#{container}'"
131
+ builder.buildizer.command! "docker kill #{container}", desc: "Kill container '#{container}'"
132
+ builder.buildizer.command! "docker rm #{container}", desc: "Remove container '#{container}'"
133
133
  end
134
134
 
135
135
  def run_in_container!(container:, cmd:, desc: nil)
136
- builder.packager.command! [
136
+ builder.buildizer.command! [
137
137
  "docker exec #{container}",
138
138
  _wrap_docker_exec(cmd),
139
139
  ].join(' '), timeout: 24*60*60, desc: desc
140
140
  end
141
141
 
142
142
  def run_in_image!(target:, cmd:, env: {}, desc: nil)
143
- builder.packager.command! [
143
+ builder.buildizer.command! [
144
144
  "docker run --rm",
145
- *Array(_common_docker_params(target, env)),
145
+ *Array(_prepare_docker_params(target, env)),
146
146
  _wrap_docker_run(cmd),
147
147
  ].join(' '), timeout: 24*60*60, desc: desc
148
148
  end
149
149
 
150
- def _common_docker_params(target, env)
150
+ def _prepare_docker_params(target, env)
151
+ target.image_extra_path.mkpath
152
+ target.image_build_path.mkpath
153
+
151
154
  [*env.map {|k,v| "-e #{k}=#{v}"},
152
- "-v #{builder.packager.package_path}:#{container_package_mount_path}:ro",
155
+ "-v #{builder.buildizer.package_path}:#{container_package_mount_path}:ro",
153
156
  "-v #{target.image_extra_path}:#{container_extra_path}:ro",
154
157
  "-v #{target.image_build_path}:#{container_build_path}",
155
158
  target.image.name]
@@ -30,10 +30,6 @@ module Buildizer
30
30
  @maintainer = maintainer
31
31
 
32
32
  yield if block_given?
33
-
34
- image_work_path.mkpath
35
- image_build_path.mkpath
36
- image_extra_path.mkpath
37
33
  end
38
34
 
39
35
  def image_work_path
@@ -62,7 +58,7 @@ module Buildizer
62
58
  end
63
59
 
64
60
  def docker_image_repository
65
- "buildizer/#{package_name}"
61
+ package_name
66
62
  end
67
63
 
68
64
  def docker_image_tag
@@ -1,3 +1,3 @@
1
1
  module Buildizer
2
- VERSION = '0.0.9'
2
+ VERSION = '0.1.0'
3
3
  end