Class: Bait::Build

Inherits:
Object show all
Includes:
BuildHelper, SimpleCovSupport
Defined in:
lib/bait/build.rb

Instance Method Summary collapse

Methods included from SimpleCovSupport

#check_for_simplecov, #convert_paths, #coverage_dir, #simplecov_html_path

Methods included from BuildHelper

#bait_dir, #cleanup!, #clone_path, #cloned?, #passed?, #queued?, #sandbox_directory, #script

Methods included from SimpleQuery

#all, extended, #id_list_key, #ids, #ids=, #last

Instance Method Details

#clone!Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/bait/build.rb', line 88

def clone!
  return if cloned?
  unless Dir.exists?(sandbox_directory)
    FileUtils.mkdir_p sandbox_directory
  end
  begin
    Git.clone(clone_url, name, :path => sandbox_directory)
  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) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/bait/build.rb', line 56

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_laterObject



80
81
82
83
84
85
86
# File 'lib/bait/build.rb', line 80

def integrate_later
  self.status = "queued"
  self.output = ""
  self.save
  Bait::Integrator.new.async.perform(self.id) unless Bait.env == "test"
  self
end

#phasesObject



52
53
54
# File 'lib/bait/build.rb', line 52

def phases
  YAML.load_file(File.join(self.bait_dir, "config.yml"))
end

#summaryObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/bait/build.rb', line 39

def summary
  branch = self.ref ? self.ref.split('/').last : "n/a"
  output = %{#{self.name} (#{branch}) #{self.status}}
  case self.status
  when "passed"
    output.green
  when "failed"
    output.red  
  else
    output
  end 
end