juici 0.0.0.alpha1 → 0.0.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.
Files changed (69) hide show
  1. data/Gemfile +1 -4
  2. data/Gemfile.lock +9 -19
  3. data/README.md +6 -45
  4. data/Rakefile +0 -24
  5. data/config/mongoid.yml.sample +5 -20
  6. data/juici.gemspec +3 -7
  7. data/lib/juici.rb +3 -8
  8. data/lib/juici/app.rb +23 -19
  9. data/lib/juici/build_environment.rb +1 -1
  10. data/lib/juici/build_logic.rb +1 -10
  11. data/lib/juici/build_queue.rb +3 -30
  12. data/lib/juici/callback.rb +5 -9
  13. data/lib/juici/config.rb +0 -4
  14. data/lib/juici/controllers/build_controller.rb +0 -0
  15. data/lib/juici/controllers/{trigger.rb → trigger_controller.rb} +5 -24
  16. data/lib/juici/database.rb +13 -19
  17. data/lib/juici/helpers/url_helpers.rb +0 -28
  18. data/lib/juici/models/build.rb +24 -81
  19. data/lib/juici/models/project.rb +1 -1
  20. data/lib/juici/server.rb +40 -103
  21. data/lib/juici/url_helpers.rb +15 -0
  22. data/lib/juici/views/README.markdown +6 -45
  23. data/lib/juici/views/about.erb +5 -5
  24. data/lib/juici/views/builds/list.erb +33 -26
  25. data/lib/juici/views/builds/new.erb +37 -42
  26. data/lib/juici/views/builds/show.erb +28 -4
  27. data/lib/juici/views/index.erb +13 -30
  28. data/lib/juici/views/layout.erb +13 -22
  29. data/lib/juici/views/partials/builds/debug.erb +18 -12
  30. data/lib/juici/watcher.rb +25 -33
  31. data/public/styles/builds.css +8 -59
  32. data/public/styles/juici.css +2 -226
  33. data/spec/build_callback_spec.rb +1 -46
  34. data/spec/build_process_spec.rb +5 -71
  35. data/spec/build_queue_spec.rb +1 -3
  36. data/spec/juici_app_spec.rb +15 -0
  37. data/spec/spec_helper.rb +0 -13
  38. metadata +12 -76
  39. data/.gitignore +0 -2
  40. data/bin/juicic +0 -54
  41. data/juici-interface.gemspec +0 -19
  42. data/lib/juici/controllers.rb +0 -6
  43. data/lib/juici/controllers/base.rb +0 -26
  44. data/lib/juici/controllers/build_queue.rb +0 -14
  45. data/lib/juici/controllers/builds.rb +0 -74
  46. data/lib/juici/controllers/index.rb +0 -20
  47. data/lib/juici/exceptions.rb +0 -2
  48. data/lib/juici/find_logic.rb +0 -11
  49. data/lib/juici/helpers/form_helpers.rb +0 -11
  50. data/lib/juici/helpers/html_helpers.rb +0 -4
  51. data/lib/juici/interface.rb +0 -13
  52. data/lib/juici/version.rb +0 -8
  53. data/lib/juici/views/builds/edit.erb +0 -23
  54. data/lib/juici/views/not_found.erb +0 -3
  55. data/lib/juici/views/partials/builds/output.erb +0 -1
  56. data/lib/juici/views/partials/builds/show.erb +0 -19
  57. data/lib/juici/views/partials/builds/sidebar.erb +0 -13
  58. data/lib/juici/views/partials/index/recently_built.erb +0 -19
  59. data/lib/juici/views/queue/list.erb +0 -6
  60. data/public/favicon.ico +0 -0
  61. data/public/images/black_denim.png +0 -0
  62. data/public/vendor/bootstrap.css +0 -6004
  63. data/public/vendor/bootstrap.js +0 -2036
  64. data/public/vendor/img/glyphicons-halflings-white.png +0 -0
  65. data/public/vendor/jquery.js +0 -9440
  66. data/script/cibuild +0 -10
  67. data/spec/controllers/builds_spec.rb +0 -68
  68. data/spec/controllers/index_spec.rb +0 -28
  69. data/spec/models/build_spec.rb +0 -54
@@ -33,9 +33,7 @@ describe Juici::BuildQueue do
33
33
  end
34
34
 
35
35
  it "Should remove a given build by id" do
