heidi 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/bin/heidi_web CHANGED
@@ -2,7 +2,16 @@
2
2
  #
3
3
  # hartog/20120131: Heidi, the CI mistress
4
4
 
5
+ if %w(-h --h --help -help -? /?).include? ARGV[0]
6
+ $stderr.puts "heidi_web [host] [port] [/path/to/projects_dir]"
7
+ exit 1
8
+ end
5
9
 
6
10
  require 'heidi/web'
7
- Heidi::Web.start
11
+ args = []
12
+ while !ARGV[0].nil? && !ARGV[0].empty?
13
+ args << ARGV.shift
14
+ end
15
+
16
+ Heidi::Web.start(*args)
8
17
 
data/heidi.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "heidi"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Hartog C. de Mik"]
data/lib/heidi/git.rb CHANGED
@@ -18,7 +18,7 @@ class Heidi
18
18
 
19
19
  # get the latest commit hash
20
20
  def commit
21
- res = @shell.git "log", "-n", "1", "--pretty=%H"
21
+ res = @shell.git "log", "-n", "1", "--pretty=format:%H"
22
22
  res.out
23
23
  end
24
24
  alias_method :HEAD, :commit
data/lib/heidi/hook.rb CHANGED
@@ -9,9 +9,14 @@ class Heidi
9
9
  end
10
10
 
11
11
  def perform(where=build.build_root)
12
+ # before / failure hooks might like this
13
+ if !File.exists?(where)
14
+ where = build.root
15
+ end
16
+
12
17
  env = {
13
18
  'HEIDI_LOG_DIR' => build.log_root,
14
- 'HEIDI_BUILD_DIR' => build.build_root,
19
+ 'HEIDI_BUILD_DIR' => where
15
20
  }
16
21
 
17
22
  shell = SimpleShell.new(where, env)
@@ -63,7 +63,7 @@ class Heidi
63
63
 
64
64
  hooks_failed = false
65
65
  build.hooks[where].each do |hook|
66
- res = hook.perform(build.build_root)
66
+ res = hook.perform
67
67
 
68
68
  if res.S?.to_i != 0
69
69
  build.log :error, "--- #{where} hook: #{hook.name} failed ---"
data/lib/heidi/project.rb CHANGED
@@ -50,6 +50,13 @@ class Heidi
50
50
  @git["build.latest"] = self.commit
51
51
  end
52
52
 
53
+ def current_build
54
+ @git["build.current"]
55
+ end
56
+ def record_current_build
57
+ @git["build.current"] = self.commit
58
+ end
59
+
53
60
  def build_status
54
61
  @git["build.status"]
55
62
  end
@@ -75,8 +82,7 @@ class Heidi
75
82
  end
76
83
 
77
84
  def fetch
78
- @git.fetch
79
- if integration_branch
85
+ if integration_branch && @git.branch != integration_branch
80
86
  if @git.branches.include? integration_branch
81
87
  @git.switch(integration_branch)
82
88
  @git.merge "origin/#{integration_branch}"
@@ -87,7 +93,13 @@ class Heidi
87
93
  end
88
94
  end
89
95
 
90
- record_last_commit
96
+ @git.pull
97
+
98
+ # when the head has changed, update some stuff
99
+ if last_commit != self.commit
100
+ record_last_commit
101
+ record_current_build
102
+ end
91
103
  end
92
104
 
93
105
  def lock(&block)
@@ -1,7 +1,23 @@
1
1
  <h1><%= project.name %></h1>
2
2
 
3
+ <a href="/"><< back</a><br /><br />
3
4
  <h2 class="<%= project.build_status %>"><%= project.build_status %></h2>
4
5
 
6
+ <%
7
+ builds = project.builds
8
+ current = builds.select { |b| b.commit == project.current_build }.first
9
+ %>
10
+
11
+ <% unless current.nil? %>
12
+ <% builds -= [ current ] %>
13
+ <h2>Current build</h2>
14
+ <a class="<%= current.status %>" href="/projects/<%= project.name %>/build/<%= current.commit %>"><%= current.commit %></a>
15
+ <br />
16
+ <br />
17
+ <br />
18
+ <% end %>
19
+
20
+
5
21
  <h2>Build history</h2>
6
22
 
7
23
  <ul>
data/lib/heidi/web.rb CHANGED
@@ -19,7 +19,6 @@ class Heidi
19
19
  }
20
20
 
21
21
  dir = File.dirname(File.expand_path(__FILE__))
22
- $stderr.puts dir
23
22
 
24
23
  set :sessions, true
25
24
 
data/spec/spec_helper.rb CHANGED
@@ -8,5 +8,5 @@ require 'heidi'
8
8
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
9
 
10
10
  RSpec.configure do |config|
11
-
11
+ config.tty = true
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heidi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thin
16
- requirement: &78955270 !ruby/object:Gem::Requirement
16
+ requirement: &79065560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *78955270
24
+ version_requirements: *79065560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sinatra
27
- requirement: &78955000 !ruby/object:Gem::Requirement
27
+ requirement: &79065280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *78955000
35
+ version_requirements: *79065280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sinatra-assetpack
38
- requirement: &78954750 !ruby/object:Gem::Requirement
38
+ requirement: &79064970 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *78954750
46
+ version_requirements: *79064970
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simple_shell
49
- requirement: &78954490 !ruby/object:Gem::Requirement
49
+ requirement: &79064650 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *78954490
57
+ version_requirements: *79064650
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &78954240 !ruby/object:Gem::Requirement
60
+ requirement: &79064400 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.8.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *78954240
68
+ version_requirements: *79064400
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc
71
- requirement: &78950220 !ruby/object:Gem::Requirement
71
+ requirement: &79064110 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '3.12'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *78950220
79
+ version_requirements: *79064110
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: bundler
82
- requirement: &78949910 !ruby/object:Gem::Requirement
82
+ requirement: &79063860 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.0.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *78949910
90
+ version_requirements: *79063860
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: jeweler
93
- requirement: &78949650 !ruby/object:Gem::Requirement
93
+ requirement: &79063620 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 1.8.3
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *78949650
101
+ version_requirements: *79063620
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rcov
104
- requirement: &78949400 !ruby/object:Gem::Requirement
104
+ requirement: &79063320 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *78949400
112
+ version_requirements: *79063320
113
113
  description: CI-Joe alike CI system called Heidi.
114
114
  email: hartog@organisedminds.com
115
115
  executables:
@@ -175,7 +175,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
175
  version: '0'
176
176
  segments:
177
177
  - 0
178
- hash: 785079379
178
+ hash: -61331469
179
179
  required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  none: false
181
181
  requirements: