hudson 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/.gitignore +4 -0
  2. data/Changelog.md +24 -0
  3. data/Gemfile.lock +1 -1
  4. data/Rakefile +4 -50
  5. data/features/default_host.feature +19 -0
  6. data/features/development.feature +2 -2
  7. data/features/launch_server.feature +1 -0
  8. data/features/manage_jobs.feature +109 -1
  9. data/features/manage_slave_nodes.feature +39 -4
  10. data/features/step_definitions/common_steps.rb +6 -0
  11. data/features/step_definitions/hudson_steps.rb +13 -2
  12. data/features/support/hudson_helpers.rb +6 -0
  13. data/hudson.gemspec +26 -56
  14. data/lib/hudson.rb +1 -1
  15. data/lib/hudson/api.rb +38 -24
  16. data/lib/hudson/cli.rb +81 -49
  17. data/lib/hudson/installation.rb +136 -0
  18. data/lib/hudson/job_config_builder.rb +68 -21
  19. data/lib/hudson/project_scm.rb +3 -3
  20. data/lib/hudson/version.rb +1 -1
  21. data/spec/fixtures/rails.single.config.xml +1 -0
  22. data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +84 -0
  23. data/spec/fixtures/{rubygem.config.xml → ruby.multi.config.xml} +18 -1
  24. data/spec/job_config_builder_spec.rb +47 -11
  25. metadata +41 -93
  26. data/fixtures/projects/non-bundler/Rakefile +0 -4
  27. data/fixtures/projects/rails-3/Gemfile +0 -30
  28. data/fixtures/projects/rails-3/Gemfile.lock +0 -74
  29. data/fixtures/projects/rails-3/README +0 -256
  30. data/fixtures/projects/rails-3/Rakefile +0 -7
  31. data/fixtures/projects/rails-3/app/controllers/application_controller.rb +0 -3
  32. data/fixtures/projects/rails-3/app/helpers/application_helper.rb +0 -2
  33. data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +0 -14
  34. data/fixtures/projects/rails-3/config.ru +0 -4
  35. data/fixtures/projects/rails-3/config/application.rb +0 -42
  36. data/fixtures/projects/rails-3/config/boot.rb +0 -13
  37. data/fixtures/projects/rails-3/config/database.yml +0 -22
  38. data/fixtures/projects/rails-3/config/environment.rb +0 -5
  39. data/fixtures/projects/rails-3/config/environments/development.rb +0 -26
  40. data/fixtures/projects/rails-3/config/environments/production.rb +0 -49
  41. data/fixtures/projects/rails-3/config/environments/test.rb +0 -35
  42. data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +0 -7
  43. data/fixtures/projects/rails-3/config/initializers/inflections.rb +0 -10
  44. data/fixtures/projects/rails-3/config/initializers/mime_types.rb +0 -5
  45. data/fixtures/projects/rails-3/config/initializers/secret_token.rb +0 -7
  46. data/fixtures/projects/rails-3/config/initializers/session_store.rb +0 -8
  47. data/fixtures/projects/rails-3/config/locales/en.yml +0 -5
  48. data/fixtures/projects/rails-3/config/routes.rb +0 -58
  49. data/fixtures/projects/rails-3/db/seeds.rb +0 -7
  50. data/fixtures/projects/rails-3/doc/README_FOR_APP +0 -2
  51. data/fixtures/projects/rails-3/log/development.log +0 -0
  52. data/fixtures/projects/rails-3/log/production.log +0 -0
  53. data/fixtures/projects/rails-3/log/server.log +0 -0
  54. data/fixtures/projects/rails-3/log/test.log +0 -0
  55. data/fixtures/projects/rails-3/public/404.html +0 -26
  56. data/fixtures/projects/rails-3/public/422.html +0 -26
  57. data/fixtures/projects/rails-3/public/500.html +0 -26
  58. data/fixtures/projects/rails-3/public/favicon.ico +0 -0
  59. data/fixtures/projects/rails-3/public/images/rails.png +0 -0
  60. data/fixtures/projects/rails-3/public/index.html +0 -239
  61. data/fixtures/projects/rails-3/public/javascripts/application.js +0 -2
  62. data/fixtures/projects/rails-3/public/javascripts/controls.js +0 -965
  63. data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +0 -974
  64. data/fixtures/projects/rails-3/public/javascripts/effects.js +0 -1123
  65. data/fixtures/projects/rails-3/public/javascripts/prototype.js +0 -6001
  66. data/fixtures/projects/rails-3/public/javascripts/rails.js +0 -175
  67. data/fixtures/projects/rails-3/public/robots.txt +0 -5
  68. data/fixtures/projects/rails-3/script/rails +0 -6
  69. data/fixtures/projects/rails-3/test/performance/browsing_test.rb +0 -9
  70. data/fixtures/projects/rails-3/test/test_helper.rb +0 -13
  71. data/fixtures/projects/ruby/Gemfile +0 -3
  72. data/fixtures/projects/ruby/Gemfile.lock +0 -10
  73. data/fixtures/projects/ruby/Rakefile +0 -4
  74. data/lib/hudson/hudson.war +0 -0
  75. data/lib/hudson/hudson_version.rb +0 -4
  76. data/lib/hudson/plugins/envfile.hpi +0 -0
  77. data/lib/hudson/plugins/git.hpi +0 -0
  78. data/lib/hudson/plugins/github.hpi +0 -0
  79. data/lib/hudson/plugins/greenballs.hpi +0 -0
  80. data/lib/hudson/plugins/rake.hpi +0 -0
  81. data/lib/hudson/plugins/ruby.hpi +0 -0
  82. data/tasks/upgrade.rake +0 -83