36
- @builds = builds_with(_id: [1, 2, 3, 4, 5, 6])
37
- subject.delete(3)
38
- @builds.collect(&:_id).should == [1, 2, 4, 5, 6]
36
+ pending("To be implemented")
39
37
  end
40
38
 
41
39
  it "Should return a low priority job from #next_child" do
@@ -2,7 +2,22 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe Juici::App do
4
4
  it "instanciates cleanly and exits cleanly" do
5
+ threads = Thread.list.length
6
+
5
7
  app = Juici::App.new
8
+ Thread.list.length.should == threads + 1
9
+
10
+ Juici::App.shutdown
11
+ Thread.list.length.should == threads
12
+ end
13
+
14
+ it "Can be started without workers" do
15
+ threads = Thread.list.length
16
+
17
+ app = Juici::App.new(workers: 0)
18
+ Thread.list.length.should == threads
19
+
6
20
  Juici::App.shutdown
21
+ Thread.list.length.should == threads
7
22
  end
8
23
  end
@@ -1,10 +1,7 @@
1
- ENV['RACK_ENV'] ||= "test"
2
-
3
1
  require 'juici'
4
2
  require 'mocha'
5
3
 
6
4
  require 'fileutils'
7
- require 'timeout'
8
5
 
9
6
  Dir["#{File.expand_path(File.dirname(__FILE__))}/helpers/**/*.rb"].each do |f|
10
7
  puts "Requiring #{f}"
@@ -14,13 +11,3 @@ end
14
11
  RSpec.configure do |config|
15
12
  config.mock_framework = :mocha
16
13
  end
17
-
18
- def poll_build(build)
19
- loop do
20
- sleep(0.1)
21
- build.reload
22
- break if build.status != Juici::BuildStatus::START
23
- end
24
- end
25
-
26
- Juici::Database.initialize!
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: juici
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.alpha1
5
- prerelease: 6
4
+ version: 0.0.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Richo Healey
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-16 00:00:00.000000000 Z
12
+ date: 2012-10-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: thin
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: json
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -64,17 +48,17 @@ dependencies:
64
48
  requirement: !ruby/object:Gem::Requirement
65
49
  none: false
66
50
  requirements:
67
- - - ! '>='
51
+ - - ~>
68
52
  - !ruby/object:Gem::Version
69
- version: '0'
53
+ version: '2'
70
54
  type: :runtime
71
55
  prerelease: false
72
56
  version_requirements: !ruby/object:Gem::Requirement
73
57
  none: false
74
58
  requirements:
75
- - - ! '>='
59
+ - - ~>
76
60
  - !ruby/object:Gem::Version
77
- version: '0'
61
+ version: '2'
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: bson_ext
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -107,22 +91,6 @@ dependencies:
107
91
  - - ! '>='
108
92
  - !ruby/object:Gem::Version
109
93
  version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: ansible
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
94
  - !ruby/object:Gem::Dependency
127
95
  name: rake
128
96
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +147,6 @@ executables:
179
147
  extensions: []
180
148
  extra_rdoc_files: []
181
149
  files:
182
- - .gitignore
183
150
  - Gemfile
184
151
  - Gemfile.lock
185
152
  - Procfile
@@ -187,9 +154,7 @@ files:
187
154
  - Rakefile
188
155
  - TODO.md
189
156
  - bin/juici
190
- - bin/juicic
191
157
  - config/mongoid.yml.sample
192
- - juici-interface.gemspec
193
158
  - juici.gemspec
194
159
  - lib/juici.rb
195
160
  - lib/juici/app.rb
@@ -198,61 +163,35 @@ files:
198
163
  - lib/juici/build_queue.rb
199
164
  - lib/juici/callback.rb
200
165
  - lib/juici/config.rb
201
- - lib/juici/controllers.rb
202
- - lib/juici/controllers/base.rb
203
- - lib/juici/controllers/build_queue.rb
204
- - lib/juici/controllers/builds.rb
205
- - lib/juici/controllers/index.rb
206
- - lib/juici/controllers/trigger.rb
166
+ - lib/juici/controllers/build_controller.rb
167
+ - lib/juici/controllers/trigger_controller.rb
207
168
  - lib/juici/database.rb
208
- - lib/juici/exceptions.rb
209
- - lib/juici/find_logic.rb
210
- - lib/juici/helpers/form_helpers.rb
211
- - lib/juici/helpers/html_helpers.rb
212
169
  - lib/juici/helpers/url_helpers.rb
213
- - lib/juici/interface.rb
214
170
  - lib/juici/models/build.rb
