jenkins 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/.gitignore +6 -0
  2. data/Changelog.md +40 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +58 -0
  5. data/README.md +154 -0
  6. data/Rakefile +82 -0
  7. data/bin/jenkins +10 -0
  8. data/features/default_host.feature +19 -0
  9. data/features/development.feature +14 -0
  10. data/features/launch_server.feature +16 -0
  11. data/features/listing_jobs.feature +34 -0
  12. data/features/manage_jobs.feature +208 -0
  13. data/features/manage_slave_nodes.feature +82 -0
  14. data/features/step_definitions/common_steps.rb +192 -0
  15. data/features/step_definitions/fixture_project_steps.rb +8 -0
  16. data/features/step_definitions/jenkins_steps.rb +104 -0
  17. data/features/step_definitions/scm_steps.rb +12 -0
  18. data/features/support/common.rb +37 -0
  19. data/features/support/env.rb +19 -0
  20. data/features/support/hooks.rb +16 -0
  21. data/features/support/jenkins_helpers.rb +6 -0
  22. data/features/support/matchers.rb +10 -0
  23. data/fixtures/jenkins/envfile.hpi +0 -0
  24. data/fixtures/jenkins/git.hpi +0 -0
  25. data/fixtures/jenkins/github.hpi +0 -0
  26. data/fixtures/jenkins/greenballs.hpi +0 -0
  27. data/fixtures/jenkins/rake.hpi +0 -0
  28. data/fixtures/jenkins/ruby.hpi +0 -0
  29. data/fixtures/projects/non-bundler/Rakefile +4 -0
  30. data/fixtures/projects/rails-3/.gitignore +4 -0
  31. data/fixtures/projects/rails-3/Gemfile +30 -0
  32. data/fixtures/projects/rails-3/Gemfile.lock +74 -0
  33. data/fixtures/projects/rails-3/README +256 -0
  34. data/fixtures/projects/rails-3/Rakefile +7 -0
  35. data/fixtures/projects/rails-3/app/controllers/application_controller.rb +3 -0
  36. data/fixtures/projects/rails-3/app/helpers/application_helper.rb +2 -0
  37. data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +14 -0
  38. data/fixtures/projects/rails-3/config.ru +4 -0
  39. data/fixtures/projects/rails-3/config/application.rb +42 -0
  40. data/fixtures/projects/rails-3/config/boot.rb +13 -0
  41. data/fixtures/projects/rails-3/config/database.yml +22 -0
  42. data/fixtures/projects/rails-3/config/environment.rb +5 -0
  43. data/fixtures/projects/rails-3/config/environments/development.rb +26 -0
  44. data/fixtures/projects/rails-3/config/environments/production.rb +49 -0
  45. data/fixtures/projects/rails-3/config/environments/test.rb +35 -0
  46. data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +7 -0
  47. data/fixtures/projects/rails-3/config/initializers/inflections.rb +10 -0
  48. data/fixtures/projects/rails-3/config/initializers/mime_types.rb +5 -0
  49. data/fixtures/projects/rails-3/config/initializers/secret_token.rb +7 -0
  50. data/fixtures/projects/rails-3/config/initializers/session_store.rb +8 -0
  51. data/fixtures/projects/rails-3/config/locales/en.yml +5 -0
  52. data/fixtures/projects/rails-3/config/routes.rb +58 -0
  53. data/fixtures/projects/rails-3/db/seeds.rb +7 -0
  54. data/fixtures/projects/rails-3/doc/README_FOR_APP +2 -0
  55. data/fixtures/projects/rails-3/lib/tasks/.gitkeep +0 -0
  56. data/fixtures/projects/rails-3/public/404.html +26 -0
  57. data/fixtures/projects/rails-3/public/422.html +26 -0
  58. data/fixtures/projects/rails-3/public/500.html +26 -0
  59. data/fixtures/projects/rails-3/public/favicon.ico +0 -0
  60. data/fixtures/projects/rails-3/public/images/rails.png +0 -0
  61. data/fixtures/projects/rails-3/public/index.html +239 -0
  62. data/fixtures/projects/rails-3/public/javascripts/application.js +2 -0
  63. data/fixtures/projects/rails-3/public/javascripts/controls.js +965 -0
  64. data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +974 -0
  65. data/fixtures/projects/rails-3/public/javascripts/effects.js +1123 -0
  66. data/fixtures/projects/rails-3/public/javascripts/prototype.js +6001 -0
  67. data/fixtures/projects/rails-3/public/javascripts/rails.js +175 -0
  68. data/fixtures/projects/rails-3/public/robots.txt +5 -0
  69. data/fixtures/projects/rails-3/public/stylesheets/.gitkeep +0 -0
  70. data/fixtures/projects/rails-3/script/rails +6 -0
  71. data/fixtures/projects/rails-3/test/performance/browsing_test.rb +9 -0
  72. data/fixtures/projects/rails-3/test/test_helper.rb +13 -0
  73. data/fixtures/projects/rails-3/vendor/plugins/.gitkeep +0 -0
  74. data/fixtures/projects/ruby/Gemfile +3 -0
  75. data/fixtures/projects/ruby/Gemfile.lock +10 -0
  76. data/fixtures/projects/ruby/Rakefile +4 -0
  77. data/jenkins.gemspec +34 -0
  78. data/lib/jenkins.rb +6 -0
  79. data/lib/jenkins/api.rb +219 -0
  80. data/lib/jenkins/cli.rb +249 -0
  81. data/lib/jenkins/cli/formatting.rb +53 -0
  82. data/lib/jenkins/config.rb +27 -0
  83. data/lib/jenkins/core_ext/hash.rb +9 -0
  84. data/lib/jenkins/core_ext/object/blank.rb +77 -0
  85. data/lib/jenkins/hudson-cli.jar +0 -0
  86. data/lib/jenkins/job_config_builder.rb +287 -0
  87. data/lib/jenkins/project_scm.rb +22 -0
  88. data/lib/jenkins/remote.rb +11 -0
  89. data/lib/jenkins/version.rb +3 -0
  90. data/spec/fixtures/ec2_global.config.xml +103 -0
  91. data/spec/fixtures/rails.multi.config.xml +82 -0
  92. data/spec/fixtures/rails.single.config.triggers.xml +84 -0
  93. data/spec/fixtures/rails.single.config.xml +80 -0
  94. data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +84 -0
  95. data/spec/fixtures/ruby.multi.config.xml +77 -0
  96. data/spec/fixtures/ruby.single.config.xml +58 -0
  97. data/spec/fixtures/therubyracer.config.xml +77 -0
  98. data/spec/hash_key_cleaner_spec.rb +25 -0
  99. data/spec/job_config_builder_spec.rb +137 -0
  100. data/spec/spec_helper.rb +15 -0
  101. metadata +355 -0
