class CIDE::Builder
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/cide/builder.rb, line 11 def initialize(config) @config = config @tmp_files = [] end
Public Instance Methods
build(tag: nil, pull: nil, ssh_key: nil)
click to toggle source
# File lib/cide/builder.rb, line 16 def build(tag: nil, pull: nil, ssh_key: nil) raise ArgumentError, 'tag missing' unless tag if config.use_ssh raise ArgumentError, 'ssh_key missing' unless ssh_key unless File.exist?(ssh_key) raise ArgumentError, "ssh_key #{ssh_key} not found" end create_tmp_file! TEMP_SSH_KEY, File.read(ssh_key) end create_tmp_file! DOCKERFILE, config.to_dockerfile build_options = ['--force-rm'] build_options << '--pull' if pull build_options.push '-f', DOCKERFILE build_options.push '-t', tag build_options << '.' docker :build, *build_options ensure release_tmp_files! end
Protected Instance Methods
create_tmp_file!(destination, content)
click to toggle source
# File lib/cide/builder.rb, line 40 def create_tmp_file!(destination, content) FileUtils.mkdir_p(File.dirname(destination)) @tmp_files << destination File.write(destination, content) # Dockerfile ADD compares content and mtime, we don't want that File.utime(1_286_701_800, 1_286_701_800, destination) end
release_tmp_files!()
click to toggle source
# File lib/cide/builder.rb, line 48 def release_tmp_files! @tmp_files.each do |file| FileUtils.rm_f(file) end end