hudson 0.3.0.beta.10 → 0.3.0.beta.11

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 (68) hide show
  1. data/Gemfile.lock +1 -1
  2. data/Rakefile +3 -6
  3. data/features/manage_jobs.feature +6 -2
  4. data/features/step_definitions/fixture_project_steps.rb +1 -1
  5. data/features/support/env.rb +2 -3
  6. data/{features/fixtures/projects/ruby → fixtures/projects/non-bundler}/Rakefile +0 -0
  7. data/fixtures/projects/rails-3/Gemfile +30 -0
  8. data/fixtures/projects/rails-3/Gemfile.lock +74 -0
  9. data/fixtures/projects/rails-3/README +256 -0
  10. data/fixtures/projects/rails-3/Rakefile +7 -0
  11. data/fixtures/projects/rails-3/app/controllers/application_controller.rb +3 -0
  12. data/fixtures/projects/rails-3/app/helpers/application_helper.rb +2 -0
  13. data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +14 -0
  14. data/fixtures/projects/rails-3/config.ru +4 -0
  15. data/fixtures/projects/rails-3/config/application.rb +42 -0
  16. data/fixtures/projects/rails-3/config/boot.rb +13 -0
  17. data/fixtures/projects/rails-3/config/database.yml +22 -0
  18. data/fixtures/projects/rails-3/config/environment.rb +5 -0
  19. data/fixtures/projects/rails-3/config/environments/development.rb +26 -0
  20. data/fixtures/projects/rails-3/config/environments/production.rb +49 -0
  21. data/fixtures/projects/rails-3/config/environments/test.rb +35 -0
  22. data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +7 -0
  23. data/fixtures/projects/rails-3/config/initializers/inflections.rb +10 -0
  24. data/fixtures/projects/rails-3/config/initializers/mime_types.rb +5 -0
  25. data/fixtures/projects/rails-3/config/initializers/secret_token.rb +7 -0
  26. data/fixtures/projects/rails-3/config/initializers/session_store.rb +8 -0
  27. data/fixtures/projects/rails-3/config/locales/en.yml +5 -0
  28. data/fixtures/projects/rails-3/config/routes.rb +58 -0
  29. data/fixtures/projects/rails-3/db/seeds.rb +7 -0
  30. data/fixtures/projects/rails-3/doc/README_FOR_APP +2 -0
  31. data/fixtures/projects/rails-3/log/development.log +0 -0
  32. data/fixtures/projects/rails-3/log/production.log +0 -0
  33. data/fixtures/projects/rails-3/log/server.log +0 -0
  34. data/fixtures/projects/rails-3/log/test.log +0 -0
  35. data/fixtures/projects/rails-3/public/404.html +26 -0
  36. data/fixtures/projects/rails-3/public/422.html +26 -0
  37. data/fixtures/projects/rails-3/public/500.html +26 -0
  38. data/fixtures/projects/rails-3/public/favicon.ico +0 -0
  39. data/fixtures/projects/rails-3/public/images/rails.png +0 -0
  40. data/fixtures/projects/rails-3/public/index.html +239 -0
  41. data/fixtures/projects/rails-3/public/javascripts/application.js +2 -0
  42. data/fixtures/projects/rails-3/public/javascripts/controls.js +965 -0
  43. data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +974 -0
  44. data/fixtures/projects/rails-3/public/javascripts/effects.js +1123 -0
  45. data/fixtures/projects/rails-3/public/javascripts/prototype.js +6001 -0
  46. data/fixtures/projects/rails-3/public/javascripts/rails.js +175 -0
  47. data/fixtures/projects/rails-3/public/robots.txt +5 -0
  48. data/fixtures/projects/rails-3/script/rails +6 -0
  49. data/fixtures/projects/rails-3/test/performance/browsing_test.rb +9 -0
  50. data/fixtures/projects/rails-3/test/test_helper.rb +13 -0
  51. data/fixtures/projects/ruby/Gemfile +3 -0
  52. data/fixtures/projects/ruby/Gemfile.lock +10 -0
  53. data/fixtures/projects/ruby/Rakefile +4 -0
  54. data/hudson.gemspec +3 -3
  55. data/lib/hudson.rb +2 -2
  56. data/lib/hudson/cli.rb +3 -0
  57. data/lib/hudson/hudson.war +0 -0
  58. data/lib/hudson/hudson_version.rb +4 -0
  59. data/lib/hudson/job_config_builder.rb +19 -2
  60. data/lib/hudson/plugins/git.hpi +0 -0
  61. data/lib/hudson/plugins/greenballs.hpi +0 -0
  62. data/lib/hudson/plugins/rake.hpi +0 -0
  63. data/lib/hudson/version.rb +3 -0
  64. data/spec/fixtures/rails.single.config.xml +10 -2
  65. data/spec/fixtures/rubygem.config.xml +9 -1
  66. data/spec/job_config_builder_spec.rb +16 -1
  67. data/tasks/upgrade.rake +83 -0
  68. metadata +55 -5
@@ -0,0 +1,175 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+ })();
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+ require 'rails/performance_test_help'
3
+
4
+ # Profiling results for each test method are written to tmp/performance.
5
+ class BrowsingTest < ActionDispatch::PerformanceTest
6
+ def test_homepage
7
+ get '/'
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "rack"
@@ -0,0 +1,10 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ rack (1.2.1)
5
+
6
+ PLATFORMS
7
+ ruby
8
+
9
+ DEPENDENCIES
10
+ rack
@@ -0,0 +1,4 @@
1
+ desc "Default task runs tests"
2
+ task :default do
3
+ puts "Tests ran successfully!"
4
+ end
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hudson}
5
- s.version = "0.3.0.beta.10"
5
+ s.version = "0.3.0.beta.11"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Charles Lowell", "Dr Nic Williams"]
9
- s.date = %q{2010-10-28}
9
+ s.date = %q{2010-10-29}
10
10
  s.default_executable = %q{hudson}
11
11
  s.description = %q{A suite of utilities for bringing continous integration to your projects (not the other way around) with hudson CI}
12
12
  s.email = ["cowboyd@thefrontside.net", "drnicwilliams@gmail.com"]
13
13
  s.executables = ["hudson"]
14
- s.files = ["bin", "bin/hudson", "features", "features/development.feature", "features/fixtures", "features/fixtures/projects", "features/fixtures/projects/ruby", "features/fixtures/projects/ruby/Rakefile", "features/listing_jobs.feature", "features/manage_jobs.feature", "features/manage_remote_servers.feature", "features/manage_slave_nodes.feature", "features/server.feature", "features/step_definitions", "features/step_definitions/common_steps.rb", "features/step_definitions/fixture_project_steps.rb", "features/step_definitions/hudson_steps.rb", "features/step_definitions/scm_steps.rb", "features/support", "features/support/common.rb", "features/support/env.rb", "features/support/hooks.rb", "features/support/matchers.rb", "Gemfile", "Gemfile.lock", "hudson.gemspec", "lib", "lib/hudson", "lib/hudson/api.rb", "lib/hudson/cli", "lib/hudson/cli/formatting.rb", "lib/hudson/cli.rb", "lib/hudson/config.rb", "lib/hudson/core_ext", "lib/hudson/core_ext/object", "lib/hudson/core_ext/object/blank.rb", "lib/hudson/hudson-cli.jar", "lib/hudson/hudson.war", "lib/hudson/job_config_builder.rb", "lib/hudson/plugins", "lib/hudson/plugins/git.hpi", "lib/hudson/plugins/github.hpi", "lib/hudson/plugins/greenballs.hpi", "lib/hudson/plugins/rake.hpi", "lib/hudson/plugins/ruby.hpi", "lib/hudson/project_scm.rb", "lib/hudson/remote.rb", "lib/hudson.rb", "Rakefile", "README.md", "spec", "spec/fixtures", "spec/fixtures/ec2_global.config.xml", "spec/fixtures/rails.multi.config.xml", "spec/fixtures/rails.single.config.triggers.xml", "spec/fixtures/rails.single.config.xml", "spec/fixtures/rubygem.config.xml", "spec/fixtures/therubyracer.config.xml", "spec/job_config_builder_spec.rb", "spec/spec_helper.rb"]
14
+ s.files = ["bin", "bin/hudson", "features", "features/development.feature", "features/listing_jobs.feature", "features/manage_jobs.feature", "features/manage_remote_servers.feature", "features/manage_slave_nodes.feature", "features/server.feature", "features/step_definitions", "features/step_definitions/common_steps.rb", "features/step_definitions/fixture_project_steps.rb", "features/step_definitions/hudson_steps.rb", "features/step_definitions/scm_steps.rb", "features/support", "features/support/common.rb", "features/support/env.rb", "features/support/hooks.rb", "features/support/matchers.rb", "fixtures", "fixtures/projects", "fixtures/projects/non-bundler", "fixtures/projects/non-bundler/Rakefile", "fixtures/projects/rails-3", "fixtures/projects/rails-3/app", "fixtures/projects/rails-3/app/controllers", "fixtures/projects/rails-3/app/controllers/application_controller.rb", "fixtures/projects/rails-3/app/helpers", "fixtures/projects/rails-3/app/helpers/application_helper.rb", "fixtures/projects/rails-3/app/mailers", "fixtures/projects/rails-3/app/models", "fixtures/projects/rails-3/app/views", "fixtures/projects/rails-3/app/views/layouts", "fixtures/projects/rails-3/app/views/layouts/application.html.erb", "fixtures/projects/rails-3/config", "fixtures/projects/rails-3/config/application.rb", "fixtures/projects/rails-3/config/boot.rb", "fixtures/projects/rails-3/config/database.yml", "fixtures/projects/rails-3/config/environment.rb", "fixtures/projects/rails-3/config/environments", "fixtures/projects/rails-3/config/environments/development.rb", "fixtures/projects/rails-3/config/environments/production.rb", "fixtures/projects/rails-3/config/environments/test.rb", "fixtures/projects/rails-3/config/initializers", "fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb", "fixtures/projects/rails-3/config/initializers/inflections.rb", "fixtures/projects/rails-3/config/initializers/mime_types.rb", "fixtures/projects/rails-3/config/initializers/secret_token.rb", "fixtures/projects/rails-3/config/initializers/session_store.rb", "fixtures/projects/rails-3/config/locales", "fixtures/projects/rails-3/config/locales/en.yml", "fixtures/projects/rails-3/config/routes.rb", "fixtures/projects/rails-3/config.ru", "fixtures/projects/rails-3/db", "fixtures/projects/rails-3/db/seeds.rb", "fixtures/projects/rails-3/doc", "fixtures/projects/rails-3/doc/README_FOR_APP", "fixtures/projects/rails-3/Gemfile", "fixtures/projects/rails-3/Gemfile.lock", "fixtures/projects/rails-3/lib", "fixtures/projects/rails-3/lib/tasks", "fixtures/projects/rails-3/log", "fixtures/projects/rails-3/log/development.log", "fixtures/projects/rails-3/log/production.log", "fixtures/projects/rails-3/log/server.log", "fixtures/projects/rails-3/log/test.log", "fixtures/projects/rails-3/public", "fixtures/projects/rails-3/public/404.html", "fixtures/projects/rails-3/public/422.html", "fixtures/projects/rails-3/public/500.html", "fixtures/projects/rails-3/public/favicon.ico", "fixtures/projects/rails-3/public/images", "fixtures/projects/rails-3/public/images/rails.png", "fixtures/projects/rails-3/public/index.html", "fixtures/projects/rails-3/public/javascripts", "fixtures/projects/rails-3/public/javascripts/application.js", "fixtures/projects/rails-3/public/javascripts/controls.js", "fixtures/projects/rails-3/public/javascripts/dragdrop.js", "fixtures/projects/rails-3/public/javascripts/effects.js", "fixtures/projects/rails-3/public/javascripts/prototype.js", "fixtures/projects/rails-3/public/javascripts/rails.js", "fixtures/projects/rails-3/public/robots.txt", "fixtures/projects/rails-3/public/stylesheets", "fixtures/projects/rails-3/Rakefile", "fixtures/projects/rails-3/README", "fixtures/projects/rails-3/script", "fixtures/projects/rails-3/script/rails", "fixtures/projects/rails-3/test", "fixtures/projects/rails-3/test/fixtures", "fixtures/projects/rails-3/test/functional", "fixtures/projects/rails-3/test/integration", "fixtures/projects/rails-3/test/performance", "fixtures/projects/rails-3/test/performance/browsing_test.rb", "fixtures/projects/rails-3/test/test_helper.rb", "fixtures/projects/rails-3/test/unit", "fixtures/projects/rails-3/vendor", "fixtures/projects/rails-3/vendor/plugins", "fixtures/projects/ruby", "fixtures/projects/ruby/Gemfile", "fixtures/projects/ruby/Gemfile.lock", "fixtures/projects/ruby/Rakefile", "Gemfile", "Gemfile.lock", "hudson.gemspec", "lib", "lib/hudson", "lib/hudson/api.rb", "lib/hudson/cli", "lib/hudson/cli/formatting.rb", "lib/hudson/cli.rb", "lib/hudson/config.rb", "lib/hudson/core_ext", "lib/hudson/core_ext/object", "lib/hudson/core_ext/object/blank.rb", "lib/hudson/hudson-cli.jar", "lib/hudson/hudson.war", "lib/hudson/hudson_version.rb", "lib/hudson/job_config_builder.rb", "lib/hudson/plugins", "lib/hudson/plugins/git.hpi", "lib/hudson/plugins/github.hpi", "lib/hudson/plugins/greenballs.hpi", "lib/hudson/plugins/rake.hpi", "lib/hudson/plugins/ruby.hpi", "lib/hudson/project_scm.rb", "lib/hudson/remote.rb", "lib/hudson/version.rb", "lib/hudson.rb", "Rakefile", "README.md", "spec", "spec/fixtures", "spec/fixtures/ec2_global.config.xml", "spec/fixtures/rails.multi.config.xml", "spec/fixtures/rails.single.config.triggers.xml", "spec/fixtures/rails.single.config.xml", "spec/fixtures/rubygem.config.xml", "spec/fixtures/therubyracer.config.xml", "spec/job_config_builder_spec.rb", "spec/spec_helper.rb", "tasks", "tasks/upgrade.rake"]
15
15
  s.homepage = %q{http://github.com/cowboyd/hudson.rb}
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{hudson}
@@ -1,10 +1,10 @@
1
1
  module Hudson
2
- VERSION = "0.3.0.beta.10"
3
- HUDSON_VERSION = "1.380"
4
2
  WAR = File.expand_path(File.dirname(__FILE__) + "/hudson/hudson.war")
5
3
  PLUGINS = File.expand_path(File.dirname(__FILE__) + "/hudson/plugins")
6
4
  end
7
5
 
6
+ require 'hudson/version'
7
+ require 'hudson/hudson_version'
8
8
  require 'hudson/api'
9
9
  require 'hudson/job_config_builder'
10
10
  require 'hudson/project_scm'
@@ -56,6 +56,9 @@ module Hudson
56
56
  unless scm = Hudson::ProjectScm.discover
57
57
  error "Cannot determine project SCM. Currently supported: #{Hudson::ProjectScm.supported}"
58
58
  end
59
+ unless File.exists?("Gemfile")
60
+ error "Ruby/Rails projects without a Gemfile are currently unsupported."
61
+ end
59
62
  job_config = Hudson::JobConfigBuilder.new(:rails) do |c|
60
63
  c.scm = scm.url
61
64
  c.assigned_node = options[:assigned_node] if options[:assigned_node]
Binary file
@@ -0,0 +1,4 @@
1
+ module Hudson
2
+ HUDSON_VERSION = "1.381"
3
+ end
4
+
@@ -62,7 +62,7 @@ module Hudson
62
62
  b.string "uploadpack"
63
63
  b.string "git-upload-pack"
64
64
  b.string "url"
65
- b.string scm
65
+ b.string public_only_git_scm(scm) # FIXME remove when we have deploy keys
66
66
  b.string "tagopt"
67
67
  b.string
68
68
  end
@@ -78,11 +78,19 @@ module Hudson
78
78
  end
79
79
  end
80
80
 
81
+ b.localBranch
81
82
  b.mergeOptions
83
+ b.recursiveSubmodules false
82
84
  b.doGenerateSubmoduleConfigurations false
85
+ b.authorOrCommitter false
83
86
  b.clean false
84
- b.choosingStrategy "Default"
87
+ b.wipeOutWorkspace false
88
+ b.buildChooser :class => "hudson.plugins.git.util.DefaultBuildChooser"
89
+ b.gitTool "Default"
85
90
  b.submoduleCfg :class => "list"
91
+ b.relativeTargetDir
92
+ b.excludedRegions
93
+ b.excludedUsers
86
94
  end
87
95
  end
88
96
  end
@@ -170,5 +178,14 @@ module Hudson
170
178
  b.silent false
171
179
  end
172
180
  end
181
+
182
+ # Converts git@github.com:drnic/newgem.git into git://github.com/drnic/newgem.git
183
+ def public_only_git_scm(scm_url)
184
+ if scm_url =~ /git@([\w\-_.]+):(.+)\.git/
185
+ "git://#{$1}/#{$2}.git"
186
+ else
187
+ scm_url
188
+ end
189
+ end
173
190
  end
174
191
  end
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ module Hudson
2
+ VERSION = "0.3.0.beta.11"
3
+ end
@@ -17,7 +17,7 @@
17
17
  <string>uploadpack</string>
18
18
  <string>git-upload-pack</string>
19
19
  <string>url</string>
20
- <string>git@codebasehq.com:mocra/misc/mocra-web.git</string>
20
+ <string>git://codebasehq.com/mocra/misc/mocra-web.git</string>
21
21
  <string>tagopt</string>
22
22
  <string/>
23
23
  </org.spearce.jgit.transport.RemoteConfig>
@@ -27,11 +27,19 @@
27
27
  <name>master</name>
28
28
  </hudson.plugins.git.BranchSpec>
29
29
  </branches>
30
+ <localBranch/>
30
31
  <mergeOptions/>
32
+ <recursiveSubmodules>false</recursiveSubmodules>
31
33
  <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
34
+ <authorOrCommitter>false</authorOrCommitter>
32
35
  <clean>false</clean>
33
- <choosingStrategy>Default</choosingStrategy>
36
+ <wipeOutWorkspace>false</wipeOutWorkspace>
37
+ <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/>
38
+ <gitTool>Default</gitTool>
34
39
  <submoduleCfg class="list"/>
40
+ <relativeTargetDir/>
41
+ <excludedRegions/>
42
+ <excludedUsers/>
35
43
  </scm>
36
44
  <canRoam>true</canRoam>
37
45
  <disabled>false</disabled>
@@ -27,11 +27,19 @@
27
27
  <name>**</name>
28
28
  </hudson.plugins.git.BranchSpec>
29
29
  </branches>
30
+ <localBranch/>
30
31
  <mergeOptions/>
32
+ <recursiveSubmodules>false</recursiveSubmodules>
31
33
  <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
34
+ <authorOrCommitter>false</authorOrCommitter>
32
35
  <clean>false</clean>
33
- <choosingStrategy>Default</choosingStrategy>
36
+ <wipeOutWorkspace>false</wipeOutWorkspace>
37
+ <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/>
38
+ <gitTool>Default</gitTool>
34
39
  <submoduleCfg class="list"/>
40
+ <relativeTargetDir/>
41
+ <excludedRegions/>
42
+ <excludedUsers/>
35
43
  </scm>
36
44
  <canRoam>true</canRoam>
37
45
  <disabled>false</disabled>
@@ -6,7 +6,7 @@ describe Hudson::JobConfigBuilder do
6
6
  describe "rails job; single axis; block syntax" do
7
7
  before do
8
8
  @config = Hudson::JobConfigBuilder.new(:rails) do |c|
9
- c.scm = "git@codebasehq.com:mocra/misc/mocra-web.git"
9
+ c.scm = "git://codebasehq.com/mocra/misc/mocra-web.git"
10
10
  c.git_branches = %w[master]
11
11
  end
12
12
  end
@@ -48,4 +48,19 @@ describe Hudson::JobConfigBuilder do
48
48
  Hpricot.XML(@config.to_xml).search("assignedNode").size.should == 0
49
49
  end
50
50
  end
51
+
52
+ describe "temporary:" do
53
+ describe "convert git@ into git:// until we have deploy keys" do
54
+ before do
55
+ @config = Hudson::JobConfigBuilder.new(:rails) do |c|
56
+ c.scm = "git@codebasehq.com:mocra/misc/mocra-web.git"
57
+ c.git_branches = %w[master]
58
+ end
59
+ end
60
+ it "builds config.xml" do
61
+ config_xml("rails", "single").should == @config.to_xml
62
+ end
63
+ end
64
+ end
65
+
51
66
  end
@@ -0,0 +1,83 @@
1
+ require 'thor'
2
+ require 'ostruct'
3
+ require 'json'
4
+ require 'hudson'
5
+ class Hudson::Progress
6
+
7
+ def initialize
8
+ @shell = Thor::Shell::Color.new
9
+ end
10
+
11
+ def means(step)
12
+ begin
13
+ @shell.say(step + "... ")
14
+ yield(self).tap do
15
+ @shell.say("[OK]", :green)
16
+ end
17
+ rescue Ok => ok
18
+ @shell.say("[OK#{ok.message ? " - #{ok.message}" : ''}]", :green)
19
+ rescue StandardError => e
20
+ @shell.say("[FAIL - #{e.message}]", :red)
21
+ false
22
+ end
23
+ end
24
+
25
+ def ok(msg = nil)
26
+ raise Ok.new(msg)
27
+ end
28
+
29
+ class Ok < StandardError
30
+ end
31
+
32
+ end
33
+
34
+ class Hudson::FetchPlugin
35
+ def initialize(progress, latest)
36
+ @progress, @latest = progress, latest
37
+ end
38
+
39
+ def fetch(plugin)
40
+ plugin = plugin.to_s
41
+ metadata = OpenStruct.new(@latest['plugins'][plugin])
42
+ @progress.means "upgrading #{plugin} plugin" do |step|
43
+ system("cd lib/hudson/plugins && curl -L --silent #{metadata.url} > #{plugin}.hpi")
44
+ step.ok(metadata.version)
45
+ end
46
+ end
47
+
48
+ end
49
+
50
+ namespace :hudson do
51
+
52
+ desc "upgrade hudson server version, and bundled plugins to latest version"
53
+ task :upgrade do
54
+ progress = Hudson::Progress.new
55
+ latest = progress.means "grabbing the latest metadata from hudson-ci.org" do |step|
56
+ JSON.parse(HTTParty.get("http://hudson-ci.org/update-center.json").lines.to_a[1..-2].join("\n"))
57
+ end
58
+ progress.means "upgrading hudson server" do |step|
59
+ latest_version = latest["core"]["version"]
60
+ current_version = Hudson::HUDSON_VERSION
61
+ if latest_version > current_version
62
+ `cd lib/hudson && rm hudson.war && curl -L --silent #{latest["core"]["url"]} > hudson.war`
63
+ File.open(File.expand_path(File.dirname(__FILE__) + '/../lib/hudson/hudson_version.rb'), "w") do |f|
64
+ f.write <<-EOF
65
+ module Hudson
66
+ HUDSON_VERSION = "#{latest["core"]["version"]}"
67
+ end
68
+
69
+ EOF
70
+ end
71
+ step.ok("#{current_version} -> #{latest_version}")
72
+ else
73
+ step.ok("Up-to-date at #{current_version}")
74
+ end
75
+ end
76
+
77
+ plugins = Hudson::FetchPlugin.new(progress, latest)
78
+
79
+ Dir['lib/hudson/plugins/*.hpi'].each do |plugin_file|
80
+ plugins.fetch File.basename(plugin_file, ".hpi")
81
+ end
82
+ end
83
+ end