hudson 0.3.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Changelog.md +24 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +4 -50
- data/features/default_host.feature +19 -0
- data/features/development.feature +2 -2
- data/features/launch_server.feature +1 -0
- data/features/manage_jobs.feature +109 -1
- data/features/manage_slave_nodes.feature +39 -4
- data/features/step_definitions/common_steps.rb +6 -0
- data/features/step_definitions/hudson_steps.rb +13 -2
- data/features/support/hudson_helpers.rb +6 -0
- data/hudson.gemspec +26 -56
- data/lib/hudson.rb +1 -1
- data/lib/hudson/api.rb +38 -24
- data/lib/hudson/cli.rb +81 -49
- data/lib/hudson/installation.rb +136 -0
- data/lib/hudson/job_config_builder.rb +68 -21
- data/lib/hudson/project_scm.rb +3 -3
- data/lib/hudson/version.rb +1 -1
- data/spec/fixtures/rails.single.config.xml +1 -0
- data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +84 -0
- data/spec/fixtures/{rubygem.config.xml → ruby.multi.config.xml} +18 -1
- data/spec/job_config_builder_spec.rb +47 -11
- metadata +41 -93
- data/fixtures/projects/non-bundler/Rakefile +0 -4
- data/fixtures/projects/rails-3/Gemfile +0 -30
- data/fixtures/projects/rails-3/Gemfile.lock +0 -74
- data/fixtures/projects/rails-3/README +0 -256
- data/fixtures/projects/rails-3/Rakefile +0 -7
- data/fixtures/projects/rails-3/app/controllers/application_controller.rb +0 -3
- data/fixtures/projects/rails-3/app/helpers/application_helper.rb +0 -2
- data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +0 -14
- data/fixtures/projects/rails-3/config.ru +0 -4
- data/fixtures/projects/rails-3/config/application.rb +0 -42
- data/fixtures/projects/rails-3/config/boot.rb +0 -13
- data/fixtures/projects/rails-3/config/database.yml +0 -22
- data/fixtures/projects/rails-3/config/environment.rb +0 -5
- data/fixtures/projects/rails-3/config/environments/development.rb +0 -26
- data/fixtures/projects/rails-3/config/environments/production.rb +0 -49
- data/fixtures/projects/rails-3/config/environments/test.rb +0 -35
- data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +0 -7
- data/fixtures/projects/rails-3/config/initializers/inflections.rb +0 -10
- data/fixtures/projects/rails-3/config/initializers/mime_types.rb +0 -5
- data/fixtures/projects/rails-3/config/initializers/secret_token.rb +0 -7
- data/fixtures/projects/rails-3/config/initializers/session_store.rb +0 -8
- data/fixtures/projects/rails-3/config/locales/en.yml +0 -5
- data/fixtures/projects/rails-3/config/routes.rb +0 -58
- data/fixtures/projects/rails-3/db/seeds.rb +0 -7
- data/fixtures/projects/rails-3/doc/README_FOR_APP +0 -2
- data/fixtures/projects/rails-3/log/development.log +0 -0
- data/fixtures/projects/rails-3/log/production.log +0 -0
- data/fixtures/projects/rails-3/log/server.log +0 -0
- data/fixtures/projects/rails-3/log/test.log +0 -0
- data/fixtures/projects/rails-3/public/404.html +0 -26
- data/fixtures/projects/rails-3/public/422.html +0 -26
- data/fixtures/projects/rails-3/public/500.html +0 -26
- data/fixtures/projects/rails-3/public/favicon.ico +0 -0
- data/fixtures/projects/rails-3/public/images/rails.png +0 -0
- data/fixtures/projects/rails-3/public/index.html +0 -239
- data/fixtures/projects/rails-3/public/javascripts/application.js +0 -2
- data/fixtures/projects/rails-3/public/javascripts/controls.js +0 -965
- data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +0 -974
- data/fixtures/projects/rails-3/public/javascripts/effects.js +0 -1123
- data/fixtures/projects/rails-3/public/javascripts/prototype.js +0 -6001
- data/fixtures/projects/rails-3/public/javascripts/rails.js +0 -175
- data/fixtures/projects/rails-3/public/robots.txt +0 -5
- data/fixtures/projects/rails-3/script/rails +0 -6
- data/fixtures/projects/rails-3/test/performance/browsing_test.rb +0 -9
- data/fixtures/projects/rails-3/test/test_helper.rb +0 -13
- data/fixtures/projects/ruby/Gemfile +0 -3
- data/fixtures/projects/ruby/Gemfile.lock +0 -10
- data/fixtures/projects/ruby/Rakefile +0 -4
- data/lib/hudson/hudson.war +0 -0
- data/lib/hudson/hudson_version.rb +0 -4
- data/lib/hudson/plugins/envfile.hpi +0 -0
- data/lib/hudson/plugins/git.hpi +0 -0
- data/lib/hudson/plugins/github.hpi +0 -0
- data/lib/hudson/plugins/greenballs.hpi +0 -0
- data/lib/hudson/plugins/rake.hpi +0 -0
- data/lib/hudson/plugins/ruby.hpi +0 -0
- data/tasks/upgrade.rake +0 -83
data/.gitignore
ADDED
data/Changelog.md
CHANGED
@@ -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
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -1,52 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
|
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
|
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 "THERE ARE NO STEPS! Except this one..."</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 --
|
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 --
|
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
|
-
|
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
|
|
data/hudson.gemspec
CHANGED
@@ -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
|
5
|
-
s.version
|
6
|
-
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.
|
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
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|