cijoe 0.3.0 → 0.4.0
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/README.markdown +28 -18
- data/Rakefile +9 -1
- data/lib/cijoe.rb +28 -5
- data/lib/cijoe/version.rb +1 -1
- data/lib/cijoe/views/template.erb +2 -2
- metadata +2 -2
data/README.markdown
CHANGED
@@ -12,19 +12,13 @@ Because knowing is half the battle.
|
|
12
12
|
Quickstart
|
13
13
|
----------
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
$ rip install git://github.com/defunkt/cijoe.git
|
18
|
-
$ git clone git://github.com/you/yourrepo.git
|
19
|
-
$ cijoe yourrepo
|
20
|
-
|
21
|
-
Gemcutter:
|
15
|
+
RubyGems:
|
22
16
|
|
23
17
|
$ gem install cijoe
|
24
18
|
$ git clone git://github.com/you/yourrepo.git
|
25
19
|
$ cijoe yourrepo
|
26
20
|
|
27
|
-
Boom. Navigate to http://localhost:4567 to see Joe in action.
|
21
|
+
Boom. Navigate to <http://localhost:4567> to see Joe in action.
|
28
22
|
Check `cijoe -h` for other options.
|
29
23
|
|
30
24
|
Basically you need to run `cijoe` and hand it the path to a git
|
@@ -55,15 +49,27 @@ build. Pull any metadata you want out of that scro.
|
|
55
49
|
|
56
50
|
|
57
51
|
Other Branches
|
58
|
-
|
52
|
+
----------------------
|
59
53
|
|
60
54
|
Want joe to run against a branch other than `master`? No problem:
|
61
55
|
|
62
56
|
$ git config --add cijoe.branch deploy
|
63
57
|
|
64
58
|
|
59
|
+
Concurrent Push's - a kind of "queueing"
|
60
|
+
----------------------------------------
|
61
|
+
|
62
|
+
Joe runs just one build at the time. If you expect concurrent push's
|
63
|
+
to your repo and want joe to build each in a kind of queue, just set:
|
64
|
+
|
65
|
+
$ git config --add cijoe.buildallfile tmp/cijoe.txt
|
66
|
+
|
67
|
+
Joe will save requests while another build runs. If more than one push
|
68
|
+
hits joe, he just picks the last after finishing the prior.
|
69
|
+
|
70
|
+
|
65
71
|
Campfire
|
66
|
-
|
72
|
+
-------------
|
67
73
|
|
68
74
|
Campfire notification is included, because it's what we use. Want Joe
|
69
75
|
notify your Campfire? Put this in your repo's `.git/config`:
|
@@ -84,7 +90,7 @@ Or do it the old fashion way:
|
|
84
90
|
|
85
91
|
|
86
92
|
Checkin' Status
|
87
|
-
|
93
|
+
----------------------
|
88
94
|
|
89
95
|
Want to see how your build's doing without any of this fancy UI crap?
|
90
96
|
Ping Joe for the lowdown:
|
@@ -95,15 +101,18 @@ Joe will return `200 OK` if all is quiet on the Western Front. If
|
|
95
101
|
Joe's busy building or your last build failed, you'll get `412
|
96
102
|
PRECONDITION FAILED`.
|
97
103
|
|
104
|
+
|
98
105
|
Multiple Projects
|
99
|
-
|
106
|
+
------------------------
|
100
107
|
|
101
108
|
Want CI for multiple projects? Just start multiple instances of Joe!
|
102
109
|
He can run on any port - try `cijoe -h` for more options.
|
103
110
|
|
111
|
+
If you're using Passenger, see [this blog post](http://chrismdp.github.com/2010/03/multiple-ci-joes-with-rack-and-passenger/).
|
112
|
+
|
104
113
|
|
105
114
|
HTTP Auth
|
106
|
-
|
115
|
+
----------------
|
107
116
|
|
108
117
|
Worried about people triggering your builds? Setup HTTP auth:
|
109
118
|
|
@@ -112,7 +121,7 @@ Worried about people triggering your builds? Setup HTTP auth:
|
|
112
121
|
|
113
122
|
|
114
123
|
GitHub Integration
|
115
|
-
|
124
|
+
--------------------------
|
116
125
|
|
117
126
|
Any POST to Joe will trigger a build. If you are hiding Joe behind
|
118
127
|
HTTP auth, that's okay - GitHub knows how to authenticate properly.
|
@@ -124,7 +133,7 @@ of your project's "Admin" tab.
|
|
124
133
|
|
125
134
|
|
126
135
|
Daemonize
|
127
|
-
|
136
|
+
----------------
|
128
137
|
|
129
138
|
Want to run Joe as a daemon? Use `nohup`:
|
130
139
|
|
@@ -132,7 +141,7 @@ Want to run Joe as a daemon? Use `nohup`:
|
|
132
141
|
|
133
142
|
|
134
143
|
Other CI Servers
|
135
|
-
|
144
|
+
------------------------
|
136
145
|
|
137
146
|
Need more features? More notifiers? Check out one of these bad boys:
|
138
147
|
|
@@ -140,10 +149,11 @@ Need more features? More notifiers? Check out one of these bad boys:
|
|
140
149
|
* [Integrity](http://integrityapp.com/)
|
141
150
|
* [CruiseControl.rb](http://cruisecontrolrb.thoughtworks.com/)
|
142
151
|
* [BuildBot](http://buildbot.net/trac)
|
152
|
+
* [Signal](http://www.github.com/dcrec1/signal)
|
143
153
|
|
144
154
|
|
145
155
|
Screenshots
|
146
|
-
|
156
|
+
------------------
|
147
157
|
|
148
158
|

|
149
159
|
|
@@ -151,7 +161,7 @@ Screenshots
|
|
151
161
|
|
152
162
|
|
153
163
|
Questions? Concerns?
|
154
|
-
|
164
|
+
---------------------------------
|
155
165
|
|
156
166
|
[Issues](http://github.com/defunkt/cijoe/issues) or [the mailing list](http://groups.google.com/group/cijoe).
|
157
167
|
|
data/Rakefile
CHANGED
@@ -20,10 +20,18 @@ begin
|
|
20
20
|
gemspec.version = CIJoe::Version.to_s
|
21
21
|
end
|
22
22
|
rescue LoadError
|
23
|
-
puts "Jeweler not available."
|
23
|
+
puts "Jeweler not available."
|
24
24
|
puts "Install it with: gem install jeweler"
|
25
25
|
end
|
26
26
|
|
27
|
+
desc "Publish a RubyGem"
|
28
|
+
task :publish => :gem do
|
29
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
|
30
|
+
require 'cijoe/version'
|
31
|
+
|
32
|
+
sh "gem push pkg/cijoe-#{CIJoe::Version}.gem"
|
33
|
+
end
|
34
|
+
|
27
35
|
require 'rake/testtask'
|
28
36
|
Rake::TestTask.new(:test) do |test|
|
29
37
|
test.libs << 'lib' << 'test'
|
data/lib/cijoe.rb
CHANGED
@@ -48,6 +48,12 @@ class CIJoe
|
|
48
48
|
|
49
49
|
# kill the child and exit
|
50
50
|
def stop
|
51
|
+
# another build waits
|
52
|
+
if Config.cijoe.buildallfile && File.exist?(Config.cijoe.buildallfile.to_s)
|
53
|
+
# clean out on stop
|
54
|
+
FileUtils.rm(Config.cijoe.buildallfile.to_s)
|
55
|
+
end
|
56
|
+
|
51
57
|
Process.kill(9, pid) if pid
|
52
58
|
exit!
|
53
59
|
end
|
@@ -73,12 +79,29 @@ class CIJoe
|
|
73
79
|
write_build 'current', @current_build
|
74
80
|
write_build 'last', @last_build
|
75
81
|
@last_build.notify if @last_build.respond_to? :notify
|
82
|
+
|
83
|
+
# another build waits
|
84
|
+
if Config.cijoe.buildallfile && File.exist?(Config.cijoe.buildallfile.to_s)
|
85
|
+
# clean out before new build
|
86
|
+
FileUtils.rm(Config.cijoe.buildallfile.to_s)
|
87
|
+
build
|
88
|
+
end
|
76
89
|
end
|
77
90
|
|
78
|
-
# run the build but make sure only
|
79
|
-
# one
|
91
|
+
# run the build but make sure only one is running
|
92
|
+
# at a time (if new one comes in we will park it)
|
80
93
|
def build
|
81
|
-
|
94
|
+
if building?
|
95
|
+
# only if switched on to build all incoming requests
|
96
|
+
if Config.cijoe.buildallfile
|
97
|
+
# and there is no previous request
|
98
|
+
return if File.exist?(Config.cijoe.buildallfile.to_s)
|
99
|
+
# we will mark awaiting builds
|
100
|
+
FileUtils.touch(Config.cijoe.buildallfile.to_s)
|
101
|
+
end
|
102
|
+
# leave anyway because a current build runs
|
103
|
+
return
|
104
|
+
end
|
82
105
|
@current_build = Build.new(@user, @project)
|
83
106
|
write_build 'current', @current_build
|
84
107
|
Thread.new { build! }
|
@@ -162,8 +185,8 @@ class CIJoe
|
|
162
185
|
else
|
163
186
|
{}
|
164
187
|
end
|
165
|
-
|
166
|
-
|
188
|
+
data.each{ |k, v| ENV[k] = v }
|
189
|
+
`sh #{file}`
|
167
190
|
end
|
168
191
|
end
|
169
192
|
|
data/lib/cijoe/version.rb
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
<li>
|
20
20
|
<span class="date"><%= pretty_time(joe.current_build.started_at) if joe.current_build %></span> »
|
21
21
|
<% if joe.current_build.sha %>
|
22
|
-
Building <a href="<%= joe.
|
22
|
+
Building <a href="<%= joe.current_build.commit.url %>"><%= joe.current_build.short_sha %></a> <small>(pid: <%= joe.pid %>)</small>
|
23
23
|
<% else %>
|
24
24
|
Build starting...
|
25
25
|
<% end %>
|
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
<% if joe.last_build %>
|
32
32
|
<li>
|
33
|
-
<span class="date"><%= pretty_time(joe.last_build.finished_at) %></span> » Built <a href="<%= joe.
|
33
|
+
<span class="date"><%= pretty_time(joe.last_build.finished_at) %></span> » Built <a href="<%= joe.last_build.commit.url %>"><%= joe.last_build.short_sha %></a> <span class="<%= joe.last_build.status %>">(<%= joe.last_build.status %>)</span>
|
34
34
|
<% if joe.last_build.duration %>
|
35
35
|
in <span class="duration"><%= joe.last_build.duration %></span> seconds.
|
36
36
|
<% end %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cijoe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wanstrath
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-04-07 00:00:00 -07:00
|
13
13
|
default_executable: cijoe
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|