215
171
  - lib/juici/models/build_process.rb
216
172
  - lib/juici/models/project.rb
217
173
  - lib/juici/server.rb
218
- - lib/juici/version.rb
174
+ - lib/juici/url_helpers.rb
219
175
  - lib/juici/views/README.markdown
220
176
  - lib/juici/views/about.erb
221
177
  - lib/juici/views/builds.erb
222
- - lib/juici/views/builds/edit.erb
223
178
  - lib/juici/views/builds/list.erb
224
179
  - lib/juici/views/builds/new.erb
225
180
  - lib/juici/views/builds/show.erb
226
181
  - lib/juici/views/index.erb
227
182
  - lib/juici/views/layout.erb
228
- - lib/juici/views/not_found.erb
229
183
  - lib/juici/views/partials/builds/debug.erb
230
- - lib/juici/views/partials/builds/output.erb
231
- - lib/juici/views/partials/builds/show.erb
232
- - lib/juici/views/partials/builds/sidebar.erb
233
- - lib/juici/views/partials/index/recently_built.erb
234
- - lib/juici/views/queue/list.erb
235
184
  - lib/juici/views/redirect.erb
236
185
  - lib/juici/views/support.erb
237
186
  - lib/juici/watcher.rb
238
- - public/favicon.ico
239
- - public/images/black_denim.png
240
187
  - public/styles/builds.css
241
188
  - public/styles/juici.css
242
- - public/vendor/bootstrap.css
243
- - public/vendor/bootstrap.js
244
- - public/vendor/img/glyphicons-halflings-white.png
245
- - public/vendor/jquery.js
246
189
  - sample/mongod.conf
247
- - script/cibuild
248
190
  - spec/build_callback_spec.rb
249
191
  - spec/build_environment_spec.rb
250
192
  - spec/build_process_spec.rb
251
193
  - spec/build_queue_spec.rb
252
- - spec/controllers/builds_spec.rb
253
- - spec/controllers/index_spec.rb
254
194
  - spec/juici_app_spec.rb
255
- - spec/models/build_spec.rb
256
195
  - spec/spec_helper.rb
257
196
  homepage: http://github.com/richo/juici
258
197
  licenses: []
@@ -269,9 +208,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
208
  required_rubygems_version: !ruby/object:Gem::Requirement
270
209
  none: false
271
210
  requirements:
272
- - - ! '>'
211
+ - - ! '>='
273
212
  - !ruby/object:Gem::Version
274
- version: 1.3.1
213
+ version: '0'
275
214
  requirements: []
276
215
  rubyforge_project:
277
216
  rubygems_version: 1.8.24
@@ -283,8 +222,5 @@ test_files:
283
222
  - spec/build_environment_spec.rb
284
223
  - spec/build_process_spec.rb
285
224
  - spec/build_queue_spec.rb
286
- - spec/controllers/builds_spec.rb
287
- - spec/controllers/index_spec.rb
288
225
  - spec/juici_app_spec.rb
