heidi 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +0 -2
- data/Gemfile.lock +0 -14
- data/README.rdoc +87 -1
- data/VERSION +1 -1
- data/bin/heidi +15 -1
- data/heidi.gemspec +2 -5
- data/lib/heidi/build.rb +1 -1
- data/lib/heidi/builder.rb +10 -1
- data/lib/heidi/integrator.rb +17 -7
- metadata +19 -30
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,3 @@
|
|
1
|
-
GIT
|
2
|
-
remote: git://github.com/rstacruz/sinatra-assetpack.git
|
3
|
-
revision: ab2a413026099492807bd19affd60bd3d3bc1cca
|
4
|
-
specs:
|
5
|
-
sinatra-assetpack (0.0.10)
|
6
|
-
jsmin
|
7
|
-
rack-test
|
8
|
-
sinatra
|
9
|
-
tilt (>= 1.3.0)
|
10
|
-
|
11
1
|
GEM
|
12
2
|
remote: http://rubygems.org/
|
13
3
|
specs:
|
@@ -20,13 +10,10 @@ GEM
|
|
20
10
|
git (>= 1.2.5)
|
21
11
|
rake
|
22
12
|
rdoc
|
23
|
-
jsmin (1.0.1)
|
24
13
|
json (1.6.5)
|
25
14
|
rack (1.4.1)
|
26
15
|
rack-protection (1.2.0)
|
27
16
|
rack
|
28
|
-
rack-test (0.6.1)
|
29
|
-
rack (>= 1.0)
|
30
17
|
rake (0.9.2.2)
|
31
18
|
rcov (0.9.10)
|
32
19
|
rdoc (3.12)
|
@@ -61,5 +48,4 @@ DEPENDENCIES
|
|
61
48
|
rspec (~> 2.8.0)
|
62
49
|
simple_shell
|
63
50
|
sinatra
|
64
|
-
sinatra-assetpack!
|
65
51
|
thin
|
data/README.rdoc
CHANGED
@@ -4,9 +4,95 @@ A Continious Integration thingy. Naive, and therefor called Heidi.
|
|
4
4
|
|
5
5
|
http://www.tv-nostalgie.de/sound/Heidi2.jpg
|
6
6
|
|
7
|
-
Heidi is still taking form and is
|
7
|
+
Heidi is still taking form and is used to do CI at OrganisedMinds.com
|
8
8
|
(http://organisedminds.com) - Why don't you sign up there? It's free!
|
9
9
|
|
10
|
+
== The basics
|
11
|
+
|
12
|
+
Install heidi
|
13
|
+
|
14
|
+
# gem install heidi
|
15
|
+
|
16
|
+
Create a new CI projects root
|
17
|
+
|
18
|
+
% heidi new ci_root
|
19
|
+
creating ci_root
|
20
|
+
creating ci_root/projects
|
21
|
+
creating ci_root/bin
|
22
|
+
creating ci_root/Gemfile
|
23
|
+
running bundle install
|
24
|
+
|
25
|
+
Create a first project to track
|
26
|
+
|
27
|
+
% cd ci_root
|
28
|
+
% heidi project simple_shell git://github.com/coffeeaddict/simple_shell
|
29
|
+
creating projects/simple_shell
|
30
|
+
creating projects/simple_shell/logs
|
31
|
+
creating projects/simple_shell/hooks/build
|
32
|
+
creating projects/simple_shell/hooks/tests
|
33
|
+
creating projects/simple_shell/hooks/failure
|
34
|
+
creating projects/simple_shell/hooks/success
|
35
|
+
creating projects/simple_shell/hooks/before
|
36
|
+
filling simple_shell cache
|
37
|
+
git clone git://github.com/coffeeaddict/simple_shell
|
38
|
+
setting the name of the project to: simple_shell
|
39
|
+
|
40
|
+
Now define some hooks in projects/simple_shell/hooks/tests
|
41
|
+
|
42
|
+
== Configuration
|
43
|
+
|
44
|
+
The configuration for each project is stored in it's cached clone.
|
45
|
+
(projects/$project/cached). This is done using git-config(1). See
|
46
|
+
projects/$project/cached/.git/config to find the heidi name.
|
47
|
+
|
48
|
+
The following are available for you to edit:
|
49
|
+
|
50
|
+
[heidi]
|
51
|
+
name = Human Readable Name
|
52
|
+
[heidi "build"]
|
53
|
+
branch = branch_to_use_for_integration
|
54
|
+
|
55
|
+
And these are being set (and used) by Heidi. Please dont edit (unless...)
|
56
|
+
|
57
|
+
[heidi]
|
58
|
+
commit = acc53b9c5
|
59
|
+
[heidi "build"]
|
60
|
+
status = failed
|
61
|
+
current = acc53b9c5
|
62
|
+
|
63
|
+
== Hooks
|
64
|
+
|
65
|
+
There is a hooks directory inside your projects directory, and it has the
|
66
|
+
following directories:
|
67
|
+
|
68
|
+
- before/
|
69
|
+
- build/
|
70
|
+
- test/
|
71
|
+
- success/
|
72
|
+
- failure/
|
73
|
+
|
74
|
+
If you place shell scripts in these directories and make them executable,
|
75
|
+
these scripts will be executed inside the build directory at a given time.
|
76
|
+
|
77
|
+
[before] Runs before the build starts
|
78
|
+
[build] After the git-project has been checked out at the right branch
|
79
|
+
[test] To perform tests. You must have at least 1 test hook
|
80
|
+
[success] Is run when the tests where performed in good order. Send huray
|
81
|
+
emails here
|
82
|
+
[failure] Is run when the tests failed. Send he-or-she-broke-it emails here.
|
83
|
+
|
84
|
+
== History
|
85
|
+
|
86
|
+
Heidi keeps history; projects/$projects/logs/* is where all the integration
|
87
|
+
attempts live. You can remove old attempts without any problem.
|
88
|
+
|
89
|
+
Any build is named after it's commit hash (5f6db178c for instance)
|
90
|
+
|
91
|
+
== Tar balls
|
92
|
+
|
93
|
+
Any successful integration attempt is stored in a tar-ball with the name of
|
94
|
+
the build (5f6db178c.tar.bz2) inside projects/$project/logs/$build/
|
95
|
+
|
10
96
|
== Contributing to heidi
|
11
97
|
|
12
98
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/bin/heidi
CHANGED
@@ -22,6 +22,16 @@ when "new"
|
|
22
22
|
shell.mkdir %W(-p #{for_a}/projects)
|
23
23
|
puts "creating #{for_a}/bin"
|
24
24
|
shell.mkdir %W(-p #{for_a}/bin)
|
25
|
+
puts "creating #{for_a}/Gemfile"
|
26
|
+
File.open("#{for_a}/Gemfile", File::CREAT|File::WRONLY) do |f|
|
27
|
+
f.puts 'source "http://rubygems.org"'
|
28
|
+
f.puts 'gem "heidi"'
|
29
|
+
end
|
30
|
+
|
31
|
+
puts "running bundle install"
|
32
|
+
shell.in(for_a) do |sh|
|
33
|
+
sh.bundle "install"
|
34
|
+
end
|
25
35
|
|
26
36
|
when "project"
|
27
37
|
check_heidi_root
|
@@ -68,7 +78,11 @@ when "integrate"
|
|
68
78
|
heidi = Heidi.new
|
69
79
|
heidi.projects.each do |project|
|
70
80
|
next if !for_a.nil? && project.name != for_a
|
71
|
-
project.fetch
|
81
|
+
project.fetch
|
82
|
+
msg = project.integrate
|
83
|
+
unless msg.nil?
|
84
|
+
$stderr.puts "#{project.name}: #{msg}"
|
85
|
+
end
|
72
86
|
end
|
73
87
|
|
74
88
|
end
|
data/heidi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "heidi"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
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"]
|
12
|
-
s.date = "2012-02-
|
12
|
+
s.date = "2012-02-07"
|
13
13
|
s.description = "CI-Joe alike CI system called Heidi."
|
14
14
|
s.email = "hartog@organisedminds.com"
|
15
15
|
s.executables = ["heidi", "heidi_console", "heidi_cron", "heidi_web"]
|
@@ -69,7 +69,6 @@ Gem::Specification.new do |s|
|
|
69
69
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
70
70
|
s.add_runtime_dependency(%q<thin>, [">= 0"])
|
71
71
|
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
72
|
-
s.add_runtime_dependency(%q<sinatra-assetpack>, [">= 0"])
|
73
72
|
s.add_runtime_dependency(%q<simple_shell>, [">= 0"])
|
74
73
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
75
74
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
@@ -79,7 +78,6 @@ Gem::Specification.new do |s|
|
|
79
78
|
else
|
80
79
|
s.add_dependency(%q<thin>, [">= 0"])
|
81
80
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
82
|
-
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
83
81
|
s.add_dependency(%q<simple_shell>, [">= 0"])
|
84
82
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
85
83
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
@@ -90,7 +88,6 @@ Gem::Specification.new do |s|
|
|
90
88
|
else
|
91
89
|
s.add_dependency(%q<thin>, [">= 0"])
|
92
90
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
93
|
-
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
94
91
|
s.add_dependency(%q<simple_shell>, [">= 0"])
|
95
92
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
96
93
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
data/lib/heidi/build.rb
CHANGED
data/lib/heidi/builder.rb
CHANGED
@@ -39,7 +39,6 @@ class Heidi
|
|
39
39
|
return true
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
42
|
def setup_build_dir
|
44
43
|
if File.exists? build.build_root
|
45
44
|
build.log(:info, "Removing previous build")
|
@@ -81,6 +80,16 @@ class Heidi
|
|
81
80
|
return true
|
82
81
|
end
|
83
82
|
|
83
|
+
def create_tar_ball
|
84
|
+
shell = SimpleShell.new(build.root)
|
85
|
+
shell.mv %W(build, #{build.commit})
|
86
|
+
tar = shell.tar %W(-cjf #{build.commit}.tar.bz2 #{build.commit})
|
87
|
+
if tar.S?.to_i == 0
|
88
|
+
shell.rm %W(-rf #{build.commit}/)
|
89
|
+
else
|
90
|
+
build.log(:error, "Creating tar-ball failed: #{tar.err}")
|
91
|
+
end
|
92
|
+
end
|
84
93
|
|
85
94
|
def log(string)
|
86
95
|
build.logs["builder.log"].raw(string)
|
data/lib/heidi/integrator.rb
CHANGED
@@ -15,11 +15,24 @@ class Heidi
|
|
15
15
|
|
16
16
|
def failure
|
17
17
|
@failed = true
|
18
|
+
run_hooks(:failure)
|
19
|
+
build.log :info, ("Integration failed after: %.2fs" % (Time.now - @start))
|
20
|
+
|
18
21
|
build.record(:failure)
|
22
|
+
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
def success
|
27
|
+
# record the new succesful
|
28
|
+
build.record(:success)
|
29
|
+
build.log :info, ("Integration took: %.2fs" % (Time.now - @start))
|
30
|
+
|
31
|
+
return true
|
19
32
|
end
|
20
33
|
|
21
34
|
def integrate
|
22
|
-
start = Time.now
|
35
|
+
@start = Time.now
|
23
36
|
build.lock
|
24
37
|
build.load_hooks
|
25
38
|
build.clean
|
@@ -31,16 +44,13 @@ class Heidi
|
|
31
44
|
|
32
45
|
return failure if !builder.build!
|
33
46
|
return failure if !tester.test!
|
34
|
-
return failure if !run_hooks(:after)
|
35
47
|
|
36
|
-
|
37
|
-
build.record(:success)
|
48
|
+
return failure if !run_hooks(:success)
|
38
49
|
|
39
50
|
# create a tarball
|
40
|
-
|
51
|
+
builder.create_tar_ball
|
41
52
|
|
42
|
-
|
43
|
-
return true
|
53
|
+
return success
|
44
54
|
|
45
55
|
rescue Exception => e
|
46
56
|
$stderr.puts e.message
|
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.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thin
|
16
|
-
requirement: &
|
16
|
+
requirement: &88342980 !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: *
|
24
|
+
version_requirements: *88342980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sinatra
|
27
|
-
requirement: &
|
27
|
+
requirement: &88342660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,21 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: sinatra-assetpack
|
38
|
-
requirement: &79064970 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ! '>='
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
44
|
-
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *79064970
|
35
|
+
version_requirements: *88342660
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
37
|
name: simple_shell
|
49
|
-
requirement: &
|
38
|
+
requirement: &88342390 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
40
|
requirements:
|
52
41
|
- - ! '>='
|
@@ -54,10 +43,10 @@ dependencies:
|
|
54
43
|
version: '0'
|
55
44
|
type: :runtime
|
56
45
|
prerelease: false
|
57
|
-
version_requirements: *
|
46
|
+
version_requirements: *88342390
|
58
47
|
- !ruby/object:Gem::Dependency
|
59
48
|
name: rspec
|
60
|
-
requirement: &
|
49
|
+
requirement: &88342100 !ruby/object:Gem::Requirement
|
61
50
|
none: false
|
62
51
|
requirements:
|
63
52
|
- - ~>
|
@@ -65,10 +54,10 @@ dependencies:
|
|
65
54
|
version: 2.8.0
|
66
55
|
type: :development
|
67
56
|
prerelease: false
|
68
|
-
version_requirements: *
|
57
|
+
version_requirements: *88342100
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: rdoc
|
71
|
-
requirement: &
|
60
|
+
requirement: &88336620 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ~>
|
@@ -76,10 +65,10 @@ dependencies:
|
|
76
65
|
version: '3.12'
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *88336620
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: bundler
|
82
|
-
requirement: &
|
71
|
+
requirement: &88336290 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ~>
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: 1.0.0
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *88336290
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
81
|
name: jeweler
|
93
|
-
requirement: &
|
82
|
+
requirement: &88335980 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ~>
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: 1.8.3
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *88335980
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: rcov
|
104
|
-
requirement: &
|
93
|
+
requirement: &88335610 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,7 +98,7 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *88335610
|
113
102
|
description: CI-Joe alike CI system called Heidi.
|
114
103
|
email: hartog@organisedminds.com
|
115
104
|
executables:
|
@@ -175,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
164
|
version: '0'
|
176
165
|
segments:
|
177
166
|
- 0
|
178
|
-
hash:
|
167
|
+
hash: 976853793
|
179
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
169
|
none: false
|
181
170
|
requirements:
|