jenkins-maestrodev 0.6.9
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.
- checksums.yaml +7 -0
- data/Changelog.md +58 -0
- data/Gemfile +3 -0
- data/README.md +162 -0
- data/Rakefile +110 -0
- data/bin/jenkins +9 -0
- data/cucumber.yml +8 -0
- data/features/build_details.feature +44 -0
- data/features/configure.feature +36 -0
- data/features/default_host.feature +26 -0
- data/features/development.feature +14 -0
- data/features/listing_jobs.feature +34 -0
- data/features/manage_jobs.feature +263 -0
- data/features/manage_slave_nodes.feature +83 -0
- data/features/step_definitions/common_steps.rb +192 -0
- data/features/step_definitions/fixture_project_steps.rb +8 -0
- data/features/step_definitions/jenkins_steps.rb +116 -0
- data/features/step_definitions/scm_steps.rb +12 -0
- data/features/support/common.rb +37 -0
- data/features/support/env.rb +19 -0
- data/features/support/hooks.rb +16 -0
- data/features/support/jenkins_helpers.rb +6 -0
- data/features/support/matchers.rb +10 -0
- data/fixtures/jenkins/envfile.hpi +0 -0
- data/fixtures/jenkins/git.hpi +0 -0
- data/fixtures/jenkins/github.hpi +0 -0
- data/fixtures/jenkins/greenballs.hpi +0 -0
- data/fixtures/jenkins/rake.hpi +0 -0
- data/fixtures/jenkins/ruby.hpi +0 -0
- data/fixtures/projects/erlang/rebar.config +1 -0
- data/fixtures/projects/non-bundler/Rakefile +4 -0
- data/fixtures/projects/rails-3/.gitignore +4 -0
- data/fixtures/projects/rails-3/Gemfile +30 -0
- data/fixtures/projects/rails-3/Gemfile.lock +74 -0
- data/fixtures/projects/rails-3/README +256 -0
- data/fixtures/projects/rails-3/Rakefile +7 -0
- data/fixtures/projects/rails-3/app/controllers/application_controller.rb +3 -0
- data/fixtures/projects/rails-3/app/helpers/application_helper.rb +2 -0
- data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +14 -0
- data/fixtures/projects/rails-3/config.ru +4 -0
- data/fixtures/projects/rails-3/config/application.rb +42 -0
- data/fixtures/projects/rails-3/config/boot.rb +13 -0
- data/fixtures/projects/rails-3/config/database.yml +22 -0
- data/fixtures/projects/rails-3/config/environment.rb +5 -0
- data/fixtures/projects/rails-3/config/environments/development.rb +26 -0
- data/fixtures/projects/rails-3/config/environments/production.rb +49 -0
- data/fixtures/projects/rails-3/config/environments/test.rb +35 -0
- data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +7 -0
- data/fixtures/projects/rails-3/config/initializers/inflections.rb +10 -0
- data/fixtures/projects/rails-3/config/initializers/mime_types.rb +5 -0
- data/fixtures/projects/rails-3/config/initializers/secret_token.rb +7 -0
- data/fixtures/projects/rails-3/config/initializers/session_store.rb +8 -0
- data/fixtures/projects/rails-3/config/locales/en.yml +5 -0
- data/fixtures/projects/rails-3/config/routes.rb +58 -0
- data/fixtures/projects/rails-3/db/seeds.rb +7 -0
- data/fixtures/projects/rails-3/doc/README_FOR_APP +2 -0
- data/fixtures/projects/rails-3/lib/tasks/.gitkeep +0 -0
- data/fixtures/projects/rails-3/public/404.html +26 -0
- data/fixtures/projects/rails-3/public/422.html +26 -0
- data/fixtures/projects/rails-3/public/500.html +26 -0
- 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 +239 -0
- data/fixtures/projects/rails-3/public/javascripts/application.js +2 -0
- data/fixtures/projects/rails-3/public/javascripts/controls.js +965 -0
- data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +974 -0
- data/fixtures/projects/rails-3/public/javascripts/effects.js +1123 -0
- data/fixtures/projects/rails-3/public/javascripts/prototype.js +6001 -0
- data/fixtures/projects/rails-3/public/javascripts/rails.js +175 -0
- data/fixtures/projects/rails-3/public/robots.txt +5 -0
- data/fixtures/projects/rails-3/public/stylesheets/.gitkeep +0 -0
- data/fixtures/projects/rails-3/script/rails +6 -0
- data/fixtures/projects/rails-3/test/performance/browsing_test.rb +9 -0
- data/fixtures/projects/rails-3/test/test_helper.rb +13 -0
- data/fixtures/projects/rails-3/vendor/plugins/.gitkeep +0 -0
- data/fixtures/projects/ruby/Gemfile +3 -0
- data/fixtures/projects/ruby/Gemfile.lock +10 -0
- data/fixtures/projects/ruby/Rakefile +4 -0
- data/jenkins.gemspec +34 -0
- data/lib/jenkins.rb +6 -0
- data/lib/jenkins/api.rb +312 -0
- data/lib/jenkins/cli.rb +361 -0
- data/lib/jenkins/cli/formatting.rb +53 -0
- data/lib/jenkins/config.rb +27 -0
- data/lib/jenkins/core_ext/hash.rb +9 -0
- data/lib/jenkins/core_ext/object/blank.rb +77 -0
- data/lib/jenkins/hudson-cli.jar +0 -0
- data/lib/jenkins/job_config_builder.rb +417 -0
- data/lib/jenkins/project_scm.rb +22 -0
- data/lib/jenkins/remote.rb +11 -0
- data/lib/jenkins/version.rb +3 -0
- data/spec/api_spec.rb +67 -0
- data/spec/fixtures/ec2_global.config.xml +103 -0
- data/spec/fixtures/erlang.single.config.xml +59 -0
- data/spec/fixtures/rails.multi.config.xml +82 -0
- data/spec/fixtures/rails.single.config.triggers.xml +84 -0
- data/spec/fixtures/rails.single.config.xml +80 -0
- data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +84 -0
- data/spec/fixtures/ruby.multi.config.xml +77 -0
- data/spec/fixtures/ruby.single.config.xml +58 -0
- data/spec/fixtures/ruby.user-defined-axis.config.xml +69 -0
- data/spec/fixtures/therubyracer.config.xml +77 -0
- data/spec/hash_key_cleaner_spec.rb +25 -0
- data/spec/job_config_builder_spec.rb +233 -0
- data/spec/spec_helper.rb +15 -0
- metadata +291 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 8395a89a3f1c2fcf68c4442932198f0df2a3fa92
|
|
4
|
+
data.tar.gz: 07d3c91e1524440ff50f1916a8198ccf713ad8b0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dfa09e1ae6668649a66aa264524a90b497fdc58e91fba174c5de6a016b42d0fc80369b5361966a3f6f4a2443918e0d1f368f3478a599fe8c33f9e304a94427bb
|
|
7
|
+
data.tar.gz: f3af54d792b44ffde391b713d6c9ce7da9146df1f8c70a2b2579484484572b48476fc8e19cee627ee8484b76e1fe5be55e6f662284587b5717bbf44314e0e46f
|
data/Changelog.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.6.8 - 2011/12/30
|
|
4
|
+
|
|
5
|
+
* re-releasing 0.6.7 which failed to register in RubyGems.org
|
|
6
|
+
|
|
7
|
+
## 0.6.4 - 2011/04/13
|
|
8
|
+
|
|
9
|
+
* change from json to json_pure
|
|
10
|
+
|
|
11
|
+
## 0.6.3 - 2011/04/12
|
|
12
|
+
|
|
13
|
+
* fixes for ruby 1.9
|
|
14
|
+
|
|
15
|
+
## 0.6.2 - 2011/03/17
|
|
16
|
+
|
|
17
|
+
* add `build_details` command for fetching the result of a particular build.
|
|
18
|
+
* add instructions for running with non-english locale
|
|
19
|
+
* remove, fix obsolete gem dependencies
|
|
20
|
+
|
|
21
|
+
## 0.5.0 - 2010/12/1
|
|
22
|
+
|
|
23
|
+
* hudson warfile no longer bundled with hudson gem
|
|
24
|
+
* rubygem is now 235K instead of 31M!
|
|
25
|
+
* upgrade hudson server and related plugins without requiring a new gem release
|
|
26
|
+
* hudson gem now fully drinks the bundler koolaid.
|
|
27
|
+
* hudson create
|
|
28
|
+
* --node-labels 'ubuntu,gentoo' - run tests against multiple slave nodes by their label
|
|
29
|
+
* --no-template - do not generate any default steps (well, a silly one)
|
|
30
|
+
* hudson add_node
|
|
31
|
+
* --vagrant - provide alternate default values when adding nodes if the node is a Vagrant VM
|
|
32
|
+
* hudson default_host
|
|
33
|
+
* NEW - displays the current default host:port URI
|
|
34
|
+
|
|
35
|
+
## 0.4.0 - 2010/11/11
|
|
36
|
+
|
|
37
|
+
* hudson create
|
|
38
|
+
* --rubies '1.8.7,1.9.2,rbx-head,jruby' - uses RVM and Hudson's Axes support to run tests within different Ruby environments
|
|
39
|
+
* --scm git://some-alternate.com/repo.git - can override the "origin" URI
|
|
40
|
+
* --scm-branches 'master,other,branches' - specify which branches can be pulled from to trigger tests
|
|
41
|
+
|
|
42
|
+
* hudson job
|
|
43
|
+
* Can dump information/status about a job
|
|
44
|
+
|
|
45
|
+
## 0.3.1 - 2010/11/8
|
|
46
|
+
|
|
47
|
+
* fixed error in the rails3 template's test for schema.rb
|
|
48
|
+
|
|
49
|
+
## 0.3.0 - 2010/11/8
|
|
50
|
+
|
|
51
|
+
MAJOR RELEASE!
|
|
52
|
+
|
|
53
|
+
* All new commands for CLI: build, remove, nodes, add_node
|
|
54
|
+
* Updated to Hudson CI 1.381
|
|
55
|
+
|
|
56
|
+
## 0.2.7 2010/8/25
|
|
57
|
+
|
|
58
|
+
* Updated to Hudson CI 1.373
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
Jenkins
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
[Jenkins CI](http://jenkins-ci.org/) is a sweet continuous integration
|
|
5
|
+
platform. Jenkins.rb makes it easy to get started, add/remove Ruby
|
|
6
|
+
jobs and slave nodes; either from a CLI or an API.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
* Email: [http://groups.google.com/group/jenkinsrb](http://groups.google.com/group/jenkinsrb)
|
|
10
|
+
* IRC: [irc://irc.freenode.net/jenkins.rb](irc://irc.freenode.net/jenkins.rb)
|
|
11
|
+
* CI: [http://travis-ci.org/cowboyd/jenkins.rb](http://travis-ci.org/cowboyd/jenkins.rb)
|
|
12
|
+
|
|
13
|
+
Install
|
|
14
|
+
=======
|
|
15
|
+
|
|
16
|
+
gem install jenkins
|
|
17
|
+
|
|
18
|
+
You do not need to download Jenkins CI. It is bundled in the RubyGem.
|
|
19
|
+
|
|
20
|
+
Example
|
|
21
|
+
=======
|
|
22
|
+
|
|
23
|
+
Jenkins.rb is continuously tested using Jenkins at [http://jenkins.thefrontside.net/job/jenkins.rb/](http://jenkins.thefrontside.net/job/jenkins.rb/).
|
|
24
|
+
|
|
25
|
+
The `jenkins` application allows you to see the projects/jobs and their statuses:
|
|
26
|
+
|
|
27
|
+
$ jenkins list --host jenkins.thefrontside.net --port 80
|
|
28
|
+
jenkins.rb - http://jenkins.thefrontside.net/job/jenkins.rb/
|
|
29
|
+
TheRubyRacer - http://jenkins.thefrontside.net/job/TheRubyRacer/
|
|
30
|
+
|
|
31
|
+
Alternately use environment variables:
|
|
32
|
+
|
|
33
|
+
$ JENKINS_HOST=jenkins.thefrontside.net JENKINS_PORT=80 jenkins list
|
|
34
|
+
|
|
35
|
+
Alternately, it will remember the last Jenkins CI master used.
|
|
36
|
+
|
|
37
|
+
$ jenkins list
|
|
38
|
+
|
|
39
|
+
Usage
|
|
40
|
+
=====
|
|
41
|
+
|
|
42
|
+
To run your own Jenkins server (by default opens at http://localhost:3001):
|
|
43
|
+
|
|
44
|
+
Usage: jenkins server [options]
|
|
45
|
+
-p, --port [3001] run jenkins server on this port
|
|
46
|
+
-c, --control [3002] set the shutdown/control port
|
|
47
|
+
--daemon fork into background and run as a daemon
|
|
48
|
+
--logfile [PATH] redirect log messages to this file
|
|
49
|
+
-k, --kill send shutdown signal to control port
|
|
50
|
+
--home [/Users/drnic/.jenkins/server] use this directory to store server data
|
|
51
|
+
|
|
52
|
+
The remaining CLI tasks are for communicating with a running Jenkins server; either the one created above or hosted remotely.
|
|
53
|
+
|
|
54
|
+
### Jobs
|
|
55
|
+
|
|
56
|
+
To list Jobs/Projects on a Jenkins server:
|
|
57
|
+
|
|
58
|
+
Usage: jenkins list [options]
|
|
59
|
+
|
|
60
|
+
To add Jobs/Projects (create a Job) on a Jenkins server:
|
|
61
|
+
|
|
62
|
+
Usage: jenkins create PROJECT_PATH [options]
|
|
63
|
+
--public-scm use public scm URL
|
|
64
|
+
--template [ruby] template of job steps (available: rails,rails3,ruby,rubygem,erlang)
|
|
65
|
+
--assigned-node [ASSIGNED-NODE] only use slave nodes with this label
|
|
66
|
+
--override override if job exists
|
|
67
|
+
--no-build create job without initial build
|
|
68
|
+
|
|
69
|
+
To trigger a Job to build:
|
|
70
|
+
|
|
71
|
+
Usage: jenkins build
|
|
72
|
+
|
|
73
|
+
To remove a Job from a Jenkins server:
|
|
74
|
+
|
|
75
|
+
Usage: jenkins remove PROJECT_PATH
|
|
76
|
+
|
|
77
|
+
### Slave nodes
|
|
78
|
+
|
|
79
|
+
To list slaves on a Jenkins server (including itself):
|
|
80
|
+
|
|
81
|
+
Usage: jenkins nodes
|
|
82
|
+
|
|
83
|
+
To add a remote machine/remote VM to a Jenkins server as a slave:
|
|
84
|
+
|
|
85
|
+
Usage: jenkins add_node SLAVE_HOST
|
|
86
|
+
--slave-port [22] SSH port for Jenkins to connect to slave node
|
|
87
|
+
--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
|
|
88
|
+
--slave-fs [SLAVE-FS] Location of file system on slave for Jenkins to use
|
|
89
|
+
--name [NAME] Name of slave node (default SLAVE_HOST)
|
|
90
|
+
--slave-user [deploy] SSH user for Jenkins to connect to slave node
|
|
91
|
+
|
|
92
|
+
### Selecting a Jenkins CI server
|
|
93
|
+
|
|
94
|
+
**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:
|
|
95
|
+
|
|
96
|
+
jenkins create . --host localhost --port 3001
|
|
97
|
+
jenkins list
|
|
98
|
+
jenkins create . --override
|
|
99
|
+
|
|
100
|
+
Alternately, `$JENKINS_HOST` and `$JENKINS_PORT` can be provided in lieu of the cached target Jenkins CI server
|
|
101
|
+
|
|
102
|
+
JENKINS_HOST=localhost JENKINS_PORT=3001 jenkins list
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
Developer Instructions
|
|
106
|
+
======================
|
|
107
|
+
|
|
108
|
+
The dependencies for the gem and for developing the gem are managed by Bundler.
|
|
109
|
+
|
|
110
|
+
gem install bundler
|
|
111
|
+
git clone http://github.com/cowboyd/jenkins.rb.git
|
|
112
|
+
bundle install
|
|
113
|
+
|
|
114
|
+
The test suites expects Jenkins to speak English. If you are not using an
|
|
115
|
+
English locale prepare the terminal session running the test suite with:
|
|
116
|
+
|
|
117
|
+
export LC_ALL=en_US.UTF-8
|
|
118
|
+
|
|
119
|
+
The test suite is run with:
|
|
120
|
+
|
|
121
|
+
rake
|
|
122
|
+
|
|
123
|
+
This launches a Jenkins server, runs cucumber features, and kills the Jenkins server.
|
|
124
|
+
|
|
125
|
+
Alternately, manually launch the Jenkins server, run features and close the Jenkins server:
|
|
126
|
+
|
|
127
|
+
rake jenkins:server:test
|
|
128
|
+
rake cucumber:ok
|
|
129
|
+
rake jenkins:server:killtest
|
|
130
|
+
|
|
131
|
+
Contributors
|
|
132
|
+
============
|
|
133
|
+
|
|
134
|
+
* Charles Lowell
|
|
135
|
+
* Dr Nic Williams
|
|
136
|
+
* Bo Jeanes
|
|
137
|
+
|
|
138
|
+
License
|
|
139
|
+
=======
|
|
140
|
+
|
|
141
|
+
(The MIT License)
|
|
142
|
+
|
|
143
|
+
Copyright (c) 2010 Charles Lowell, cowboyd@thefrontside.net
|
|
144
|
+
|
|
145
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
146
|
+
a copy of this software and associated documentation files (the
|
|
147
|
+
'Software'), to deal in the Software without restriction, including
|
|
148
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
149
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
150
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
151
|
+
the following conditions:
|
|
152
|
+
|
|
153
|
+
The above copyright notice and this permission notice shall be
|
|
154
|
+
included in all copies or substantial portions of the Software.
|
|
155
|
+
|
|
156
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
157
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
158
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
159
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
160
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
161
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
162
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
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 --tags ~@jenkins-server"
|
|
14
|
+
end
|
|
15
|
+
Cucumber::Rake::Task.new(:server, 'Run features that require a running server') do |t|
|
|
16
|
+
t.cucumber_opts = "--tags ~@wip --tags @jenkins-server"
|
|
17
|
+
end
|
|
18
|
+
task :all => [:ok, :wip]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
desc 'Alias for cucumber:ok'
|
|
22
|
+
task :cucumber => 'cucumber:ok'
|
|
23
|
+
|
|
24
|
+
desc "Start test server; Run cucumber:ok; Kill Test Server;"
|
|
25
|
+
task :default => [:spec, "jenkins:server:killtest", "jenkins:server:test"] do
|
|
26
|
+
begin
|
|
27
|
+
result = Rake::Task["cucumber:ok"].invoke
|
|
28
|
+
ensure
|
|
29
|
+
Rake::Task["jenkins:server:killtest"].execute
|
|
30
|
+
end
|
|
31
|
+
raise unless result
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# This verifies that Jenkins is started
|
|
35
|
+
# and that it is ready to accept requests.
|
|
36
|
+
def wait_for_server_start
|
|
37
|
+
require 'socket'
|
|
38
|
+
require 'net/http'
|
|
39
|
+
tries = 1
|
|
40
|
+
max_tries = 30
|
|
41
|
+
successes = 0
|
|
42
|
+
max_successes = 2
|
|
43
|
+
wait = 5
|
|
44
|
+
print "Waiting for the server to start (max tries: #{max_tries} with a #{wait} second pause between tries): "
|
|
45
|
+
begin
|
|
46
|
+
while tries <= max_tries
|
|
47
|
+
tries += 1
|
|
48
|
+
begin
|
|
49
|
+
Net::HTTP.start("localhost", "3010") do |http|
|
|
50
|
+
response = http.get('/')
|
|
51
|
+
if response.code == "200"
|
|
52
|
+
print "O"
|
|
53
|
+
successes += 1
|
|
54
|
+
return true if successes >= max_successes
|
|
55
|
+
else
|
|
56
|
+
print "o"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
rescue SystemCallError => e
|
|
60
|
+
successes = 0
|
|
61
|
+
if tries == max_tries
|
|
62
|
+
print "!"
|
|
63
|
+
raise
|
|
64
|
+
end
|
|
65
|
+
print "."
|
|
66
|
+
end
|
|
67
|
+
$stdout.flush
|
|
68
|
+
sleep(wait)
|
|
69
|
+
end
|
|
70
|
+
ensure
|
|
71
|
+
puts # Ensure a newline gets added
|
|
72
|
+
$stdout.flush
|
|
73
|
+
end
|
|
74
|
+
return false
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
namespace :jenkins do
|
|
78
|
+
namespace :server do
|
|
79
|
+
require 'fileutils'
|
|
80
|
+
|
|
81
|
+
port = 3010
|
|
82
|
+
control = 3011
|
|
83
|
+
directory plugin_dir = File.expand_path("../var/jenkins/plugins", __FILE__)
|
|
84
|
+
|
|
85
|
+
desc "Run a server for tests"
|
|
86
|
+
task :test => plugin_dir do
|
|
87
|
+
FileUtils.chdir(File.dirname(__FILE__)) do
|
|
88
|
+
Dir["fixtures/jenkins/*.hpi"].each do |plugin|
|
|
89
|
+
FileUtils.cp plugin, plugin_dir
|
|
90
|
+
end
|
|
91
|
+
logfile = File.expand_path("../var/jenkins/test.log", __FILE__)
|
|
92
|
+
puts "Launching jenkins test server at http://localhost:#{port}..."
|
|
93
|
+
puts " output will be logged to #{logfile}"
|
|
94
|
+
`bundle exec bin/jenkins server --home #{File.dirname(plugin_dir)} --port #{port} --control #{control} --daemon --logfile #{logfile}`
|
|
95
|
+
end
|
|
96
|
+
wait_for_server_start
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
desc "Kill jenkins test server if it is running."
|
|
100
|
+
task :killtest do
|
|
101
|
+
FileUtils.chdir(File.dirname(__FILE__)) do
|
|
102
|
+
puts "Killing any running server processes..."
|
|
103
|
+
`ruby bin/jenkins server --control #{control} --kill 2>/dev/null`
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
Dir['tasks/**/*.rake'].each {|f| load f}
|
data/bin/jenkins
ADDED
data/cucumber.yml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<%
|
|
2
|
+
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
|
3
|
+
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
|
4
|
+
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
|
5
|
+
%>
|
|
6
|
+
default: --drb <%= std_opts %> features
|
|
7
|
+
wip: --drb --tags @wip:3 --wip features
|
|
8
|
+
rerun: --drb <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Feature: Show build details
|
|
2
|
+
I want to see details about a particular build for a job I'm interested in
|
|
3
|
+
|
|
4
|
+
Scenario: Show build details for a job on a non-existent server (jenkins build_details)
|
|
5
|
+
When I run local executable "jenkins" with arguments "build_details ruby 1 --host localhost --port 9999"
|
|
6
|
+
Then I should see exactly
|
|
7
|
+
"""
|
|
8
|
+
No connection available to the server.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
@jenkins-server
|
|
12
|
+
Scenario: Show build details for a non-existent job (jenkins build_details)
|
|
13
|
+
Given I have a Jenkins server running
|
|
14
|
+
And the Jenkins server has no current jobs
|
|
15
|
+
When I run local executable "jenkins" with arguments "build_details ruby 1 --host localhost --port 3010"
|
|
16
|
+
Then I should see exactly
|
|
17
|
+
"""
|
|
18
|
+
ERROR: Cannot find project 'ruby'.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
@jenkins-server
|
|
22
|
+
Scenario: Show build details for a job (jenkins build_details)
|
|
23
|
+
Given I have a Jenkins server running
|
|
24
|
+
And the Jenkins server has no current jobs
|
|
25
|
+
And I am in the "ruby" project folder
|
|
26
|
+
And the project uses "git" scm
|
|
27
|
+
When I run local executable "jenkins" with arguments "create . --host localhost --port 3010"
|
|
28
|
+
When I run local executable "jenkins" with arguments "build"
|
|
29
|
+
When I wait for ruby build 1 to start
|
|
30
|
+
When I run local executable "jenkins" with arguments "build_details ruby 1 --host localhost --port 3010 --json"
|
|
31
|
+
Then I should see
|
|
32
|
+
"""
|
|
33
|
+
"number":1
|
|
34
|
+
"""
|
|
35
|
+
And I should see
|
|
36
|
+
"""
|
|
37
|
+
"actions":[
|
|
38
|
+
"""
|
|
39
|
+
And I should see
|
|
40
|
+
"""
|
|
41
|
+
"changeSet":{
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Configure host connection information
|
|
2
|
+
|
|
3
|
+
Scenario: Configure host connection information and check default host and reconfigure
|
|
4
|
+
Given I run local executable "jenkins" with arguments "configure --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
|
+
Given I run local executable "jenkins" with arguments "configure --host localhost --port 3010 --ssl"
|
|
11
|
+
When I run local executable "jenkins" with arguments "default_host"
|
|
12
|
+
Then I should see exactly
|
|
13
|
+
"""
|
|
14
|
+
https://localhost:3010
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
Scenario: Configure host connection authentication information and check auth_info and reconfigure
|
|
18
|
+
Given I run local executable "jenkins" with arguments "auth_info"
|
|
19
|
+
Then I should see exactly
|
|
20
|
+
"""
|
|
21
|
+
"""
|
|
22
|
+
When I run local executable "jenkins" with arguments "configure --username jenkins --password sniknej"
|
|
23
|
+
And I run local executable "jenkins" with arguments "auth_info"
|
|
24
|
+
Then I should see exactly
|
|
25
|
+
"""
|
|
26
|
+
username: jenkins
|
|
27
|
+
password: sniknej
|
|
28
|
+
"""
|
|
29
|
+
When I run local executable "jenkins" with arguments "configure --username jenkins1 --password 1sniknej"
|
|
30
|
+
And I run local executable "jenkins" with arguments "auth_info"
|
|
31
|
+
Then I should see exactly
|
|
32
|
+
"""
|
|
33
|
+
username: jenkins1
|
|
34
|
+
password: 1sniknej
|
|
35
|
+
"""
|
|
36
|
+
|