@@ -0,0 +1,6 @@
1
+ hudson-*.gem
2
+ tmp
3
+ var
4
+ *.rbc
5
+ .bundle
6
+ pkg/
@@ -0,0 +1,40 @@
1
+ # Changelog
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
+
27
+ ## 0.3.1 - 2010/11/8
28
+
29
+ * fixed error in the rails3 template's test for schema.rb
30
+
31
+ ## 0.3.0 - 2010/11/8
32
+
33
+ MAJOR RELEASE!
34
+
35
+ * All new commands for CLI: build, remove, nodes, add_node
36
+ * Updated to Hudson CI 1.381
37
+
38
+ ## 0.2.7 2010/8/25
39
+
40
+ * Updated to Hudson CI 1.373
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,58 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ jenkins (0.6.0)
5
+ builder (~> 2.1.2)
6
+ hpricot
7
+ httparty (~> 0.6.1)
8
+ term-ansicolor (>= 1.0.4)
9
+ thor (~> 0.14.2)
10
+ yajl-ruby (>= 0.7.6)
11
+
12
+ GEM
13
+ remote: http://rubygems.org/
14
+ specs:
15
+ awesome_print (0.2.1)
16
+ builder (2.1.2)
17
+ crack (0.1.8)
18
+ cucumber (0.9.3)
19
+ builder (~> 2.1.2)
20
+ diff-lcs (~> 1.1.2)
21
+ gherkin (~> 2.2.9)
22
+ json (~> 1.4.6)
23
+ term-ansicolor (~> 1.0.5)
24
+ diff-lcs (1.1.2)
25
+ gherkin (2.2.9)
26
+ json (~> 1.4.6)
27
+ term-ansicolor (~> 1.0.5)
28
+ hpricot (0.8.3)
29
+ httparty (0.6.1)
30
+ crack (= 0.1.8)
31
+ jenkins-war (1.396)
32
+ json (1.4.6)
33
+ rake (0.8.7)
34
+ rspec (2.0.1)
35
+ rspec-core (~> 2.0.1)
36
+ rspec-expectations (~> 2.0.1)
37
+ rspec-mocks (~> 2.0.1)
38
+ rspec-core (2.0.1)
39
+ rspec-expectations (2.0.1)
40
+ diff-lcs (>= 1.1.2)
41
+ rspec-mocks (2.0.1)
42
+ rspec-core (~> 2.0.1)
43
+ rspec-expectations (~> 2.0.1)
44
+ term-ansicolor (1.0.5)
45
+ thor (0.14.6)
46
+ yajl-ruby (0.7.8)
47
+
48
+ PLATFORMS
49
+ ruby
50
+
51
+ DEPENDENCIES
52
+ awesome_print
53
+ cucumber (~> 0.9.0)
54
+ jenkins!
55
+ jenkins-war (>= 1.396)
56
+ json (~> 1.4.0)
57
+ rake (~> 0.8.7)
58
+ rspec (~> 2.0.0)
@@ -0,0 +1,154 @@
1
+ Jenkins
2
+ ======
3
+
4
+ [Jenkins CI](http://jenkins-ci.org/) is a sweet continuous integration platform. Jenkins.rb makes it easy to get started, add/remove Ruby jobs and slave nodes; either from a CLI or an API.
5
+
6
+ * Email: [http://groups.google.com/group/jenkinsrb](http://groups.google.com/group/jenkinsrb)
7
+ * IRC: [irc://irc.freenode.net/jenkins.rb](irc://irc.freenode.net/jenkins.rb)
8
+ * CI: [http://jenkins.thefrontside.net/job/jenkins.rb/](http://jenkins.thefrontside.net/job/jenkins.rb/)
9
+
10
+ Install
11
+ =======
12
+
13
+ gem install jenkins
14
+
15
+ You do not need to download Jenkins CI. It is bundled in the RubyGem.
16
+
17
+ Example
18
+ =======
19
+
20
+ Jenkins.rb is continuously tested using Jenkins at [http://jenkins.thefrontside.net/job/jenkins.rb/](http://jenkins.thefrontside.net/job/jenkins.rb/).
21
+
22
+ The `jenkins` application allows you to see the projects/jobs and their statuses:
23
+
24
+ $ jenkins list --host jenkins.thefrontside.net --port 80
25
+ jenkins.rb - http://jenkins.thefrontside.net/job/jenkins.rb/
26
+ TheRubyRacer - http://jenkins.thefrontside.net/job/TheRubyRacer/
27
+
28
+ Alternately use environment variables:
29
+
30
+ $ JENKINS_HOST=jenkins.thefrontside.net JENKINS_PORT=80 jenkins list
31
+
32
+ Alternately, it will remember the last Jenkins CI master used.
33
+
34
+ $ jenkins list
35
+
36
+ Usage
37
+ =====
38
+
39
+ To run your own Jenkins server (by default opens at http://localhost:3001):
40
+
41
+ Usage: jenkins server [options]
42
+ -p, --port [3001] run jenkins server on this port
43
+ -c, --control [3002] set the shutdown/control port
44
+ --daemon fork into background and run as a daemon
45
+ --logfile [PATH] redirect log messages to this file
46
+ -k, --kill send shutdown signal to control port
47
+ --home [/Users/drnic/.jenkins/server] use this directory to store server data
48
+
49
+ The remaining CLI tasks are for communicating with a running Jenkins server; either the one created above or hosted remotely.
50
+
51
+ ### Jobs
52
+
53
+ To list Jobs/Projects on a Jenkins server:
54
+
55
+ Usage: jenkins list [options]
56
+
57
+ To add Jobs/Projects (create a Job) on a Jenkins server:
58
+
59
+ Usage: jenkins create PROJECT_PATH [options]
60
+ --public-scm use public scm URL
61
+ --template [ruby] template of job steps (available: rails,rails3,ruby,rubygem)
62
+ --assigned-node [ASSIGNED-NODE] only use slave nodes with this label
63
+ --override override if job exists
64
+ --no-build create job without initial build
65
+
66
+ To trigger a Job to build:
67
+
68
+ Usage: jenkins build
69
+
70
+ To remove a Job from a Jenkins server:
71
+
72
+ Usage: jenkins remove PROJECT_PATH
73
+
74
+ ### Slave nodes
75
+
76
+ To list slaves on a Jenkins server (including itself):
77
+
78
+ Usage: jenkins nodes
79
+
80
+ To add a remote machine/remote VM to a Jenkins server as a slave:
81
+
82
+ Usage: jenkins add_node SLAVE_HOST
83
+ --slave-port [22] SSH port for Jenkins to connect to slave node
84
+ --label [LABEL] Labels for a job --assigned_node to match against to select a slave. --master-key [MASTER-KEY] Location of master public key or identity file
85
+ --slave-fs [SLAVE-FS] Location of file system on slave for Jenkins to use
86
+ --name [NAME] Name of slave node (default SLAVE_HOST)
87
+ --slave-user [deploy] SSH user for Jenkins to connect to slave node
88
+
89
+ ### Selecting a Jenkins CI server
90
+
91
+ **For all client-side commands, there are `--host` and `--port` options flags.** These are cached after first used, so are only required for the first request to a Jenkins CI server. For example:
92
+
93
+ jenkins create . --host localhost --port 3001
94
+ jenkins list
95
+ jenkins create . --override
96
+
97
+ Alternately, `$JENKINS_HOST` and `$JENKINS_PORT` can be provided in lieu of the cached target Jenkins CI server
98
+
99
+ JENKINS_HOST=localhost JENKINS_PORT=3001 jenkins list
100
+
101
+
102
+ Developer Instructions
103
+ ======================
104
+
105
+ The dependencies for the gem and for developing the gem are managed by bundler.
106
+
107
+ gem install bundler
108
+ git clone http://github.com/cowboyd/jenkins.rb.git
109
+ bundle install
110
+
111
+ The test suite is run with:
112
+
113
+ rake
114
+
115
+ This launches a Jenkins server, runs cucumber features, and kills the Jenkins server.
116
+
117
+ Alternately, manually launch the Jenkins server, run features and close the Jenkins server:
118
+
119
+ rake jenkins:server:test
120
+ rake cucumber:ok
121
+ rake jenkins:server:killtest
122
+
123
+ Contributors
124
+ ============
125
+
126
+ * Charles Lowell
127
+ * Dr Nic Williams
128
+ * Bo Jeanes
129
+
130
+ License
131
+ =======
132
+
133
+ (The MIT License)
134
+
135
+ Copyright (c) 2010 Charles Lowell, cowboyd@thefrontside.net
136
+
137
+ Permission is hereby granted, free of charge, to any person obtaining
138
+ a copy of this software and associated documentation files (the
139
+ 'Software'), to deal in the Software without restriction, including
140
+ without limitation the rights to use, copy, modify, merge, publish,
141
+ distribute, sublicense, and/or sell copies of the Software, and to
142
+ permit persons to whom the Software is furnished to do so, subject to
143
+ the following conditions:
144
+
145
+ The above copyright notice and this permission notice shall be
146
+ included in all copies or substantial portions of the Software.
147
+
148
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
149
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
150
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
151
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
152
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
153
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
154
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,82 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rspec/core/rake_task"
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ namespace :cucumber do
8
+ require 'cucumber/rake/task'
9
+ Cucumber::Rake::Task.new(:wip, 'Run features that are being worked on') do |t|
10
+ t.cucumber_opts = "--tags @wip"
11
+ end
12
+ Cucumber::Rake::Task.new(:ok, 'Run features that should be working') do |t|
13
+ t.cucumber_opts = "--tags ~@wip"
14
+ end
15
+ task :all => [:ok, :wip]
16
+ end
17
+
18
+ desc 'Alias for cucumber:ok'
19
+ task :cucumber => 'cucumber:ok'
20
+
21
+ desc "Start test server; Run cucumber:ok; Kill Test Server;"
22
+ task :default => [:spec, "jenkins:server:killtest", "jenkins:server:test"] do
23
+ require 'socket'
24
+ require 'net/http'
25
+ print "waiting for at most 30 seconds for the server to start"
26
+ tries = 1
27
+ begin
28
+ print "."; $stdout.flush
29
+ tries += 1
30
+ Net::HTTP.start("localhost", "3010") { |http| http.get('/') }
31
+ sleep(10)
32
+ puts ""
33
+ result = Rake::Task["cucumber:ok"].invoke
34
+ rescue Exception => e
35
+ if tries <= 15
36
+ sleep 2
37
+ retry
38
+ end
39
+ raise
40
+ ensure
41
+ Rake::Task["jenkins:server:killtest"].tap do |task|
42
+ task.reenable
43
+ task.invoke
44
+ end
45
+ end
46
+ raise unless result
47
+ end
48
+
49
+ namespace :jenkins do
50
+ namespace :server do
51
+ require 'fileutils'
52
+
53
+ directory plugin_dir = File.expand_path("var/jenkins/plugins")
54
+ desc "Run a server for tests"
55
+ task :test => plugin_dir do
56
+ port = 3010
57
+ control = 3011
58
+ FileUtils.chdir(File.dirname(__FILE__)) do
59
+ Dir["fixtures/jenkins/*.hpi"].each do |plugin|
60
+ FileUtils.cp plugin, plugin_dir
61
+ end
62
+ logfile = File.expand_path("var/jenkins/test.log")
63
+ puts "Launching jenkins test server at http://localhost:#{port}..."
64
+ puts " output will be logged to #{logfile}"
65
+ `ruby bin/jenkins server --home #{File.dirname(plugin_dir)} --port #{port} --control #{control} --daemon --logfile #{logfile}`
66
+ end
67
+ end
68
+
69
+ desc "Kill jenkins test server if it is running."
70
+ task :killtest do
71
+ FileUtils.chdir(File.dirname(__FILE__)) do
72
+ puts "Killing any running server processes..."
73
+ `ruby bin/jenkins server --control 3011 --kill 2>/dev/null`
74
+ end
75
+ end
76
+
77
+ end
78
+ end
79
+
80
+ Dir['tasks/**/*.rake'].each {|f| load f}
81
+
82
+
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.expand_path(File.dirname(File.dirname(__FILE__) + "/../lib/jenkins.rb")))
3
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/jenkins')
4
+ require 'jenkins/cli'
5
+
6
+ begin
7
+ Jenkins::CLI.start
8
+ rescue Errno::ECONNREFUSED, Errno::EAFNOSUPPORT
9
+ Jenkins::CLI.new.shell.say "No connection available to the server.", :red
10
+ end
@@ -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 "jenkins" with arguments "list --host localhost --port 3010"
5
+ When I run local executable "jenkins" with arguments "default_host"
6
+ Then I should see exactly
7
+ """
8
+ http://localhost:3010
9
+ """
10
+
11
+ Scenario: Display warning if never used Jenkins.rb before
12
+ When I run local executable "jenkins" with arguments "default_host"
13
+ Then I should see exactly
14
+ """
15
+ ERROR: Either use --host or add remote servers.
16
+ """
17
+
18
+
19
+
@@ -0,0 +1,14 @@
1
+ Feature: Development processes of jenkins itself (rake tasks)
2
+
3
+ As a Newgem maintainer or contributor
4
+ I want rake tasks to maintain and release the gem
5
+ So that I can spend time on the tests and code, and not excessive time on maintenance processes
6
+
7
+ Scenario: Generate RubyGem
8
+ Given this project is active project folder
9
+ When I invoke task "rake clean" so that I start with nothing
10
+ And I invoke task "rake build"
11
+ Then file with name matching "pkg/jenkins-*.gem" is created
12
+ And file with name matching "jenkins.gemspec" is created
13
+ And the file "jenkins.gemspec" is a valid gemspec
14
+
@@ -0,0 +1,16 @@
1
+ Feature: Running a Jenkins Server
2
+ As a jenkins server administrator
3
+ I want to be able to easily control a jenkins server
4
+ In order to spend my time on how the process operates, not how to start stop and control it.
5
+
6
+ Scenario: Start a Jenkins Server (jenkins server)
7
+ Given env variable $HOME set to project path "home"
8
+ And "home/.jenkins" folder is deleted
9
+ And there is nothing listening on port 5001
10
+ And there is nothing listening on port 5002
11
+ And I cleanup any jenkins processes with control port 5002
12
+ When I run jenkins server with arguments "--port 5001 --control 5002 --daemon --logfile=server.log"
13
+ Then I should see a jenkins server on port 5001
14
+ And folder "home/.jenkins/server" is created
15
+ And folder "home/.jenkins/server/javatmp" is created
16
+
@@ -0,0 +1,34 @@
1
+ Feature: Listing jobs
2
+ I want to see the status of jobs on servers I'm interested in
3
+
4
+ Scenario: List jobs on a non-existent server (jenkins list)
5
+ When I run local executable "jenkins" with arguments "list --host localhost --port 9999"
6
+ Then I should see exactly
7
+ """
8
+ No connection available to the server.
9
+ """
10
+
11
+ Scenario: List jobs on a server with no jobs (jenkins list)
12
+ Given I have a Jenkins server running
13
+ And the Jenkins server has no current jobs
14
+ When I run local executable "jenkins" with arguments "list --host localhost --port 3010"
15
+ Then I should see exactly
16
+ """
17
+ http://localhost:3010: no jobs
18
+ """
19
+
20
+ Scenario: List jobs on a server with jobs (jenkins list)
21
+ Given I have a Jenkins server running
22
+ And the Jenkins server has no current jobs
23
+ And I am in the "ruby" project folder
24
+ And the project uses "git" scm
25
+ When I run local executable "jenkins" with arguments "create . --host localhost --port 3010"
26
+ When I run local executable "jenkins" with arguments "list"
27
+ Then I should see exactly
28
+ """
29
+ http://localhost:3010:
30
+ * ruby
31
+
32
+ """
33
+
34
+