class Bait::Build

Public Instance Methods

branch() click to toggle source
# File lib/bait/build.rb, line 39
def branch
  self.ref.gsub('refs/heads/', '')
end
clone!() click to toggle source
# File lib/bait/build.rb, line 91
def clone!
  return if cloned?
  unless Dir.exists?(sandbox_directory)
    FileUtils.mkdir_p sandbox_directory
  end
  begin
    g = Git.clone(clone_url, name, :path => sandbox_directory)
    if g.branch.name != self.branch
      g.checkout("origin/#{self.branch}")
    end
  rescue => ex
    msg = "Failed to clone #{clone_url}"
    self.output << "#{msg}\n\n#{ex.message}\n\n#{ex.backtrace.join("\n")}"
    self.status = "failed to clone"
    self.save
  end
end
enter_phase(name) click to toggle source
# File lib/bait/build.rb, line 59
def enter_phase name
  Bait::Phase.new(self.script(name)).on(:init) do
    self.broadcast(:status, "phase: #{name}")
  end.on(:output) do |line|
    self.output << line
    self.broadcast(:output, line)
  end.on(:missing) do |message|
    self.output << message
    self.broadcast(:status, "missing: #{name}")
    self.save
  end.on(:done) do |zerostatus|
    unless self.status == "failed"
      if zerostatus
        self.status = "passed"
      else
        self.status = "failed"
      end
      self.save
      check_for_simplecov
    end
    self.broadcast(:status, self.status)
  end.run!
end
integrate_later() click to toggle source
# File lib/bait/build.rb, line 83
def integrate_later
  self.status = "queued"
  self.output = ""
  self.save
  Bait::Integrator.new.async.perform(self.id) unless Bait.env == "test"
  self
end
phases() click to toggle source
# File lib/bait/build.rb, line 55
def phases
  YAML.load_file(File.join(self.bait_dir, "config.yml"))
end
summary() click to toggle source
# File lib/bait/build.rb, line 43
def summary
  output = %{#{self.name} (#{self.branch}) #{self.status}}
  case self.status
  when "passed"
    output.green
  when "failed"
    output.red  
  else
    output
  end 
end

Protected Instance Methods

broadcast(attr, *args) click to toggle source
# File lib/bait/build.rb, line 111
def broadcast attr, *args
  Bait.broadcast :build, attr, self.id, *args
end