@@ -0,0 +1,4 @@
1
+ hudson-*.gem
2
+ tmp
3
+ *.rbc
4
+ .bundle
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 - 2010/12/1
4
+
5
+ * hudson warfile no longer bundled with hudson gem
6
+ * rubygem is now 235K instead of 31M!
7
+ * upgrade hudson server and related plugins without requiring a new gem release
8
+ * hudson gem now fully drinks the bundler koolaid.
9
+ * hudson create
10
+ * --node-labels 'ubuntu,gentoo' - run tests against multiple slave nodes by their label
11
+ * --no-template - do not generate any default steps (well, a silly one)
12
+ * hudson add_node
13
+ * --vagrant - provide alternate default values when adding nodes if the node is a Vagrant VM
14
+ * hudson default_host
15
+ * NEW - displays the current default host:port URI
16
+
17
+ ## 0.4.0 - 2010/11/11
18
+
19
+ * hudson create
20
+ * --rubies '1.8.7,1.9.2,rbx-head,jruby' - uses RVM and Hudson's Axes support to run tests within different Ruby environments
21
+ * --scm git://some-alternate.com/repo.git - can override the "origin" URI
22
+ * --scm-branches 'master,other,branches' - specify which branches can be pulled from to trigger tests
23
+
24
+ * hudson job
25
+ * Can dump information/status about a job
26
+
3
27
  ## 0.3.1 - 2010/11/8
4
28
 
5
29
  * fixed error in the rails3 template's test for schema.rb
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hudson (0.3.1)
4
+ hudson (0.5.0)
5
5
  builder (~> 2.1.2)
6
6
  hpricot
7
7
  httparty (~> 0.6.1)
data/Rakefile CHANGED
@@ -1,52 +1,5 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
-
4
- $:.unshift('lib')
5
- require 'hudson'
6
-
7
- Gem::Specification.new do |s|
8
- $gemspec = s
9
- s.name = s.rubyforge_project = "hudson"
10
- s.version = Hudson::VERSION
11
- s.summary = "Painless Continuous Integration with Hudson Server"
12
- s.description = "A suite of utilities for bringing continous integration to your projects (not the other way around) with hudson CI"
13
- s.email = ["cowboyd@thefrontside.net", "drnicwilliams@gmail.com"]
14
- s.homepage = "http://github.com/cowboyd/hudson.rb"
15
- s.authors = ["Charles Lowell", "Dr Nic Williams"]
16
- s.executables = ["hudson"]
17
- s.require_paths = ["lib"]
18
- s.files = Rake::FileList.new("**/*").tap do |manifest|
19
- manifest.exclude "tmp", "**/*.gem"
20
- end.to_a
21
- s.add_dependency("term-ansicolor", [">= 1.0.4"])
22
- s.add_dependency("yajl-ruby", [">= 0.7.6"])
23
- s.add_dependency("httparty", ["~> 0.6.1"])
24
- s.add_dependency("builder", ["~> 2.1.2"])
25
- s.add_dependency("thor", ["~> 0.14.2"])
26
- s.add_dependency("hpricot")
27
- s.add_development_dependency("rake", ["~> 0.8.7"])
28
- s.add_development_dependency("cucumber", ["~> 0.9.0"])
29
- s.add_development_dependency("rspec", ["~> 2.0.0"])
30
- s.add_development_dependency("json", ["~>1.4.0"])
31
- s.add_development_dependency("awesome_print")
32
- end
33
-
34
- desc "Build gem"
35
- task :gem => :gemspec do
36
- Gem::Builder.new($gemspec).build
37
- end
38
-
39
- desc "Build gemspec"
40
- task :gemspec => :clean do
41
- File.open("#{$gemspec.name}.gemspec", "w") do |f|
42
- f.write($gemspec.to_ruby)
43
- end
44
- end
45
-
46
- desc "Clean up"
47
- task :clean do
48
- sh "rm -rf *.gem"
49
- end
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
50
3
 
51
4
  require "rspec/core/rake_task"
52
5
  RSpec::Core::RakeTask.new(:spec)
@@ -68,6 +21,7 @@ task :cucumber => 'cucumber:ok'
68
21
  desc "Start test server; Run cucumber:ok; Kill Test Server;"
69
22
  task :default => [:spec, "hudson:server:killtest", "hudson:server:test"] do
70
23
  require 'socket'
24
+ require 'net/http'
71
25
  print "waiting for at most 30 seconds for the server to start"
72
26
  tries = 1
73
27
  begin
@@ -100,7 +54,7 @@ namespace :hudson do
100
54
  task :test do
101
55
  port = 3010
102
56
  control = 3011
103
-
57
+ ENV['HUDSON_STOCK'] = File.expand_path(File.dirname(__FILE__) + "/fixtures/hudson")
104
58
  FileUtils.chdir(File.dirname(__FILE__)) do
105
59
  logfile = File.join("/tmp", "test_hudson.log")
106
60
  puts "Launching hudson test server at http://localhost:#{port}..."
@@ -0,0 +1,19 @@
1
+ Feature: Display default host information
2
+
3
+ Scenario: Display default host information if it is setup
4
+ Given I run local executable "hudson" with arguments "list --host localhost --port 3010"
5
+ When I run local executable "hudson" with arguments "default_host"
6
+ Then I should see exactly
7
+ """
8
+ http://localhost:3010
9
+ """
10
+
11
+ Scenario: Display warning if never used Hudson.rb before
12
+ When I run local executable "hudson" with arguments "default_host"
13
+ Then I should see exactly
14
+ """
15
+ ERROR: Either use --host or add remote servers.
16
+ """
17
+
18
+
19
+
@@ -7,8 +7,8 @@ Feature: Development processes of hudson itself (rake tasks)
7
7
  Scenario: Generate RubyGem
8
8
  Given this project is active project folder
9
9
  When I invoke task "rake clean" so that I start with nothing
10
- And I invoke task "rake gem"
11
- Then file with name matching "hudson-*.gem" is created
10
+ And I invoke task "rake build"
11
+ Then file with name matching "pkg/hudson-*.gem" is created
12
12
  And file with name matching "hudson.gemspec" is created
13
13
  And the file "hudson.gemspec" is a valid gemspec
14
14
 
@@ -6,6 +6,7 @@ Feature: Running a Hudson Server
6
6
  Scenario: Start a Hudson Server (hudson server)
7
7
  Given env variable $HOME set to project path "home"
8
8
  And "home/.hudson" folder is deleted
9
+ And hudson is using a stock warfile
9
10
  And there is nothing listening on port 5001
10
11
  And there is nothing listening on port 5002
11
12
  And I cleanup any hudson processes with control port 5002
@@ -1,4 +1,4 @@
1
- Feature: Create jobs
1
+ Feature: Create and manage jobs
2
2
  In order to reduce cost of getting a new project up onto Hudson
3
3
  As a project developer
4
4
  I want to add a new project to Hudson as a job
@@ -44,6 +44,100 @@ Feature: Create jobs
44
44
  CLI: hudson build ruby
45
45
  """
46
46
 
47
+ Scenario: Setup hudson job with explicit scm url/branches (hudson create --scm URI --scm-branches='master,other')
48
+ Given I am in the "ruby" project folder
49
+ And the project uses "git" scm
50
+ When I run local executable "hudson" with arguments "create . --scm git://localhost/myapp.git --scm-branches 'master,other' --host localhost --port 3010"
51
+ Then I should see "Added ruby project 'ruby' to Hudson."
52
+ And the job "ruby" config "scm" should be:
53
+ """
54
+ <scm class="hudson.plugins.git.GitSCM">
55
+ <configVersion>1</configVersion>
56
+ <remoteRepositories>
57
+ <org.spearce.jgit.transport.RemoteConfig>
58
+ <string>origin</string>
59
+ <int>5</int>
60
+ <string>fetch</string>
61
+ <string>+refs/heads/*:refs/remotes/origin/*</string>
62
+ <string>receivepack</string>
63
+ <string>git-upload-pack</string>
64
+ <string>uploadpack</string>
65
+ <string>git-upload-pack</string>
66
+ <string>url</string>
67
+ <string>git://localhost/myapp.git</string>
68
+ <string>tagopt</string>
69
+ <string></string>
70
+ </org.spearce.jgit.transport.RemoteConfig>
71
+ </remoteRepositories>
72
+ <branches>
73
+ <hudson.plugins.git.BranchSpec>
74
+ <name>master</name>
75
+ </hudson.plugins.git.BranchSpec>
76
+ <hudson.plugins.git.BranchSpec>
77
+ <name>other</name>
78
+ </hudson.plugins.git.BranchSpec>
79
+ </branches>
80
+ <localBranch></localBranch>
81
+ <mergeOptions />
82
+ <recursiveSubmodules>false</recursiveSubmodules>
83
+ <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
84
+ <authorOrCommitter>false</authorOrCommitter>
85
+ <clean>false</clean>
86
+ <wipeOutWorkspace>false</wipeOutWorkspace>
87
+ <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser" />
88
+ <gitTool>Default</gitTool>
89
+ <submoduleCfg class="list" />
90
+ <relativeTargetDir></relativeTargetDir>
91
+ <excludedRegions></excludedRegions>
92
+ <excludedUsers></excludedUsers>
93
+ </scm>
94
+ """
95
+
96
+ Scenario: Setup hudson job with multiple rubies (hudson create --rubies '1.8.7,rbx-head,jruby')
97
+ Given I am in the "ruby" project folder
98
+ And the project uses "git" scm
99
+ When I run local executable "hudson" with arguments "create . --rubies '1.8.7,rbx-head,jruby' --host localhost --port 3010"
100
+ Then I should see "Added ruby project 'ruby' to Hudson."
101
+ And the job "ruby" config "axes" should be:
102
+ """
103
+ <axes>
104
+ <hudson.matrix.TextAxis>
105
+ <name>RUBY_VERSION</name>
106
+ <values>
107
+ <string>1.8.7</string>
108
+ <string>rbx-head</string>
109
+ <string>jruby</string>
110
+ </values>
111
+ </hudson.matrix.TextAxis>
112
+ </axes>
113
+ """
114
+
115
+ Scenario: Setup hudson job with multiple rubies and multiple nodes (hudson create --rubies.. --node_labels..)
116
+ Given I am in the "ruby" project folder
117
+ And the project uses "git" scm
118
+ When I run local executable "hudson" with arguments "create . --rubies '1.8.7,rbx-head,jruby' --node-labels '1.8.7,ubuntu' --host localhost --port 3010"
119
+ Then I should see "Added ruby project 'ruby' to Hudson."
120
+ And the job "ruby" config "axes" should be:
121
+ """
122
+ <axes>
123
+ <hudson.matrix.TextAxis>
124
+ <name>RUBY_VERSION</name>
125
+ <values>
126
+ <string>1.8.7</string>
127
+ <string>rbx-head</string>
128
+ <string>jruby</string>
129
+ </values>
130
+ </hudson.matrix.TextAxis>
131
+ <hudson.matrix.LabelAxis>
132
+ <name>label</name>
133
+ <values>
134
+ <string>1.8.7</string>
135
+ <string>ubuntu</string>
136
+ </values>
137
+ </hudson.matrix.LabelAxis>
138
+ </axes>
139
+ """
140
+
47
141
  Scenario: Setup hudson job for a specific node label (hudson create --assigned_node)
48
142
  Given I am in the "ruby" project folder
49
143
  And the project uses "git" scm
@@ -56,6 +150,20 @@ Feature: Create jobs
56
150
  When I run local executable "hudson" with arguments "create . --template rails3 --host localhost --port 3010"
57
151
  Then I should see "Added rails3 project 'rails-3' to Hudson."
58
152
 
153
+ Scenario: Create job without default steps (hudson create --no-template)
154
+ Given I am in the "non-bundler" project folder
155
+ And the project uses "git" scm
156
+ When I run local executable "hudson" with arguments "create . --no-template --host localhost --port 3010"
157
+ Then I should see "Added project 'non-bundler' to Hudson."
158
+ And the job "non-bundler" config "builders" should be:
159
+ """
160
+ <builders>
161
+ <hudson.tasks.Shell>
162
+ <command>echo &quot;THERE ARE NO STEPS! Except this one...&quot;</command>
163
+ </hudson.tasks.Shell>
164
+ </builders>
165
+ """
166
+
59
167
  Scenario: Reject projects that don't use bundler (hudson create)
60
168
  Given I am in the "non-bundler" project folder
61
169
  And the project uses "git" scm
@@ -26,12 +26,12 @@ Feature: Adding slave nodes
26
26
  """
27
27
 
28
28
  Scenario: Add slave via CLI with name defaulted to URL (hudson add_node)
29
- When I run local executable "hudson" with arguments "add_node foo1.bar.com --slave-user deploy --label 'app1 app2' --host localhost --port 3010"
29
+ When I run local executable "hudson" with arguments "add_node foo1.bar.com --slave-user deploy --labels 'app1,app2'"
30
30
  Then I should see exactly
31
31
  """
32
- Added slave node foo1.bar.com
32
+ Added slave node 'foo1.bar.com' to foo1.bar.com
33
33
  """
34
- When I run local executable "hudson" with arguments "add_node foo1.bar.com --slave-user deploy --label 'app1 app2' --host localhost --port 3010"
34
+ When I run local executable "hudson" with arguments "add_node foo1.bar.com --slave-user deploy --labels 'app1,app2'"
35
35
  Then I should see exactly
36
36
  """
37
37
  Slave called 'foo1.bar.com' already exists
@@ -42,4 +42,39 @@ Feature: Adding slave nodes
42
42
  """
43
43
  master
44
44
  foo1.bar.com
45
- """
45
+ """
46
+
47
+ Scenario: Add a local Vagrant/VirtualBox VM as a slave (hudson add_node --vagrant)
48
+ Given I am in the "rails-3" project folder
49
+ When I run local executable "hudson" with arguments "add_node localhost --name rails-3 --vagrant --labels 'app1,app2'"
50
+ Then I should see exactly
51
+ """
52
+ Added slave node 'rails-3' to localhost
53
+ """
54
+ When I run local executable "hudson" with arguments "nodes"
55
+ Then I should see exactly
56
+ """
57
+ master
58
+ rails-3
59
+ """
60
+ And the Hudson config "slaves" should be:
61
+ """
62
+ <slaves>
63
+ <slave>
64
+ <name>rails-3</name>
65
+ <description>Automatically created by Hudson.rb</description>
66
+ <remoteFS>/vagrant/tmp/hudson-slave/</remoteFS>
67
+ <numExecutors>2</numExecutors>
68
+ <mode>EXCLUSIVE</mode>
69
+ <retentionStrategy class="hudson.slaves.RetentionStrategy$Always" />
70
+ <launcher class="hudson.plugins.sshslaves.SSHLauncher">
71
+ <host>localhost</host>
72
+ <port>2222</port>
73
+ <username>vagrant</username>
74
+ <privatekey>/Library/Ruby/Gems/1.8/gems/vagrant-0.6.7/keys/vagrant</privatekey>
75
+ </launcher>
76
+ <label>app1 app2</label>
77
+ <nodeProperties />
78
+ </slave>
79
+ </slaves>
80
+ """
@@ -1,3 +1,9 @@
1
+
2
+
3
+ Given /^hudson is using a stock warfile$/ do
4
+ ENV['HUDSON_STOCK'] = File.expand_path(File.dirname(__FILE__) + '/../../fixtures/hudson')
5
+ end
6
+
1
7
  Given /^this project is active project folder/ do
2
8
  @active_project_folder = File.expand_path(File.dirname(__FILE__) + "/../..")
3
9
  end
@@ -5,8 +5,7 @@ Given /^I have a Hudson server running$/ do
5
5
  res = Net::HTTP.start("localhost", port) { |http| http.get('/api/json') }
6
6
  Hudson::Api.base_uri "http://localhost:#{port}"
7
7
  rescue Errno::ECONNREFUSED => e
8
- puts "\n\n\nERROR: To run tests, launch hudson in test mode: 'rake hudson:server:test'\n\n\n"
9
- exit
8
+ raise Exception, "To run tests, launch hudson in test mode: 'rake hudson:server:test'"
10
9
  end
11
10
  @hudson_port = port.to_s
12
11
  @hudson_host = 'localhost'
@@ -89,5 +88,17 @@ When /^I (re|)create a job$/ do |override|
89
88
  CUCUMBER
90
89
  end
91
90
 
91
+ Then /^the job "([^"]*)" config "([^"]*)" should be:$/ do |job_name, xpath, string|
92
+ raise "Cannot yet fetch XML config from non-localhost Hudson" unless Hudson::Api.base_uri =~ /localhost/
93
+ require "hpricot"
94
+ config = Hpricot.XML(File.read("#{test_hudson_path}/jobs/#{job_name}/config.xml"))
95
+ config.search(xpath).to_s.should == string
96
+ end
92
97
 
98
+ Then /^the Hudson config "([^"]*)" should be:$/ do |xpath, string|
99
+ raise "Cannot yet fetch XML config from non-localhost Hudson" unless Hudson::Api.base_uri =~ /localhost/
100
+ require "hpricot"
101
+ config = Hpricot.XML(File.read("#{test_hudson_path}/config.xml"))
102
+ config.search(xpath).to_s.should == string
103
+ end
93
104
 
@@ -0,0 +1,6 @@
1
+ module HudsonHelper
2
+ def test_hudson_path
3
+ "/tmp/test_hudson"
4
+ end
5
+ end
6
+ World(HudsonHelper)
@@ -1,63 +1,33 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "hudson/version"
2
4
 
3
5
  Gem::Specification.new do |s|
4
- s.name = %q{hudson}
5
- s.version = "0.3.1"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Charles Lowell", "Dr Nic Williams"]
9
- s.date = %q{2010-11-08}
10
- s.default_executable = %q{hudson}
6
+ s.name = "hudson"
7
+ s.version = Hudson::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Charles Lowell", "Nic Williams"]
10
+ s.email = ["cowboyd@thefrontside.net", "drnicwilliams@gmail.com"]
11
+ s.homepage = "http://github.com/cowboyd/hudson.rb"
12
+ s.summary = %q{Painless Continuous Integration with Hudson Server}
11
13
  s.description = %q{A suite of utilities for bringing continous integration to your projects (not the other way around) with hudson CI}
12
- s.email = ["cowboyd@thefrontside.net", "drnicwilliams@gmail.com"]
13
- s.executables = ["hudson"]
14
- s.files = ["bin", "bin/hudson", "Changelog.md", "features", "features/development.feature", "features/launch_server.feature", "features/listing_jobs.feature", "features/manage_jobs.feature", "features/manage_slave_nodes.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/hash.rb", "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/envfile.hpi", "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/ruby.single.config.xml", "spec/fixtures/rubygem.config.xml", "spec/fixtures/therubyracer.config.xml", "spec/hash_key_cleaner_spec.rb", "spec/job_config_builder_spec.rb", "spec/spec_helper.rb", "tasks", "tasks/upgrade.rake"]
15
- s.homepage = %q{http://github.com/cowboyd/hudson.rb}
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{hudson}
18
- s.rubygems_version = %q{1.3.7}
19
- s.summary = %q{Painless Continuous Integration with Hudson Server}
20
14
 
21
- if s.respond_to? :specification_version then
22
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
- s.specification_version = 3
15
+ s.rubyforge_project = "hudson"
16
+
17
+ s.files = `git ls-files -x fixtures`.split("\n").reject {|f| f =~ /^fixtures/}
18
+
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
24
21
 
25
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_runtime_dependency(%q<term-ansicolor>, [">= 1.0.4"])
27
- s.add_runtime_dependency(%q<yajl-ruby>, [">= 0.7.6"])
28
- s.add_runtime_dependency(%q<httparty>, ["~> 0.6.1"])
29
- s.add_runtime_dependency(%q<builder>, ["~> 2.1.2"])
30
- s.add_runtime_dependency(%q<thor>, ["~> 0.14.2"])
31
- s.add_runtime_dependency(%q<hpricot>, [">= 0"])
32
- s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
33
- s.add_development_dependency(%q<cucumber>, ["~> 0.9.0"])
34
- s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
35
- s.add_development_dependency(%q<json>, ["~> 1.4.0"])
36
- s.add_development_dependency(%q<awesome_print>, [">= 0"])
37
- else
38
- s.add_dependency(%q<term-ansicolor>, [">= 1.0.4"])
39
- s.add_dependency(%q<yajl-ruby>, [">= 0.7.6"])
40
- s.add_dependency(%q<httparty>, ["~> 0.6.1"])
41
- s.add_dependency(%q<builder>, ["~> 2.1.2"])
42
- s.add_dependency(%q<thor>, ["~> 0.14.2"])
43
- s.add_dependency(%q<hpricot>, [">= 0"])
44
- s.add_dependency(%q<rake>, ["~> 0.8.7"])
45
- s.add_dependency(%q<cucumber>, ["~> 0.9.0"])
46
- s.add_dependency(%q<rspec>, ["~> 2.0.0"])
47
- s.add_dependency(%q<json>, ["~> 1.4.0"])
48
- s.add_dependency(%q<awesome_print>, [">= 0"])
49
- end
50
- else
51
- s.add_dependency(%q<term-ansicolor>, [">= 1.0.4"])
52
- s.add_dependency(%q<yajl-ruby>, [">= 0.7.6"])
53
- s.add_dependency(%q<httparty>, ["~> 0.6.1"])
54
- s.add_dependency(%q<builder>, ["~> 2.1.2"])
55
- s.add_dependency(%q<thor>, ["~> 0.14.2"])
56
- s.add_dependency(%q<hpricot>, [">= 0"])
57
- s.add_dependency(%q<rake>, ["~> 0.8.7"])
58
- s.add_dependency(%q<cucumber>, ["~> 0.9.0"])
59
- s.add_dependency(%q<rspec>, ["~> 2.0.0"])
60
- s.add_dependency(%q<json>, ["~> 1.4.0"])
61
- s.add_dependency(%q<awesome_print>, [">= 0"])
62
- end
22
+ s.add_dependency("term-ansicolor", [">= 1.0.4"])
23
+ s.add_dependency("yajl-ruby", [">= 0.7.6"])
24
+ s.add_dependency("httparty", ["~> 0.6.1"])
25
+ s.add_dependency("builder", ["~> 2.1.2"])
26
+ s.add_dependency("thor", ["~> 0.14.2"])
27
+ s.add_dependency("hpricot")
28
+ s.add_development_dependency("rake", ["~> 0.8.7"])
29
+ s.add_development_dependency("cucumber", ["~> 0.9.0"])
30
+ s.add_development_dependency("rspec", ["~> 2.0.0"])
31
+ s.add_development_dependency("json", ["~>1.4.0"])
32
+ s.add_development_dependency("awesome_print")
63
33
  end