jenkins_api_client 0.14.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +5 -23
- data/CHANGELOG.md +104 -35
- data/CONTRIBUTORS.md +1 -11
- data/Gemfile +4 -2
- data/README.md +107 -7
- data/Rakefile +1 -0
- data/Vagrantfile +6 -8
- data/jenkins_api_client.gemspec +30 -12
- data/lib/jenkins_api_client/cli/helper.rb +1 -0
- data/lib/jenkins_api_client/client.rb +162 -69
- data/lib/jenkins_api_client/exceptions.rb +26 -17
- data/lib/jenkins_api_client/job.rb +321 -75
- data/lib/jenkins_api_client/node.rb +22 -10
- data/lib/jenkins_api_client/plugin_manager.rb +460 -0
- data/lib/jenkins_api_client/urihelper.rb +17 -0
- data/lib/jenkins_api_client/user.rb +4 -2
- data/lib/jenkins_api_client/version.rb +3 -3
- data/lib/jenkins_api_client/view.rb +10 -7
- data/lib/jenkins_api_client.rb +1 -0
- data/scripts/login_with_pry.rb +54 -0
- data/spec/func_tests/client_spec.rb +3 -3
- data/spec/func_tests/job_spec.rb +90 -7
- data/spec/func_tests/{node_spec.rb → node_spec.rb.pending} +9 -9
- data/spec/func_tests/plugin_spec.rb +148 -0
- data/spec/unit_tests/client_spec.rb +108 -27
- data/spec/unit_tests/fake_http_response.rb +9 -0
- data/spec/unit_tests/fixtures/files/available_plugins.json +1 -0
- data/spec/unit_tests/fixtures/files/installed_plugins.json +1 -0
- data/spec/unit_tests/fixtures/files/updatable_plugins.json +1 -0
- data/spec/unit_tests/job_spec.rb +109 -6
- data/spec/unit_tests/node_spec.rb +18 -6
- data/spec/unit_tests/plugin_spec.rb +165 -0
- data/spec/unit_tests/spec_helper.rb +11 -1
- data/spec/unit_tests/system_spec.rb +2 -1
- data/spec/unit_tests/user_spec.rb +1 -1
- data/travis/hudson.model.UpdateCenter.xml +7 -0
- data/travis/setup.sh +2 -1
- metadata +76 -64
@@ -49,6 +49,26 @@ describe JenkinsApi::Client do
|
|
49
49
|
).not_to raise_error
|
50
50
|
end
|
51
51
|
|
52
|
+
it "initializes the username and password from server_url" do
|
53
|
+
client = JenkinsApi::Client.new(
|
54
|
+
:server_url => 'http://someuser:asdf@localhost'
|
55
|
+
)
|
56
|
+
|
57
|
+
client.instance_variable_get('@username').should == 'someuser'
|
58
|
+
client.instance_variable_get('@password').should == 'asdf'
|
59
|
+
end
|
60
|
+
|
61
|
+
it "uses explicit username, password over one in the server_url" do
|
62
|
+
client = JenkinsApi::Client.new(
|
63
|
+
:server_url => 'http://someuser:asdf@localhost',
|
64
|
+
:username => 'otheruser',
|
65
|
+
:password => '1234'
|
66
|
+
)
|
67
|
+
|
68
|
+
client.instance_variable_get('@username').should == 'otheruser'
|
69
|
+
client.instance_variable_get('@password').should == '1234'
|
70
|
+
end
|
71
|
+
|
52
72
|
it "initializes with proxy args without exception" do
|
53
73
|
expect(
|
54
74
|
lambda do
|
@@ -142,75 +162,136 @@ describe JenkinsApi::Client do
|
|
142
162
|
end
|
143
163
|
|
144
164
|
describe "InstanceMethods" do
|
145
|
-
describe "#
|
165
|
+
describe "#get_root" do
|
146
166
|
it "is defined with no parameters" do
|
147
|
-
|
148
|
-
|
149
|
-
).not_to raise_error(NoMethodError)
|
167
|
+
@client.respond_to?(:get_root).should be_true
|
168
|
+
@client.method(:get_root).parameters.size.should == 0
|
150
169
|
end
|
151
170
|
end
|
152
171
|
|
153
172
|
describe "#api_get_request" do
|
154
173
|
it "defined and should accept url_prefix, tree, and url_suffix" do
|
155
|
-
|
156
|
-
|
157
|
-
).not_to raise_error(NoMethodError)
|
174
|
+
@client.respond_to?(:api_get_request).should be_true
|
175
|
+
@client.method(:api_get_request).parameters.size.should == 4
|
158
176
|
end
|
159
177
|
end
|
160
178
|
|
161
179
|
describe "#api_post_request" do
|
162
180
|
it "is defined and should accept url_prefix" do
|
163
|
-
|
164
|
-
|
165
|
-
).not_to raise_error(NoMethodError)
|
181
|
+
@client.respond_to?(:api_post_request).should be_true
|
182
|
+
@client.method(:api_post_request).parameters.size.should == 3
|
166
183
|
end
|
167
184
|
end
|
168
185
|
|
169
186
|
describe "#get_config" do
|
170
187
|
it "is defined and should accept url_prefix" do
|
171
|
-
|
172
|
-
|
173
|
-
).not_to raise_error(NoMethodError)
|
188
|
+
@client.respond_to?(:get_config).should be_true
|
189
|
+
@client.method(:get_config).parameters.size.should == 1
|
174
190
|
end
|
175
191
|
end
|
176
192
|
|
177
193
|
describe "#post_config" do
|
178
194
|
it "is defined and should accept url_prefix and xml" do
|
179
|
-
|
180
|
-
|
181
|
-
).not_to raise_error(NoMethodError)
|
195
|
+
@client.respond_to?(:post_config).should be_true
|
196
|
+
@client.method(:post_config).parameters.size.should == 2
|
182
197
|
end
|
183
198
|
end
|
184
199
|
|
185
200
|
describe "#get_jenkins_version" do
|
186
201
|
it "is defined and accepts no parameters" do
|
187
|
-
|
188
|
-
|
189
|
-
).not_to raise_error(NoMethodError)
|
202
|
+
@client.respond_to?(:get_jenkins_version).should be_true
|
203
|
+
@client.method(:get_jenkins_version).parameters.size.should == 0
|
190
204
|
end
|
191
205
|
end
|
192
206
|
|
193
207
|
describe "#get_hudson_version" do
|
194
208
|
it "is defined and accepts no parameters" do
|
195
|
-
|
196
|
-
|
197
|
-
).not_to raise_error(NoMethodError)
|
209
|
+
@client.respond_to?(:get_hudson_version).should be_true
|
210
|
+
@client.method(:get_hudson_version).parameters.size.should == 0
|
198
211
|
end
|
199
212
|
end
|
200
213
|
|
201
214
|
describe "#get_server_date" do
|
202
215
|
it "is defined and accepts no parameters" do
|
203
|
-
|
204
|
-
|
205
|
-
|
216
|
+
@client.respond_to?(:get_server_date).should be_true
|
217
|
+
@client.method(:get_server_date).parameters.size.should == 0
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
describe "#exec_script" do
|
222
|
+
it "is defined and should accept script to execute" do
|
223
|
+
@client.respond_to?(:exec_script).should be_true
|
224
|
+
@client.method(:exec_script).parameters.size.should == 1
|
206
225
|
end
|
207
226
|
end
|
208
227
|
|
209
228
|
describe "#exec_cli" do
|
210
229
|
it "is defined and should execute the CLI" do
|
230
|
+
@client.respond_to?(:exec_cli).should be_true
|
231
|
+
@client.method(:exec_cli).parameters.size.should == 2
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe "#deconstruct_version_string" do
|
236
|
+
it "is defined and accepts a single param" do
|
237
|
+
@client.respond_to?(:deconstruct_version_string).should be_true
|
238
|
+
@client.method(:deconstruct_version_string).parameters.size.should == 1
|
239
|
+
end
|
240
|
+
|
241
|
+
it "takes a version string in the form 'a.b' and returns an array [a,b,c]" do
|
242
|
+
TEST_2_PART_VERSION_STRING = "1.002"
|
243
|
+
version = @client.deconstruct_version_string(TEST_2_PART_VERSION_STRING)
|
244
|
+
version.should_not be_nil
|
245
|
+
version.should_not be_empty
|
246
|
+
version.size.should eql 3
|
247
|
+
version[0].should eql 1
|
248
|
+
version[1].should eql 2
|
249
|
+
version[2].should eql 0
|
250
|
+
end
|
251
|
+
|
252
|
+
it "takes a version string in the form 'a.b.c' and returns an array [a,b]" do
|
253
|
+
TEST_3_PART_VERSION_STRING = "1.002.3"
|
254
|
+
version = @client.deconstruct_version_string(TEST_3_PART_VERSION_STRING)
|
255
|
+
version.should_not be_nil
|
256
|
+
version.should_not be_empty
|
257
|
+
version.size.should eql 3
|
258
|
+
version[0].should eql 1
|
259
|
+
version[1].should eql 2
|
260
|
+
version[2].should eql 3
|
261
|
+
end
|
262
|
+
|
263
|
+
it "should fail if parameter is not a string" do
|
211
264
|
expect(
|
212
|
-
lambda { @client.
|
213
|
-
).
|
265
|
+
lambda { @client.deconstruct_version_string(1) }
|
266
|
+
).to raise_error(NoMethodError) # match for fixnum
|
267
|
+
end
|
268
|
+
|
269
|
+
it "should return nil if parameter is not a string in the form '\d+.\d+(.\d+)'" do
|
270
|
+
@client.deconstruct_version_string("A.B").should be_nil
|
271
|
+
@client.deconstruct_version_string("1").should be_nil
|
272
|
+
@client.deconstruct_version_string("1.").should be_nil
|
273
|
+
@client.deconstruct_version_string("1.2.3.4").should be_nil
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
describe "#compare_versions" do
|
278
|
+
it "is defined and accepts two params" do
|
279
|
+
@client.respond_to?(:compare_versions).should be_true
|
280
|
+
@client.method(:compare_versions).parameters.size.should == 2
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should correctly compare version numbers" do
|
284
|
+
@client.compare_versions("1.0", "1.0").should eql(0)
|
285
|
+
@client.compare_versions("1.0", "1.1").should eql(-1)
|
286
|
+
@client.compare_versions("1.1", "1.0").should eql(1)
|
287
|
+
@client.compare_versions("2.0", "1.99").should eql(1)
|
288
|
+
@client.compare_versions("1.10", "1.2").should eql(1)
|
289
|
+
|
290
|
+
@client.compare_versions("1.0.0", "1.0.0").should eql(0)
|
291
|
+
@client.compare_versions("1.0", "1.0.1").should eql(-1)
|
292
|
+
@client.compare_versions("1.1", "1.0.1").should eql(1)
|
293
|
+
@client.compare_versions("2.0.0", "1.999.99").should eql(1)
|
294
|
+
@client.compare_versions("1.0.10", "1.0.2").should eql(1)
|
214
295
|
end
|
215
296
|
end
|
216
297
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"availables":[{"name":"accurev","version":"0.6.18"},{"name":"active-directory","version":"1.33"},{"name":"AdaptivePlugin","version":"0.1"},{"name":"additional-identities-plugin","version":"1.0"},{"name":"all-changes","version":"1.3"},{"name":"analysis-collector","version":"1.35"},{"name":"analysis-core","version":"1.49"},{"name":"AnchorChain","version":"1.0"},{"name":"android-emulator","version":"2.10"},{"name":"android-lint","version":"2.1"},{"name":"ansicolor","version":"0.3.1"},{"name":"AntepediaReporter-CI-plugin","version":"1.6.3"},{"name":"antexec","version":"1.8"},{"name":"any-buildstep","version":"0.1"},{"name":"anything-goes-formatter","version":"1.0"},{"name":"appaloosa-plugin","version":"1.4.0"},{"name":"appdynamics-dashboard","version":"1.0.1"},{"name":"application-director-plugin","version":"1.3"},{"name":"artifact-diff-plugin","version":"1.2"},{"name":"artifactdeployer","version":"0.27"},{"name":"artifactory","version":"2.1.6"},{"name":"asakusa-satellite-plugin","version":"0.1.1"},{"name":"assembla","version":"1.4"},{"name":"assembla-auth","version":"1.03"},{"name":"associated-files","version":"0.2.1"},{"name":"async-http-client","version":"1.7.8"},{"name":"async-job","version":"1.3"},{"name":"audit-trail","version":"1.8"},{"name":"audit2db","version":"0.5"},{"name":"avatar","version":"1.2"},{"name":"backlog","version":"1.9"},{"name":"backup","version":"1.6.1"},{"name":"backup-interrupt-plugin","version":"1.0"},{"name":"bamboo-notifier","version":"1.1"},{"name":"batch-task","version":"1.17"},{"name":"bazaar","version":"1.22"},{"name":"beer","version":"1.2"},{"name":"bitbucket-oauth","version":"0.1"},{"name":"bitkeeper","version":"1.7"},{"name":"blame-upstream-commiters","version":"1.2"},{"name":"BlameSubversion","version":"1.200"},{"name":"BlazeMeterJenkinsPlugin","version":"1.04-beta-1"},{"name":"blink1","version":"1.1"},{"name":"blitz_io-jenkins","version":"1.04"},{"name":"brakeman","version":"0.7"},{"name":"browser-axis-plugin","version":"1.0"},{"name":"bruceschneier","version":"0.1"},{"name":"buckminster","version":"1.1.1"},{"name":"buddycloud","version":"0.2.3"},{"name":"bugzilla","version":"1.5"},{"name":"build-alias-setter","version":"0.1"},{"name":"build-blocker-plugin","version":"1.4.1"},{"name":"build-cause-run-condition","version":"0.1"},{"name":"build-failure-analyzer","version":"1.5.0"},{"name":"build-flow-plugin","version":"0.9"},{"name":"build-keeper-plugin","version":"1.3"},{"name":"build-metrics","version":"1.0"},{"name":"build-name-setter","version":"1.3"},{"name":"build-node-column","version":"0.1"},{"name":"build-pipeline-plugin","version":"1.3.4.1"},{"name":"build-publisher","version":"1.17"},{"name":"build-timeout","version":"1.11"},{"name":"build-token-root","version":"1.0"},{"name":"build-user-vars-plugin","version":"1.1"},{"name":"build-view-column","version":"0.1"},{"name":"build-with-parameters","version":"1.1"},{"name":"buildcoin-plugin","version":"1.4"},{"name":"buildcontext-capture","version":"0.6"},{"name":"buildheroes","version":"0.2"},{"name":"buildresult-trigger","version":"0.12"},{"name":"buildtriggerbadge","version":"1.0"},{"name":"built-on-column","version":"1.1"},{"name":"bulk-builder","version":"1.5"},{"name":"caliper-ci","version":"2.3"},{"name":"call-remote-job-plugin","version":"1.0.16"},{"name":"campfire","version":"2.6"},{"name":"caroline","version":"1.0"},{"name":"cas-plugin","version":"1.1.1"},{"name":"cas1","version":"1.0.1"},{"name":"categorized-view","version":"1.0"},{"name":"cccc","version":"0.6"},{"name":"ccm","version":"3.0"},{"name":"changelog-history","version":"1.3"},{"name":"changes-since-last-success","version":"0.5"},{"name":"checkstyle","version":"3.35"},{"name":"chosen","version":"1.0"},{"name":"chrome-frame-plugin","version":"1.1"},{"name":"chromedriver","version":"1.0"},{"name":"chucknorris","version":"0.5"},{"name":"ci-game","version":"1.19"},{"name":"claim","version":"2.2"},{"name":"clamav","version":"0.2.1"},{"name":"clang-scanbuild-plugin","version":"1.4"},{"name":"clearcase","version":"1.3.14"},{"name":"clearcase-release","version":"0.3"},{"name":"clearcase-ucm-baseline","version":"1.7.4"},{"name":"clearcase-ucm-plugin","version":"1.3.8"},{"name":"clone-workspace-scm","version":"0.5"},{"name":"cloudbees-deployer-plugin","version":"1.7"},{"name":"cloudbees-enterprise-plugins","version":"13.5.0"},{"name":"cloudbees-plugin-gateway","version":"4.0"},{"name":"cloudtest","version":"2.4"},{"name":"clover","version":"4.0.6"},{"name":"cloverphp","version":"0.3.3"},{"name":"cluster-stats","version":"0.4.4"},{"name":"cmakebuilder","version":"1.9"},{"name":"cmvc","version":"0.4"},{"name":"cobertura","version":"1.9.1"},{"name":"cocoapods-integration","version":"0.2.0"},{"name":"codecover","version":"1.1"},{"name":"codescanner","version":"0.11"},{"name":"collabnet","version":"1.1.8"},{"name":"collabnet-uc4-deploy","version":"1.0"},{"name":"collapsing-console-sections","version":"1.3"},{"name":"ColumnPack-plugin","version":"1.0.3"},{"name":"ColumnsPlugin","version":"1.0"},{"name":"compact-columns","version":"1.9"},{"name":"computer-queue-plugin","version":"1.3"},{"name":"concordionpresenter","version":"0.7"},{"name":"conditional-buildstep","version":"1.2.2"},{"name":"config-autorefresh-plugin","version":"1.0"},{"name":"config-file-provider","version":"2.5.1"},{"name":"config-rotator","version":"1.1.1"},{"name":"configurationslicing","version":"1.37"},{"name":"configure-job-column-plugin","version":"1.0"},{"name":"confluence-publisher","version":"1.8"},{"name":"console-column-plugin","version":"1.5"},{"name":"copy-data-to-workspace-plugin","version":"1.0"},{"name":"copy-project-link","version":"1.1"},{"name":"copy-to-slave","version":"1.4"},{"name":"copyartifact","version":"1.27"},{"name":"countjobs-viewstabbar","version":"1.0.0"},{"name":"covcomplplot","version":"1.1.1"},{"name":"coverity","version":"1.2.5"},{"name":"cppcheck","version":"1.13"},{"name":"cppncss","version":"1.1"},{"name":"cpptest","version":"0.9"},{"name":"crap4j","version":"0.8"},{"name":"create-fingerprint","version":"1.2"},{"name":"create-fingerprint-plugin","version":"1.0"},{"name":"createjobadvanced","version":"1.7"},{"name":"crittercism-dsym","version":"1.1"},{"name":"cron_column","version":"1.003"},{"name":"crowd","version":"1.2"},{"name":"crowd2","version":"1.5"},{"name":"cucumber","version":"0.0.2"},{"name":"cucumber-reports","version":"0.0.21"},{"name":"custom-job-icon","version":"0.2"},{"name":"custom-tools-plugin","version":"0.2"},{"name":"CustomHistory","version":"1.5"},{"name":"cvs-tag","version":"1.7"},{"name":"cygpath","version":"1.5"},{"name":"darcs","version":"0.3.11"},{"name":"dashboard-view","version":"2.7"},{"name":"database","version":"1.1"},{"name":"database-drizzle","version":"1.0"},{"name":"database-h2","version":"1.0"},{"name":"database-mysql","version":"1.0"},{"name":"database-postgresql","version":"1.0"},{"name":"datical-db-plugin","version":"1.0.4"},{"name":"dbCharts","version":"0.4"},{"name":"debian-package-builder","version":"1.4.2"},{"name":"delete-log-plugin","version":"1.0"},{"name":"delta-cloud","version":"1.0.1"},{"name":"dependency-queue-plugin","version":"1.1"},{"name":"dependencyanalyzer","version":"0.6"},{"name":"depgraph-view","version":"0.11"},{"name":"deploy","version":"1.9"},{"name":"deploy-websphere","version":"1.0"},{"name":"deployed-on-column","version":"1.7"},{"name":"deploygate-plugin","version":"1.2"},{"name":"description-column-plugin","version":"1.3"},{"name":"description-setter","version":"1.8"},{"name":"devstack","version":"0.0.6"},{"name":"dimensionsscm","version":"0.8.1"},{"name":"discard-old-build","version":"1.05"},{"name":"disk-usage","version":"0.20"},{"name":"display-upstream-changes","version":"0.1"},{"name":"distfork","version":"1.3"},{"name":"distTest","version":"1.0"},{"name":"doclinks","version":"0.5"},{"name":"dos-trigger","version":"1.23"},{"name":"downstream-buildview","version":"1.8"},{"name":"downstream-ext","version":"1.8"},{"name":"doxygen","version":"0.13"},{"name":"drmemory-plugin","version":"0.1.1"},{"name":"dropdown-viewstabbar-plugin","version":"1.6"},{"name":"dry","version":"2.34"},{"name":"dry-run","version":"0.9"},{"name":"dtkit","version":"1.12"},{"name":"dumpinfo-buildwrapper-plugin","version":"1.1"},{"name":"dynamic-axis","version":"1.0.1"},{"name":"dynamicparameter","version":"0.2.0"},{"name":"easyant","version":"1.1"},{"name":"ec2","version":"1.18"},{"name":"eclipse-update-site","version":"1.2"},{"name":"eggplant-plugin","version":"1.4"},{"name":"elastic-axis","version":"1.1"},{"name":"elOyente","version":"1.2"},{"name":"email-ext","version":"2.30.2"},{"name":"email-ext-recipients-column","version":"1.0"},{"name":"embeddable-build-status","version":"1.4"},{"name":"emma","version":"1.29"},{"name":"emmacoveragecolumn","version":"0.0.4"},{"name":"emotional-hudson","version":"1.3"},{"name":"emotional-jenkins-plugin","version":"1.1"},{"name":"enhanced-old-build-discarder","version":"1.0"},{"name":"envfile","version":"1.2"},{"name":"envinject","version":"1.87"},{"name":"environment-script","version":"1.1.2"},{"name":"escaped-markup-plugin","version":"0.1"},{"name":"excludeMatrixParent","version":"1.1"},{"name":"Exclusion","version":"0.8"},{"name":"exclusive-execution","version":"0.7"},{"name":"exclusive-label-plugin","version":"1.0"},{"name":"extended-choice-parameter","version":"0.28"},{"name":"extended-read-permission","version":"1.0"},{"name":"extensible-choice-parameter","version":"1.2.1"},{"name":"extension-filter","version":"1.0"},{"name":"external-scheduler","version":"1.0"},{"name":"externalresource-dispatcher","version":"1.1.0"},{"name":"extra-columns","version":"1.9"},{"name":"extreme-feedback","version":"1.2"},{"name":"ezwall","version":"0.2"},{"name":"fail-the-build-plugin","version":"1.0"},{"name":"favorite","version":"1.14"},{"name":"favorite-view","version":"1.0"},{"name":"feature-branch-notifier","version":"1.1"},{"name":"file-leak-detector","version":"1.2"},{"name":"files-found-trigger","version":"1.3"},{"name":"filesystem_scm","version":"1.20"},{"name":"findbugs","version":"4.48"},{"name":"fitnesse","version":"1.8"},{"name":"flashlog-plugin","version":"1.0"},{"name":"flexible-publish","version":"0.10"},{"name":"flexteam","version":"1.1"},{"name":"flow","version":"1.1"},{"name":"fogbugz","version":"1.0"},{"name":"form-element-path","version":"1.4"},{"name":"fortify360","version":"3.81"},{"name":"fstrigger","version":"0.36"},{"name":"ftppublisher","version":"1.2"},{"name":"fxcop-runner","version":"1.1"},{"name":"gallio","version":"1.6"},{"name":"gant","version":"1.2"},{"name":"gatling","version":"1.0.3"},{"name":"gcal","version":"0.4"},{"name":"gcm-notification","version":"1.0"},{"name":"gearman-plugin","version":"0.0.1"},{"name":"gerrit","version":"0.7"},{"name":"gerrit-trigger","version":"2.10.1"},{"name":"ghprb","version":"1.8"},{"name":"girls","version":"1.0.0"},{"name":"git","version":"1.4.0"},{"name":"git-chooser-alternative","version":"1.0"},{"name":"git-client","version":"1.0.7"},{"name":"git-notes","version":"0.0.4"},{"name":"git-parameter","version":"0.2"},{"name":"git-server","version":"1.1"},{"name":"git-userContent","version":"1.3"},{"name":"github","version":"1.6"},{"name":"github-api","version":"1.42"},{"name":"github-oauth","version":"0.13.1"},{"name":"github-sqs-plugin","version":"1.5"},{"name":"gitlab-hook","version":"0.2.6"},{"name":"gitlab-merge-request-jenkins","version":"1.1.1"},{"name":"gitorious","version":"1.0"},{"name":"global-build-stats","version":"1.3"},{"name":"global-variable-string-parameter","version":"1.1"},{"name":"gnat","version":"0.14"},{"name":"googleanalytics","version":"1.3"},{"name":"googlecode","version":"1.7"},{"name":"gradle","version":"1.22"},{"name":"grails","version":"1.6.3"},{"name":"gravatar","version":"1.1"},{"name":"greenballs","version":"1.12"},{"name":"grinder","version":"1.4"},{"name":"groovy","version":"1.13"},{"name":"groovy-label-assignment","version":"1.0.0"},{"name":"groovy-postbuild","version":"1.8"},{"name":"groovy-remote","version":"0.2"},{"name":"groovyaxis","version":"0.3"},{"name":"growl","version":"1.1"},{"name":"hadoop","version":"1.4"},{"name":"harvest","version":"0.5"},{"name":"heavy-job","version":"1.0"},{"name":"heroku-jenkins-plugin","version":"0.7.1-BETA"},{"name":"hgca","version":"1.3"},{"name":"hipchat","version":"0.1.4"},{"name":"hipchat-plugin","version":"0.1.0"},{"name":"hockeyapp","version":"1.0.4"},{"name":"hp-application-automation-tools-plugin","version":"2.0.0"},{"name":"hp-operations-orchestration-automation-execution-plugin","version":"1.0.11"},{"name":"hsts-filter-plugin","version":"1.0"},{"name":"html-audio-notifier","version":"0.4"},{"name":"html5-notifier-plugin","version":"1.2"},{"name":"htmlpublisher","version":"1.2"},{"name":"http_request","version":"1.8"},{"name":"hudson-logaction-plugin","version":"1.1"},{"name":"hudson-pview-plugin","version":"1.8"},{"name":"hudson-wsclean-plugin","version":"1.0.4"},{"name":"hudsontrayapp","version":"0.7.3"},{"name":"humbug","version":"0.1.1"},{"name":"icescrum","version":"1.0.2"},{"name":"ikachan","version":"0.0.1"},{"name":"image-gallery","version":"1.0"},{"name":"instant-messaging","version":"1.25"},{"name":"integrity-plugin","version":"1.17"},{"name":"ion-deployer-plugin","version":"0.9"},{"name":"ios-device-connector","version":"1.2"},{"name":"iphoneview","version":"0.2"},{"name":"ipmessenger-plugin","version":"1.2"},{"name":"ircbot","version":"2.23"},{"name":"ivy","version":"1.22"},{"name":"ivy-report","version":"1.2"},{"name":"ivytrigger","version":"0.28"},{"name":"jabber","version":"1.25"},{"name":"jacoco","version":"1.0.12"},{"name":"japex","version":"1.7"},{"name":"javancss","version":"1.1"},{"name":"javanet","version":"1.3"},{"name":"javanet-uploader","version":"1.7"},{"name":"javatest-report","version":"1.4"},{"name":"jboss","version":"1.0.5"},{"name":"jbpm-embedded-plugin","version":"0.2"},{"name":"jbpm-workflow-plugin","version":"0.3"},{"name":"jcaptcha-plugin","version":"1.1"},{"name":"jclouds-jenkins","version":"2.3.1"},{"name":"jdepend","version":"1.2.3"},{"name":"jenkins-cloudformation-plugin","version":"0.11"},{"name":"jenkins-flowdock-plugin","version":"1.1.2"},{"name":"jenkins-jira-issue-updater","version":"1.3"},{"name":"jenkins-leiningen","version":"0.5.1"},{"name":"jenkins-multijob-plugin","version":"1.9"},{"name":"jenkins-tag-cloud-plugin","version":"1.6"},{"name":"jenkins-testswarm-plugin","version":"1.2"},{"name":"jenkins-tracker","version":"0.1.0"},{"name":"jenkinswalldisplay","version":"0.6.17"},{"name":"jenkinswalldisplay-pom","version":"0.6.2"},{"name":"jenkow-activiti-designer","version":"0.3.1"},{"name":"jenkow-activiti-explorer","version":"0.3.1"},{"name":"jenkow-plugin","version":"0.3.1"},{"name":"jigomerge","version":"0.7"},{"name":"jira","version":"1.37"},{"name":"JiraTestResultReporter","version":"1.0.4"},{"name":"job-direct-mail","version":"1.5"},{"name":"job-dsl","version":"1.15"},{"name":"job-exporter","version":"0.4"},{"name":"job-import-plugin","version":"1.0"},{"name":"job-log-logger-plugin","version":"1.0"},{"name":"job-node-stalker","version":"1.0.1"},{"name":"job-parameter-summary","version":"0.1"},{"name":"job-poll-action-plugin","version":"1.0"},{"name":"job-strongauth-simple","version":"0.5"},{"name":"jobConfigHistory","version":"2.4"},{"name":"jobcopy-builder","version":"1.1.0"},{"name":"jobgenerator","version":"1.14"},{"name":"jobrequeue","version":"1.0"},{"name":"jobrevision","version":"0.6"},{"name":"jobtype-column","version":"1.3"},{"name":"join","version":"1.15"},{"name":"jprt","version":"1.1"},{"name":"jqs-monitoring","version":"1.2"},{"name":"jquery","version":"1.7.2-1"},{"name":"jquery-ui","version":"1.0.2"},{"name":"jsgames","version":"0.2"},{"name":"jshint-checkstyle","version":"3.36"},{"name":"jslint","version":"0.8.0"},{"name":"jslint-checkstyle","version":"3.35"},{"name":"jsoup","version":"1.6.3"},{"name":"jsunit","version":"1.5"},{"name":"jswidgets","version":"1.10"},{"name":"junit-attachments","version":"1.3"},{"name":"jython","version":"1.9"},{"name":"kagemai","version":"1.3"},{"name":"karotz","version":"0.2"},{"name":"keepSlaveOffline","version":"1.0"},{"name":"keyboard-shortcuts-plugin","version":"1.2"},{"name":"klaros-testmanagement","version":"1.4"},{"name":"klocwork","version":"1.15"},{"name":"kundo","version":"0.2"},{"name":"label-verifier","version":"1.0"},{"name":"labeled-test-groups-publisher","version":"1.2.6"},{"name":"labmanager","version":"0.2.8"},{"name":"lastfailureversioncolumn","version":"1.1"},{"name":"lastsuccessdescriptioncolumn","version":"1.0"},{"name":"lastsuccessversioncolumn","version":"1.1"},{"name":"LavaLampNotifier","version":"1.4"},{"name":"ldapemail","version":"0.7"},{"name":"leastload","version":"1.0.3"},{"name":"lechat","version":"0.1.3"},{"name":"leiningen-plugin","version":"0.5.5"},{"name":"libvirt-slave","version":"1.8.1"},{"name":"lingr-plugin","version":"0.1"},{"name":"list-command","version":"0.2"},{"name":"liverebel-deploy","version":"2.5.5"},{"name":"livescreenshot","version":"1.4.4"},{"name":"loaderio-jenkins-plugin","version":"1.0.1"},{"name":"locale","version":"1.2"},{"name":"locked-files-report","version":"1.6"},{"name":"locks-and-latches","version":"0.6"},{"name":"log-command","version":"1.0.1"},{"name":"log-parser","version":"1.0.8"},{"name":"logaction-plugin","version":"1.2"},{"name":"logfilesizechecker","version":"1.0"},{"name":"logging","version":"0.2.8"},{"name":"logstash","version":"0.8.0"},{"name":"lotus-connections-plugin","version":"1.23"},{"name":"m2-extra-steps","version":"1.1.7"},{"name":"m2-repo-reaper","version":"1.0"},{"name":"m2release","version":"0.10.0"},{"name":"mail-watcher-plugin","version":"1.4"},{"name":"mailcommander","version":"1.0.0"},{"name":"managed-scripts","version":"1.1"},{"name":"mantis","version":"0.25"},{"name":"mask-passwords","version":"2.7.2"},{"name":"matrix-reloaded","version":"1.1.1"},{"name":"Matrix-sorter-plugin","version":"1.1"},{"name":"matrixtieparent","version":"1.2"},{"name":"maven-dependency-update-trigger","version":"1.4"},{"name":"maven-deployment-linker","version":"1.5.1"},{"name":"maven-info","version":"0.0.4"},{"name":"maven-invoker-plugin","version":"1.2"},{"name":"maven-metadata-plugin","version":"1.0.0"},{"name":"maven-release-cascade","version":"1.3.2"},{"name":"maven-repo-cleaner","version":"1.2"},{"name":"measurement-plots","version":"0.1"},{"name":"memegen","version":"0.4.3"},{"name":"memory-map","version":"1.0.1"},{"name":"mercurial","version":"1.46"},{"name":"metadata","version":"1.0b"},{"name":"mock-security-realm","version":"1.0"},{"name":"mock-slave","version":"1.1"},{"name":"mogotest","version":"0.1.0"},{"name":"mongodb","version":"1.3"},{"name":"mongodb-document-upload","version":"1.0"},{"name":"monitoring","version":"1.45.0"},{"name":"monkit-plugin","version":"0.2.6"},{"name":"mozmill","version":"1.3"},{"name":"msbuild","version":"1.18"},{"name":"mstest","version":"0.7"},{"name":"mstestrunner","version":"1.0.1"},{"name":"mttr","version":"1.1"},{"name":"multi-module-tests-publisher","version":"1.32"},{"name":"multi-slave-config-plugin","version":"1.0.0"},{"name":"multiline-tabbar-plugin","version":"1.1"},{"name":"multiple-scms","version":"0.2"},{"name":"mysql-auth","version":"1.0"},{"name":"nabaztag","version":"1.9"},{"name":"naginator","version":"1.8"},{"name":"nant","version":"1.4.3"},{"name":"ncover","version":"0.3"},{"name":"nerrvana-plugin","version":"1.02.01"},{"name":"nested-view","version":"1.10"},{"name":"netio-plugin","version":"1.4"},{"name":"network-monitor","version":"1.1"},{"name":"next-build-number","version":"1.0"},{"name":"next-executions","version":"1.0.5"},{"name":"nexus-task-runner","version":"0.9.2"},{"name":"nis-notification-lamp","version":"1.131"},{"name":"nodejs","version":"0.1"},{"name":"nodelabelparameter","version":"1.4"},{"name":"nodenamecolumn","version":"1.1"},{"name":"nodeofflinenotification","version":"1.0.3"},{"name":"nopmdcheck","version":"0.9"},{"name":"nopmdverifytrac","version":"0.9"},{"name":"notification","version":"1.5"},{"name":"notifo","version":"1.0.1"},{"name":"nsiqcollector","version":"1.3.3"},{"name":"nuget","version":"0.3"},{"name":"nunit","version":"0.14"},{"name":"offlineonfailure-plugin","version":"1.0"},{"name":"openid","version":"1.6"},{"name":"openJDK-native-plugin","version":"1.0"},{"name":"openscada-jenkins-exporter","version":"0.0.2"},{"name":"origo-issue-notifier","version":"1.1"},{"name":"oslc-cm","version":"1.31"},{"name":"otabuilder","version":"0.2.3"},{"name":"parallel-test-executor","version":"1.0"},{"name":"parameterized-trigger","version":"2.18"},{"name":"patch-parameter","version":"1.0"},{"name":"pathignore","version":"0.6"},{"name":"pegdown-formatter","version":"1.3"},{"name":"pending-changes","version":"0.3.0"},{"name":"people-redirector","version":"1.3"},{"name":"perforce","version":"1.3.24"},{"name":"performance","version":"1.8"},{"name":"perfpublisher","version":"7.97"},{"name":"periodic-reincarnation","version":"1.2"},{"name":"periodicbackup","version":"1.3"},{"name":"perl","version":"0.0.4"},{"name":"persona","version":"2.3"},{"name":"phing","version":"0.13.1"},{"name":"php","version":"1.0"},{"name":"piwikanalytics","version":"1.1.0"},{"name":"plasticscm-plugin","version":"2.0"},{"name":"platformlabeler","version":"1.1"},{"name":"play-autotest-plugin","version":"0.0.12"},{"name":"plot","version":"1.5"},{"name":"pmd","version":"3.34"},{"name":"polarion","version":"1.3"},{"name":"pollscm","version":"1.2"},{"name":"port-allocator","version":"1.5"},{"name":"postbuild-task","version":"1.8"},{"name":"postbuildscript","version":"0.12"},{"name":"powershell","version":"1.2"},{"name":"pragprog","version":"1.0.4"},{"name":"prereq-buildstep","version":"1.1"},{"name":"preSCMbuildstep","version":"0.2"},{"name":"pretest-commit","version":"0.4"},{"name":"pretested-integration","version":"0.0.4"},{"name":"PrioritySorter","version":"1.3"},{"name":"progress-bar-column-plugin","version":"1.0"},{"name":"project-description-setter","version":"1.1"},{"name":"project-health-report","version":"1.2"},{"name":"project-stats-plugin","version":"0.4"},{"name":"promoted-builds","version":"2.11"},{"name":"promoted-builds-simple","version":"1.9"},{"name":"prqa-plugin","version":"1.2.0"},{"name":"pry","version":"1.1"},{"name":"publish-over-cifs","version":"0.2"},{"name":"publish-over-ftp","version":"1.9"},{"name":"publish-over-ssh","version":"1.10"},{"name":"purge-build-queue-plugin","version":"1.0"},{"name":"pvcs_scm","version":"1.1"},{"name":"pwauth","version":"0.4"},{"name":"pxe","version":"1.5"},{"name":"pyenv","version":"0.0.4"},{"name":"python","version":"1.2"},{"name":"qc","version":"1.2.1"},{"name":"r","version":"0.2"},{"name":"rabbitmq-build-trigger","version":"1.5"},{"name":"rabbitmq-consumer","version":"1.5"},{"name":"rad-builder","version":"1.1.4"},{"name":"radiatorviewplugin","version":"1.13"},{"name":"rake","version":"1.7.7"},{"name":"rally-update-plugin-1","version":"1.2"},{"name":"random-string-parameter","version":"1.0"},{"name":"rbenv","version":"0.0.14"},{"name":"read-only-configurations","version":"1.7"},{"name":"rebuild","version":"1.19"},{"name":"recipe","version":"1.0"},{"name":"redmine","version":"0.13"},{"name":"refit","version":"0.3.1"},{"name":"regexemail","version":"0.3"},{"name":"regression-report-plugin","version":"1.1"},{"name":"release","version":"2.3"},{"name":"remote-terminal-access","version":"1.4"},{"name":"repo","version":"1.5"},{"name":"repository","version":"1.0"},{"name":"repository-connector","version":"0.8.2"},{"name":"reverse-proxy-auth-plugin","version":"1.0.1"},{"name":"reviewboard","version":"1.0.1"},{"name":"rhnpush-plugin","version":"0.1"},{"name":"rich-text-publisher-plugin","version":"1.1"},{"name":"robot","version":"1.2.3"},{"name":"role-strategy","version":"1.1.2"},{"name":"rpmsign-plugin","version":"0.1"},{"name":"rqm-plugin","version":"1.0"},{"name":"rrod","version":"1.1.0"},{"name":"rtc","version":"0.3"},{"name":"ruby","version":"1.2"},{"name":"ruby-runtime","version":"0.11"},{"name":"rubyMetrics","version":"1.5.0"},{"name":"rubymotion","version":"0.13"},{"name":"run-condition","version":"0.10"},{"name":"rundeck","version":"2.11"},{"name":"rusalad-plugin","version":"1.0.8"},{"name":"rvm","version":"0.4"},{"name":"s3","version":"0.3.2"},{"name":"saferestart","version":"0.3"},{"name":"sametime","version":"0.4"},{"name":"sauce-ondemand","version":"1.57"},{"name":"sbt","version":"1.4"},{"name":"scala-junit-name-decoder","version":"1.0"},{"name":"schedule-failed-builds","version":"1.1"},{"name":"Schmant","version":"1.1.4"},{"name":"scm-sync-configuration","version":"0.0.7.1"},{"name":"scm2job","version":"2.3"},{"name":"scons","version":"0.4"},{"name":"scp","version":"1.8"},{"name":"screenshot","version":"1.1"},{"name":"script-realm","version":"1.5"},{"name":"script-scm","version":"1.12"},{"name":"scripted-cloud-plugin","version":"0.12"},{"name":"scriptler","version":"2.6.1"},{"name":"scripttrigger","version":"0.29"},{"name":"SCTMExecutor","version":"1.5.1"},{"name":"search-all-results-plugin","version":"1.0"},{"name":"secret","version":"1.7"},{"name":"sectioned-view","version":"1.18"},{"name":"selection-tasks-plugin","version":"1.0"},{"name":"selenium","version":"2.2"},{"name":"selenium-aes","version":"0.5"},{"name":"selenium-builder","version":"1.6"},{"name":"seleniumhq","version":"0.4"},{"name":"seleniumhtmlreport","version":"0.94"},{"name":"seleniumrc-plugin","version":"1.0"},{"name":"serenity","version":"0.4"},{"name":"sfee","version":"1.0.4"},{"name":"shared-objects","version":"0.44"},{"name":"shelve-project-plugin","version":"1.3"},{"name":"shiningpanda","version":"0.19"},{"name":"show-build-parameters","version":"1.0"},{"name":"sicci_for_xcode","version":"0.0.8"},{"name":"sidebar-link","version":"1.6"},{"name":"signal-killer","version":"1.0"},{"name":"simple-parameterized-builds-report","version":"1.0"},{"name":"simple-theme-plugin","version":"0.3"},{"name":"simpleclearcase","version":"1.2.2"},{"name":"simpleupdatesite","version":"1.1.2"},{"name":"sitemonitor","version":"0.4"},{"name":"skip-certificate-check","version":"1.0"},{"name":"skype-notifier","version":"1.1.0"},{"name":"sladiator-notifier","version":"1.0.4"},{"name":"slave-prerequisites","version":"1.0"},{"name":"slave-proxy","version":"1.1"},{"name":"slave-setup","version":"1.6"},{"name":"slave-squatter","version":"1.2"},{"name":"slave-status","version":"1.6"},{"name":"slave-utilization-plugin","version":"1.5"},{"name":"sloccount","version":"1.10"},{"name":"smart-jenkins","version":"1.0"},{"name":"sms-notification","version":"1.0"},{"name":"snsnotify","version":"1.6"},{"name":"sonar","version":"2.1"},{"name":"sonargraph-plugin","version":"1.2"},{"name":"sonatype-ci","version":"1.3"},{"name":"sounds","version":"0.4"},{"name":"sourcemonitor","version":"0.2"},{"name":"speaks","version":"0.1.1"},{"name":"sra-deploy","version":"1.4.2.2"},{"name":"ssh","version":"2.3"},{"name":"ssh-agent","version":"1.0"},{"name":"SSSCM","version":"1.0"},{"name":"stackhammer","version":"1.0.6"},{"name":"staf","version":"0.1"},{"name":"starteam","version":"0.6.11"},{"name":"started-by-envvar","version":"1.0"},{"name":"startup-trigger-plugin","version":"2.4"},{"name":"stashNotifier","version":"1.3"},{"name":"status-view","version":"1.0"},{"name":"statusmonitor","version":"1.3"},{"name":"stepcounter","version":"1.3.2"},{"name":"storable-configs-plugin","version":"1.0"},{"name":"strawboss","version":"1.1"},{"name":"suite-test-groups-publisher","version":"1.13"},{"name":"summary_report","version":"1.9"},{"name":"suppress-stack-trace","version":"1.1"},{"name":"Surround-SCM-plugin","version":"1.1"},{"name":"svn-release-mgr","version":"1.2"},{"name":"svn-revert-plugin","version":"1.3"},{"name":"svn-tag","version":"1.16"},{"name":"svn-workspace-cleaner","version":"1.0"},{"name":"svncompat13","version":"1.2"},{"name":"svncompat14","version":"1.1"},{"name":"svnmerge","version":"1.2"},{"name":"svnpublisher","version":"0.1"},{"name":"swarm","version":"1.9"},{"name":"synergy","version":"1.6"},{"name":"systemloadaverage-monitor","version":"1.2"},{"name":"tag-profiler","version":"0.2"},{"name":"tap","version":"1.10"},{"name":"tasks","version":"4.36"},{"name":"tattletale-plugin","version":"0.3"},{"name":"tcl","version":"0.4"},{"name":"team-views","version":"0.9.0"},{"name":"teamconcert","version":"1.0.5"},{"name":"template-project","version":"1.4"},{"name":"template-workflows","version":"1.2"},{"name":"tepco","version":"0.1"},{"name":"tepco-epuw","version":"1.0"},{"name":"terminal","version":"1.4"},{"name":"terminate-ssh-processes-plugin","version":"1.0"},{"name":"test-stability","version":"1.0"},{"name":"testabilityexplorer","version":"0.4"},{"name":"testflight","version":"1.3.8"},{"name":"testingbot","version":"1.5"},{"name":"testInProgress","version":"1.0"},{"name":"testlink","version":"3.5"},{"name":"testng-plugin","version":"1.1"},{"name":"testopia","version":"1.3"},{"name":"text-finder","version":"1.9"},{"name":"text-finder-run-condition","version":"0.1"},{"name":"tfs","version":"1.20"},{"name":"thinBackup","version":"1.7.2"},{"name":"thread-dump-action-plugin","version":"1.0"},{"name":"throttle-concurrents","version":"1.7.2"},{"name":"thucydides","version":"0.1"},{"name":"timestamper","version":"1.5.4"},{"name":"tmpcleaner","version":"1.1"},{"name":"token-macro","version":"1.7"},{"name":"toolenv","version":"1.1"},{"name":"trac","version":"1.13"},{"name":"trac-publisher-plugin","version":"1.3"},{"name":"tracking-svn","version":"1.1"},{"name":"tuxdroid","version":"1.7"},{"name":"TwilioNotifier","version":"0.2.1"},{"name":"twitter","version":"0.7"},{"name":"ui-samples-plugin","version":"1.520"},{"name":"unicorn","version":"0.1.1"},{"name":"unity-asset-server","version":"1.1.1"},{"name":"unity3d-plugin","version":"0.3"},{"name":"unreliable-slave-plugin","version":"1.1"},{"name":"update-sites-manager","version":"1.0.0"},{"name":"uptime","version":"1.0"},{"name":"url-auth","version":"1.0.1"},{"name":"URLSCM","version":"1.6"},{"name":"urltrigger","version":"0.31"},{"name":"utplsql","version":"0.4"},{"name":"vagrant","version":"0.1.4"},{"name":"valgrind","version":"0.19"},{"name":"validating-string-parameter","version":"2.2"},{"name":"vault-scm-plugin","version":"1.1.1"},{"name":"vboxwrapper","version":"1.3"},{"name":"veracode-scanner","version":"1.1"},{"name":"versioncolumn","version":"0.2"},{"name":"versionnumber","version":"1.4.1"},{"name":"vertx","version":"1.0.1"},{"name":"view-job-filters","version":"1.22"},{"name":"viewVC","version":"1.6"},{"name":"violation-columns","version":"1.5"},{"name":"violations","version":"0.7.11"},{"name":"virtualbox","version":"0.6"},{"name":"visualworks-store","version":"1.0"},{"name":"vmware","version":"0.8"},{"name":"vs-code-metrics","version":"1.6"},{"name":"vsphere-cloud","version":"0.10"},{"name":"vss","version":"1.9"},{"name":"vstestrunner","version":"1.0.1"},{"name":"warnings","version":"4.26"},{"name":"was-builder","version":"1.6.1"},{"name":"weblogic-deployer-plugin","version":"2.3"},{"name":"websocket","version":"1.0.5"},{"name":"WebSVN2","version":"0.9"},{"name":"webtestpresenter","version":"0.23"},{"name":"whitesource","version":"1.1"},{"name":"windmill","version":"1.5"},{"name":"windows-azure-storage","version":"0.1.1"},{"name":"windows-exe-runner","version":"1.1"},{"name":"wix","version":"1.2"},{"name":"writable-filesystem-monitor","version":"0.1"},{"name":"ws-cleanup","version":"0.15"},{"name":"xcode-plugin","version":"1.3.3"},{"name":"xfpanel","version":"1.2.2"},{"name":"xframe-filter-plugin","version":"1.0"},{"name":"xpath-config-viewer","version":"1.1.1"},{"name":"xpdev","version":"1.0"},{"name":"xshell","version":"0.8"},{"name":"xtrigger","version":"0.54"},{"name":"xunit","version":"1.60"},{"name":"xvfb","version":"1.0.7"},{"name":"xvnc","version":"1.14"},{"name":"yammer","version":"1.0.0"},{"name":"youtrack-plugin","version":"0.3"},{"name":"zentimestamp","version":"3.3"},{"name":"zubhium","version":"0.1.6"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"plugins":[{"active":true,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[],"downgradable":false,"enabled":true,"hasUpdate":false,"longName":"Jenkins Mailer Plugin","pinned":false,"shortName":"mailer","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Mailer","version":"1.5"},{"active":false,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[],"downgradable":false,"enabled":false,"hasUpdate":false,"longName":"External Monitor Job Type Plugin","pinned":false,"shortName":"external-monitor-job","supportsDynamicLoad":"MAYBE","url":"https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs","version":"1.1"},{"active":true,"backupVersion":"1.2","bundled":true,"deleted":false,"dependencies":[{}],"downgradable":true,"enabled":false,"hasUpdate":false,"longName":"LDAP Plugin","pinned":true,"shortName":"ldap","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin","version":"1.5"},{"active":true,"backupVersion":"1.1","bundled":true,"deleted":false,"dependencies":[{}],"downgradable":true,"enabled":true,"hasUpdate":false,"longName":"PAM Authentication plugin","pinned":true,"shortName":"pam-auth","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/PAM+Authentication+Plugin","version":"1.1"},{"active":false,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[],"downgradable":false,"enabled":false,"hasUpdate":false,"longName":"Ant Plugin","pinned":false,"shortName":"ant","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Ant+Plugin","version":"1.2"},{"active":true,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[{},{},{},{}],"downgradable":false,"enabled":true,"hasUpdate":false,"longName":"Javadoc Plugin","pinned":false,"shortName":"javadoc","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Javadoc+Plugin","version":"1.1"},{"active":true,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[{},{},{},{},{},{}],"downgradable":false,"enabled":true,"hasUpdate":false,"longName":"Jenkins Translation Assistance plugin","pinned":false,"shortName":"translation","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Translation+Assistance+Plugin","version":"1.10"},{"active":true,"backupVersion":null,"bundled":false,"deleted":false,"dependencies":[{}],"downgradable":false,"enabled":false,"hasUpdate":false,"longName":"SMS Notification","pinned":false,"shortName":"sms","supportsDynamicLoad":"MAYBE","url":"https://wiki.jenkins-ci.org/display/JENKINS/SMS+Notification","version":"1.1"},{"active":true,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[{},{}],"downgradable":false,"enabled":true,"hasUpdate":false,"longName":"Maven Integration plugin","pinned":false,"shortName":"maven-plugin","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Maven+2+Project+Plugin","version":"1.520"},{"active":false,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[],"downgradable":false,"enabled":false,"hasUpdate":false,"longName":"Credentials Plugin","pinned":false,"shortName":"credentials","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Credentials+Plugin","version":"1.4"},{"active":true,"backupVersion":null,"bundled":true,"deleted":false,"dependencies":[{},{},{},{},{},{},{}],"downgradable":false,"enabled":true,"hasUpdate":false,"longName":"SSH Credentials Plugin","pinned":false,"shortName":"ssh-credentials","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/SSH+Credentials+Plugin","version":"0.3"},{"active":true,"backupVersion":"0.25","bundled":true,"deleted":false,"dependencies":[{},{},{},{},{}],"downgradable":true,"enabled":true,"hasUpdate":false,"longName":"Jenkins SSH Slaves plugin","pinned":true,"shortName":"ssh-slaves","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/SSH+Slaves+plugin","version":"0.27"},{"active":true,"backupVersion":"2.8","bundled":true,"deleted":false,"dependencies":[{},{},{},{}],"downgradable":true,"enabled":true,"hasUpdate":false,"longName":"Jenkins CVS Plug-in","pinned":true,"shortName":"cvs","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/CVS+Plugin","version":"2.9"},{"active":true,"backupVersion":"1.45","bundled":true,"deleted":false,"dependencies":[{},{},{},{}],"downgradable":true,"enabled":true,"hasUpdate":false,"longName":"Jenkins Subversion Plug-in","pinned":true,"shortName":"subversion","supportsDynamicLoad":"MAYBE","url":"http://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin","version":"1.50"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"updates":[]}
|
data/spec/unit_tests/job_spec.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
require 'net/http'
|
3
|
+
require File.expand_path('../fake_http_response', __FILE__)
|
3
4
|
|
4
5
|
describe JenkinsApi::Client::Job do
|
5
6
|
context "With properly initialized Client and all methods defined" do
|
6
7
|
|
7
8
|
before do
|
8
9
|
mock_logger = Logger.new "/dev/null"
|
9
|
-
@client =
|
10
|
-
@client.should_receive(:logger).and_return(mock_logger)
|
10
|
+
@client = JenkinsApi::Client.new({:server_ip => '127.0.0.1'})
|
11
|
+
@client.should_receive(:logger).at_least(1).and_return(mock_logger)
|
11
12
|
@job = JenkinsApi::Client::Job.new(@client)
|
12
13
|
@sample_json_response = {
|
13
14
|
"jobs" => [
|
@@ -248,7 +249,7 @@ describe JenkinsApi::Client::Job do
|
|
248
249
|
msg = "/job/test_job/1/logText/progressiveText?start=0"
|
249
250
|
@client.should_receive(:api_get_request).
|
250
251
|
with(msg, nil, nil, true).
|
251
|
-
and_return(
|
252
|
+
and_return(FakeResponse.new)
|
252
253
|
@job.get_console_output('test_job', 1, 0, 'text')
|
253
254
|
end
|
254
255
|
|
@@ -380,19 +381,102 @@ describe JenkinsApi::Client::Job do
|
|
380
381
|
end
|
381
382
|
|
382
383
|
describe "#build" do
|
384
|
+
# First tests confirm the build method works the same as it used to
|
383
385
|
it "accepts the job name and builds the job" do
|
386
|
+
@client.should_receive(:api_get_request).with(
|
387
|
+
"/job/test_job").and_return({})
|
384
388
|
@client.should_receive(:api_post_request).with(
|
385
|
-
"/job/test_job/build", {},
|
389
|
+
"/job/test_job/build", {}, true).and_return(FakeResponse.new(302))
|
386
390
|
@job.build("test_job").should == 302
|
387
391
|
end
|
388
392
|
it "accepts the job name with params and builds the job" do
|
393
|
+
@client.should_receive(:api_get_request).with(
|
394
|
+
"/job/test_job").and_return({})
|
389
395
|
@client.should_receive(:api_post_request).with(
|
390
396
|
"/job/test_job/buildWithParameters",
|
391
397
|
{:branch => 'feature/new-stuff'},
|
392
|
-
|
393
|
-
).and_return(302)
|
398
|
+
true
|
399
|
+
).and_return(FakeResponse.new(302))
|
394
400
|
@job.build("test_job", {:branch => 'feature/new-stuff'}).should == 302
|
395
401
|
end
|
402
|
+
|
403
|
+
### OLD NON-QUEUE RESPONSE JENKINS ###
|
404
|
+
# Next tests confirm it deals with different jenkins versions and waits
|
405
|
+
# for build to start (or not)
|
406
|
+
it "accepts the job name and builds the job (w/timeout)" do
|
407
|
+
@client.should_receive(:api_get_request).with(
|
408
|
+
"/job/test_job").and_return({})
|
409
|
+
@client.should_receive(:api_post_request).with(
|
410
|
+
"/job/test_job/build", {}, true).and_return(FakeResponse.new(302))
|
411
|
+
@client.should_receive(:api_get_request).with(
|
412
|
+
"/job/test_job/1/").and_return({})
|
413
|
+
@client.should_receive(:get_jenkins_version).and_return("1.1")
|
414
|
+
@job.build("test_job", {}, {'build_start_timeout' => 10}).should == 1
|
415
|
+
end
|
416
|
+
|
417
|
+
# wait for build to start (or not) (initial response will fail)
|
418
|
+
it "accepts the job name and builds the job after short delay (w/timeout)" do
|
419
|
+
@client.should_receive(:api_get_request).with(
|
420
|
+
"/job/test_job").and_return({})
|
421
|
+
@client.should_receive(:api_post_request).with(
|
422
|
+
"/job/test_job/build", {}, true).and_return(FakeResponse.new(302))
|
423
|
+
@client.should_receive(:api_get_request).with(
|
424
|
+
"/job/test_job/1/").ordered.and_raise(JenkinsApi::Exceptions::NotFound.new(@client.logger))
|
425
|
+
@client.should_receive(:api_get_request).with(
|
426
|
+
"/job/test_job/1/").ordered.and_return({})
|
427
|
+
@client.should_receive(:get_jenkins_version).and_return("1.1")
|
428
|
+
@job.build("test_job", {}, {'build_start_timeout' => 3}).should == 1
|
429
|
+
end
|
430
|
+
|
431
|
+
# wait for build to start - will fail
|
432
|
+
it "accepts the job name and builds the job, but the job doesn't start" do
|
433
|
+
@client.should_receive(:api_get_request).with(
|
434
|
+
"/job/test_job").and_return({})
|
435
|
+
@client.should_receive(:api_post_request).with(
|
436
|
+
"/job/test_job/build", {}, true).and_return(FakeResponse.new(302))
|
437
|
+
@client.should_receive(:api_get_request).with(
|
438
|
+
"/job/test_job/1/").twice.ordered.and_raise(JenkinsApi::Exceptions::NotFound.new(@client.logger))
|
439
|
+
@client.should_receive(:get_jenkins_version).and_return("1.1")
|
440
|
+
expect( lambda { @job.build("test_job", {}, {'build_start_timeout' => 3}) }).to raise_error(Timeout::Error)
|
441
|
+
end
|
442
|
+
|
443
|
+
### JENKINS POST 1.519 (QUEUE RESPONSE) ###
|
444
|
+
# Next tests confirm it deals with different jenkins versions and waits
|
445
|
+
# for build to start (or not)
|
446
|
+
it "accepts the job name and builds the job (w/timeout)" do
|
447
|
+
@client.should_receive(:api_get_request).with(
|
448
|
+
"/job/test_job").and_return({})
|
449
|
+
@client.should_receive(:api_post_request).with(
|
450
|
+
"/job/test_job/build", {}, true).and_return({"location" => "/item/42/"})
|
451
|
+
@client.should_receive(:api_get_request).with(
|
452
|
+
"/queue/item/42").and_return({'executable' => {'number' => 1}})
|
453
|
+
@client.should_receive(:get_jenkins_version).and_return("1.519")
|
454
|
+
@job.build("test_job", {}, {'build_start_timeout' => 10}).should == 1
|
455
|
+
end
|
456
|
+
|
457
|
+
# wait for build to start (or not) (initial response will fail)
|
458
|
+
it "accepts the job name and builds the job after short delay (w/timeout)" do
|
459
|
+
@client.should_receive(:api_get_request).with(
|
460
|
+
"/job/test_job").and_return({})
|
461
|
+
@client.should_receive(:api_post_request).with(
|
462
|
+
"/job/test_job/build", {}, true).and_return({"location" => "/item/42/"})
|
463
|
+
@client.should_receive(:api_get_request).with(
|
464
|
+
"/queue/item/42").and_return({}, {'executable' => {'number' => 1}})
|
465
|
+
@client.should_receive(:get_jenkins_version).and_return("1.519")
|
466
|
+
@job.build("test_job", {}, {'build_start_timeout' => 3}).should == 1
|
467
|
+
end
|
468
|
+
|
469
|
+
# wait for build to start - will fail
|
470
|
+
it "accepts the job name and builds the job, but the job doesn't start" do
|
471
|
+
@client.should_receive(:api_get_request).with(
|
472
|
+
"/job/test_job").and_return({})
|
473
|
+
@client.should_receive(:api_post_request).with(
|
474
|
+
"/job/test_job/build", {}, true).and_return({"location" => "/item/42/"})
|
475
|
+
@client.should_receive(:api_get_request).with(
|
476
|
+
"/queue/item/42").and_return({}, {})
|
477
|
+
@client.should_receive(:get_jenkins_version).and_return("1.519")
|
478
|
+
expect( lambda { @job.build("test_job", {}, {'build_start_timeout' => 3}) }).to raise_error(Timeout::Error)
|
479
|
+
end
|
396
480
|
end
|
397
481
|
|
398
482
|
describe "#poll" do
|
@@ -515,6 +599,25 @@ describe JenkinsApi::Client::Job do
|
|
515
599
|
end
|
516
600
|
end
|
517
601
|
|
602
|
+
describe "#get_promotions" do
|
603
|
+
it "accepts the jon name and returns the promotions" do
|
604
|
+
mock_job_promotions_response = {
|
605
|
+
"processes" => [ { "name" => "dev",
|
606
|
+
"url" => "not_required",
|
607
|
+
"color" => "blue",
|
608
|
+
},
|
609
|
+
{ "name" => "stage",
|
610
|
+
"url" => "not_required",
|
611
|
+
"color" => "notbuilt",
|
612
|
+
},
|
613
|
+
], }
|
614
|
+
|
615
|
+
@client.should_receive(:api_get_request).with('/job/test_job/promotion').and_return(
|
616
|
+
mock_job_promotions_response)
|
617
|
+
@client.should_receive(:api_get_request).and_return({'target' => {'number' => 42}})
|
618
|
+
@job.get_promotions("test_job").should == {'dev' => 42, 'stage' => nil}
|
619
|
+
end
|
620
|
+
end
|
518
621
|
end
|
519
622
|
end
|
520
623
|
end
|
@@ -30,10 +30,10 @@ describe JenkinsApi::Client::Node do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "#
|
34
|
-
it "creates a
|
33
|
+
describe "#create_dumb_slave" do
|
34
|
+
it "creates a dumb slave by accepting required params" do
|
35
35
|
@client.should_receive(:api_post_request).and_return("302")
|
36
|
-
@node.
|
36
|
+
@node.create_dumb_slave(
|
37
37
|
:name => "test_slave",
|
38
38
|
:slave_host => "10.10.10.10",
|
39
39
|
:private_key_file => "/root/.ssh/id_rsa"
|
@@ -42,7 +42,7 @@ describe JenkinsApi::Client::Node do
|
|
42
42
|
it "fails if name is not given" do
|
43
43
|
expect(
|
44
44
|
lambda{
|
45
|
-
@node.
|
45
|
+
@node.create_dumb_slave(
|
46
46
|
:slave_host => "10.10.10.10",
|
47
47
|
:private_key_file => "/root/.ssh/id_rsa"
|
48
48
|
)
|
@@ -52,7 +52,7 @@ describe JenkinsApi::Client::Node do
|
|
52
52
|
it "fails if slave_host is not given" do
|
53
53
|
expect(
|
54
54
|
lambda{
|
55
|
-
@node.
|
55
|
+
@node.create_dumb_slave(
|
56
56
|
:name => "test_slave",
|
57
57
|
:private_key_file => "/root/.ssh/id_rsa"
|
58
58
|
)
|
@@ -62,7 +62,7 @@ describe JenkinsApi::Client::Node do
|
|
62
62
|
it "fails if private_key_file is not given" do
|
63
63
|
expect(
|
64
64
|
lambda{
|
65
|
-
@node.
|
65
|
+
@node.create_dumb_slave(
|
66
66
|
:name => "test_slave",
|
67
67
|
:slave_host => "10.10.10.10"
|
68
68
|
)
|
@@ -71,6 +71,18 @@ describe JenkinsApi::Client::Node do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
describe "#create_dump_slave" do
|
75
|
+
|
76
|
+
it "just delegates to #create_dumb_slave" do
|
77
|
+
@node.should_receive(:create_dumb_slave)
|
78
|
+
@node.create_dump_slave(
|
79
|
+
:name => "test_slave",
|
80
|
+
:slave_host => "10.10.10.10",
|
81
|
+
:private_key_file => "/root/.ssh/id_rsa"
|
82
|
+
)
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
74
86
|
describe "#delete" do
|
75
87
|
it "gets the node name and deletes if exists" do
|
76
88
|
slave_name = "slave"
|