class Baleen::Builder
Public Class Methods
new(project, docker_url)
click to toggle source
# File lib/baleen/builder.rb, line 8 def initialize(project, docker_url) @project = project @docker_url = docker_url end
Public Instance Methods
build()
click to toggle source
# File lib/baleen/builder.rb, line 13 def build config = Configuration.instance url = @project.ci[:url] repo = @project.ci[:repo] tmp_dir = File.join(config.dir, "tmp/build") dir = File.join(tmp_dir, repo) output = StringIO.new connection = Docker::Connection.new(@docker_url, {}) FileUtils.mkdir_p(tmp_dir) if File.exists?(dir) Dir::chdir(dir) `git pull` else `git clone #{url} #{dir}` Dir::chdir(dir) end Gem::Package::TarWriter.new(output) do |tar| Find.find("./") do |f| if File::ftype(f) == "directory" tar.mkdir(f, 0640) else tar.add_file(f, 0640) { |tar_file| tar_file.write(File.open(f){|fl| fl.read})} end end end tar = output.tap(&:rewind).string connection.post('/build', {}, :body => tar) end