289
- - spec/models/build_spec.rb
290
226
  - spec/spec_helper.rb
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *.gem
2
- config/mongoid.yml
data/bin/juicic DELETED
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'net/http'
3
- require 'json'
4
- require 'juici/interface'
5
-
6
- # TODO Refactor
7
- def main(args)
8
- action = args.shift.to_sym
9
- options = {}
10
-
11
- until args.empty?
12
- case args.shift
13
- when "--command"
14
- command = args.shift
15
- options[:command] = if command == "-"
16
- File.read(command)
17
- else
18
- command
19
- end
20
- when "--host"
21
- options[:host] = args.shift
22
- when "--title"
23
- options[:title] = args.shift
24
- when "--project"
25
- options[:project] = args.shift
26
- when "--priority"
27
- options[:priority] = args.shift
28
- end
29
- end
30
-
31
- send(action, options)
32
- end
33
-
34
- def build(opts)
35
- host = URI(opts[:host])
36
- Net::HTTP.start(host.host, host.port) do |h|
37
- req = Net::HTTP::Post.new(Juici::Routes::NEW_BUILD)
38
- req.body = _create_payload(opts)
39
- h.request req
40
- end
41
- end
42
-
43
- def _create_payload(opts)
44
- URI.encode_www_form({
45
- "project" => opts[:project],
46
- "environment" => (opts[:environment] || {}).to_json,
47
- "command" => opts[:command],
48
- "priority" => opts[:priority] || 1,
49
- "callbacks" => (opts[:callbacks] || []).to_json,
50
- "title" => opts[:title]
51
- })
52
- end
53
-
54
- main(ARGV.dup)
@@ -1,19 +0,0 @@
1
- # vim: ft=ruby
2
- #
3
- require File.expand_path("../lib/juici/version", __FILE__)
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "juici-interface"
7
- s.version = Juici::VERSION
8
- s.authors = ["Richo Healey"]
9
- s.email = ["richo@psych0tik.net"]
10
- s.homepage = "http://github.com/richo/juici"
11
- s.summary = "Interface definition for JuiCI callbacks and API"
12
- s.description = s.summary
13
-
14
- s.files = "lib/juici/interface.rb"
15
- s.require_paths = ["lib"]
16
- s.executables = "juicic"
17
- end
18
-
19
-
@@ -1,6 +0,0 @@
1
- module Juici
2
- module Controllers
3
- class Base
4
- end
5
- end
6
- end
@@ -1,26 +0,0 @@
1
- module Juici::Controllers
2
- class Base
3
-
4
- NotFound = Sinatra::NotFound
5
-
6
- attr_accessor :params
7
- def initialize(params)
8
- @params = params
9
- end
10
-
11
- def build_opts(opts)
12
- default_opts.merge(opts)
13
- end
14
-
15
- def default_opts
16
- {
17
- :styles => styles
18
- }
19
- end
20
-
21
- def styles
22
- []
23
- end
24
-
25
- end
26
- end
@@ -1,14 +0,0 @@
1
- module Juici::Controllers
2
- class BuildQueue < Base
3
-
4
- def list
5
- builds = $build_queue.builds.sort_by(&:priority)
6
- yield [:"queue/list", opts(:builds => builds)]
7
- end
8
-
9
- def opts(_opts={})
10
- {:active => :queue}.merge(_opts)
11
- end
12
-
13
- end
14
- end
@@ -1,74 +0,0 @@
1
- module Juici::Controllers
2
- class Builds < Base
3
-
4
- def list
5
- params[:page] = params[:page] ? params[:page].to_i : 0
6
-
7
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
8
-
9
- builds = ::Juici::Build.where(parent: project.name)
10
-
11
- pages = (builds.count.to_f / ::Juici::Config.builds_per_page).ceil
12
-
13
- builds = builds.desc(:_id).
14
- limit(::Juici::Config.builds_per_page).
15
- skip(params[:page].to_i * ::Juici::Config.builds_per_page)
16
-
17
- yield [:"builds/list", build_opts({:project => project, :builds => builds, :pages => pages})]
18
- end
19
-
20
- def show
21
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
22
- build = ::Juici::Build.find_or_raise(NotFound, parent: project.name, _id: params[:id])
23
- # return 404 unless project && build
24
- yield [:"builds/show", build_opts({:project => project, :build => build})]
25
- end
26
-
27
- def kill
28
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
29
- build = ::Juici::Build.find_or_raise(NotFound, parent: project.name, _id: params[:id])
30
-
31
- ::Juici.dbgp "Killing off build #{build[:_id]}"
32
- build.kill! if build.status == ::Juici::BuildStatus::START
33
- return build
34
- end
35
-
36
- def cancel
37
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
38
- build = ::Juici::Build.find_or_raise(NotFound, parent: project.name, _id: params[:id])
39
-
40
- ::Juici.dbgp "Cancelling build #{build[:_id]}"
41
- build.cancel if build.status == ::Juici::BuildStatus::WAIT
42
- return build
43
- end
44
-
45
- def new
46
- yield [:"builds/new", {:active => :new_build}]
47
- end
48
-
49
- def styles
50
- ["builds"]
51
- end
52
-
53
- def edit
54
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
55
- build = ::Juici::Build.find_or_raise(NotFound, parent: project.name, _id: params[:id])
56
- # return 404 unless project && build
57
- yield [:"builds/edit", {:project => project, :build => build}]
58
- end
59
-
60
- def update!
61
- project = ::Juici::Project.find_or_raise(NotFound, name: params[:project])
62
- build = ::Juici::Build.find_or_raise(NotFound, parent: project.name, _id: params[:id])
63
-
64
- ::Juici::Build::EDITABLE_ATTRIBUTES[:string].each do |attr|
65
- build[attr] = params[attr] if params[attr]
66
- end
67
- # binding.pry
68
- build.tap do |b|
69
- b.save!
70
- end
71
- end
72
-
73
- end
74
- end