jenkins_api_client 0.12.1 → 0.13.0
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.
- data/.travis.yml +2 -0
- data/CHANGELOG.md +30 -1
- data/CONTRIBUTORS.md +13 -0
- data/README.md +126 -66
- data/Vagrantfile +85 -0
- data/config/login.yml.example +4 -0
- data/jenkins_api_client.gemspec +12 -12
- data/lib/jenkins_api_client/build_queue.rb +34 -0
- data/lib/jenkins_api_client/cli/job.rb +4 -11
- data/lib/jenkins_api_client/client.rb +241 -79
- data/lib/jenkins_api_client/exceptions.rb +109 -21
- data/lib/jenkins_api_client/job.rb +143 -28
- data/lib/jenkins_api_client/node.rb +16 -8
- data/lib/jenkins_api_client/system.rb +21 -2
- data/lib/jenkins_api_client/version.rb +2 -2
- data/lib/jenkins_api_client/view.rb +18 -1
- data/spec/func_tests/client_spec.rb +9 -15
- data/spec/func_tests/job_spec.rb +190 -51
- data/spec/func_tests/node_spec.rb +29 -12
- data/spec/func_tests/spec_helper.rb +1 -7
- data/spec/func_tests/system_spec.rb +25 -6
- data/spec/func_tests/view_spec.rb +101 -34
- data/spec/unit_tests/build_queue_spec.rb +4 -0
- data/spec/unit_tests/client_spec.rb +2 -36
- data/spec/unit_tests/job_spec.rb +48 -5
- data/spec/unit_tests/node_spec.rb +4 -7
- data/spec/unit_tests/spec_helper.rb +1 -0
- data/spec/unit_tests/system_spec.rb +15 -2
- data/spec/unit_tests/view_spec.rb +11 -7
- data/travis/jenkins_config_with_crumb.xml +67 -0
- data/travis/setup_crumb.sh +11 -0
- data/travis/spec.yml +4 -0
- metadata +158 -140
data/spec/unit_tests/job_spec.rb
CHANGED
@@ -5,7 +5,9 @@ describe JenkinsApi::Client::Job do
|
|
5
5
|
context "With properly initialized Client and all methods defined" do
|
6
6
|
|
7
7
|
before do
|
8
|
+
mock_logger = Logger.new "/dev/null"
|
8
9
|
@client = mock
|
10
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
9
11
|
@job = JenkinsApi::Client::Job.new(@client)
|
10
12
|
@sample_json_response = {
|
11
13
|
"jobs" => [
|
@@ -134,6 +136,21 @@ describe JenkinsApi::Client::Job do
|
|
134
136
|
end
|
135
137
|
end
|
136
138
|
|
139
|
+
describe "#copy" do
|
140
|
+
it "accepts the from and to job names and copies the from job to the to job" do
|
141
|
+
@client.should_receive(:api_post_request).with(
|
142
|
+
"/createItem?name=new_job&mode=copy&from=old_job"
|
143
|
+
)
|
144
|
+
@job.copy("old_job", "new_job")
|
145
|
+
end
|
146
|
+
it "accepts the from job name and copies the from job to the copy_of_from job" do
|
147
|
+
@client.should_receive(:api_post_request).with(
|
148
|
+
"/createItem?name=copy_of_old_job&mode=copy&from=old_job"
|
149
|
+
)
|
150
|
+
@job.copy("old_job")
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
137
154
|
describe "#add_email_notification" do
|
138
155
|
it "accepts email address and adds to existing job" do
|
139
156
|
params = {
|
@@ -182,6 +199,15 @@ describe JenkinsApi::Client::Job do
|
|
182
199
|
end
|
183
200
|
end
|
184
201
|
|
202
|
+
describe "#wipe_out_workspace" do
|
203
|
+
it "accepts the job name and wipes out the workspace of the job" do
|
204
|
+
@client.should_receive(:api_post_request).with(
|
205
|
+
"/job/test_job/doWipeOutWorkspace"
|
206
|
+
)
|
207
|
+
@job.wipe_out_workspace('test_job')
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
185
211
|
describe "#stop_build" do
|
186
212
|
it "accepts the job name and build number and stops the build" do
|
187
213
|
@client.should_receive(:api_get_request).twice.and_return(
|
@@ -330,13 +356,32 @@ describe JenkinsApi::Client::Job do
|
|
330
356
|
describe "#build" do
|
331
357
|
it "accepts the job name and builds the job" do
|
332
358
|
@client.should_receive(:api_post_request).with(
|
333
|
-
"/job/test_job/build").and_return(302)
|
359
|
+
"/job/test_job/build", {}, false).and_return(302)
|
334
360
|
@job.build("test_job").should == 302
|
335
361
|
end
|
336
362
|
it "accepts the job name with params and builds the job" do
|
337
363
|
@client.should_receive(:api_post_request).with(
|
338
|
-
|
339
|
-
|
364
|
+
"/job/test_job/buildWithParameters",
|
365
|
+
{:branch => 'feature/new-stuff'},
|
366
|
+
false
|
367
|
+
).and_return(302)
|
368
|
+
@job.build("test_job", {:branch => 'feature/new-stuff'}).should == 302
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
describe "#enable" do
|
373
|
+
it "accepts the job name and enables the job" do
|
374
|
+
@client.should_receive(:api_post_request).with(
|
375
|
+
"/job/test_job/enable").and_return(302)
|
376
|
+
@job.enable("test_job").should == 302
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
describe "#disable" do
|
381
|
+
it "accepts the job name and disables the job" do
|
382
|
+
@client.should_receive(:api_post_request).with(
|
383
|
+
"/job/test_job/disable").and_return(302)
|
384
|
+
@job.disable("test_job").should == 302
|
340
385
|
end
|
341
386
|
end
|
342
387
|
|
@@ -419,7 +464,6 @@ describe JenkinsApi::Client::Job do
|
|
419
464
|
|
420
465
|
describe "#unchain" do
|
421
466
|
it "accepts the job names and unchains them" do
|
422
|
-
@client.should_receive(:debug).and_return(false)
|
423
467
|
@client.should_receive(:get_config).with(
|
424
468
|
"/job/test_job").and_return(@sample_job_xml)
|
425
469
|
@client.should_receive(:post_config)
|
@@ -429,7 +473,6 @@ describe JenkinsApi::Client::Job do
|
|
429
473
|
|
430
474
|
describe "#chain" do
|
431
475
|
it "accepts the job names and other options and chains them" do
|
432
|
-
@client.should_receive(:debug).and_return(false)
|
433
476
|
@client.should_receive(:get_config).with(
|
434
477
|
"/job/test_job").and_return(@sample_job_xml)
|
435
478
|
@client.should_receive(:post_config)
|
@@ -4,6 +4,8 @@ describe JenkinsApi::Client::Node do
|
|
4
4
|
context "With properly initialized Client" do
|
5
5
|
before do
|
6
6
|
@client = mock
|
7
|
+
mock_logger = Logger.new "/dev/null"
|
8
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
7
9
|
@node = JenkinsApi::Client::Node.new(@client)
|
8
10
|
@sample_json_computer_response = {
|
9
11
|
"computer" => [
|
@@ -20,6 +22,8 @@ describe JenkinsApi::Client::Node do
|
|
20
22
|
|
21
23
|
describe "#initialize" do
|
22
24
|
it "initializes by receiving an instance of client object" do
|
25
|
+
mock_logger = Logger.new "/dev/null"
|
26
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
23
27
|
expect(
|
24
28
|
lambda{ JenkinsApi::Client::Node.new(@client) }
|
25
29
|
).not_to raise_error
|
@@ -28,13 +32,6 @@ describe JenkinsApi::Client::Node do
|
|
28
32
|
|
29
33
|
describe "#create_dump_slave" do
|
30
34
|
it "creates a dump slave by accepting required params" do
|
31
|
-
@client.should_receive(
|
32
|
-
:api_get_request
|
33
|
-
).with(
|
34
|
-
"/computer"
|
35
|
-
).and_return(
|
36
|
-
@sample_json_computer_response
|
37
|
-
)
|
38
35
|
@client.should_receive(:api_post_request).and_return("302")
|
39
36
|
@node.create_dump_slave(
|
40
37
|
:name => "test_slave",
|
@@ -3,13 +3,21 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
3
3
|
describe JenkinsApi::Client::System do
|
4
4
|
context "With properly initialized Client" do
|
5
5
|
before do
|
6
|
+
mock_logger = Logger.new "/dev/null"
|
7
|
+
mock_timeout = 300
|
6
8
|
@client = mock
|
9
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
10
|
+
@client.should_receive(:timeout).and_return(mock_timeout)
|
7
11
|
@system = JenkinsApi::Client::System.new(@client)
|
8
12
|
end
|
9
13
|
|
10
14
|
describe "InstanceMethods" do
|
11
15
|
describe "#initialize" do
|
12
16
|
it "initializes by receiving an instance of client object" do
|
17
|
+
mock_logger = Logger.new "/dev/null"
|
18
|
+
mock_timeout = 300
|
19
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
20
|
+
@client.should_receive(:timeout).and_return(mock_timeout)
|
13
21
|
expect(
|
14
22
|
lambda{ JenkinsApi::Client::System.new(@client) }
|
15
23
|
).not_to raise_error
|
@@ -48,11 +56,16 @@ describe JenkinsApi::Client::System do
|
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
59
|
+
describe "#list_users" do
|
60
|
+
it "sends a request to list the users" do
|
61
|
+
@client.should_receive(:api_get_request).with("/asynchPeople")
|
62
|
+
@system.list_users
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
51
66
|
describe "#wait_for_ready" do
|
52
67
|
it "exits if the response body doesn't have the wait message" do
|
53
68
|
@client.should_receive(:get_root).and_return(Net::HTTP.get_response(URI('http://example.com/index.html')))
|
54
|
-
@client.should_receive(:debug)
|
55
|
-
@client.should_receive(:timeout)
|
56
69
|
@system.wait_for_ready
|
57
70
|
end
|
58
71
|
end
|
@@ -3,7 +3,9 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
3
3
|
describe JenkinsApi::Client::View do
|
4
4
|
context "With properly initialized Client" do
|
5
5
|
before do
|
6
|
+
mock_logger = Logger.new "/dev/null"
|
6
7
|
@client = mock
|
8
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
7
9
|
@view = JenkinsApi::Client::View.new(@client)
|
8
10
|
@sample_views_json = {
|
9
11
|
"views" => [
|
@@ -22,6 +24,8 @@ describe JenkinsApi::Client::View do
|
|
22
24
|
describe "InstanceMethods" do
|
23
25
|
describe "#initialize" do
|
24
26
|
it "initializes by receiving an instane of client object" do
|
27
|
+
mock_logger = Logger.new "/dev/null"
|
28
|
+
@client.should_receive(:logger).and_return(mock_logger)
|
25
29
|
expect(
|
26
30
|
lambda { JenkinsApi::Client::View.new(@client) }
|
27
31
|
).not_to raise_error
|
@@ -44,21 +48,21 @@ describe JenkinsApi::Client::View do
|
|
44
48
|
|
45
49
|
describe "#list" do
|
46
50
|
it "lists all views" do
|
47
|
-
@client.should_receive(:api_get_request).with("
|
51
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
48
52
|
response = @view.list
|
49
53
|
response.class.should == Array
|
50
54
|
response.size.should == 2
|
51
55
|
end
|
52
56
|
|
53
57
|
it "lists views matching specific filter" do
|
54
|
-
@client.should_receive(:api_get_request).with("
|
58
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
55
59
|
response = @view.list("test_view2")
|
56
60
|
response.class.should == Array
|
57
61
|
response.size.should == 1
|
58
62
|
end
|
59
63
|
|
60
64
|
it "lists views matching specific filter and matches case" do
|
61
|
-
@client.should_receive(:api_get_request).with("
|
65
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
62
66
|
response = @view.list("TEST_VIEW", false)
|
63
67
|
response.class.should == Array
|
64
68
|
response.size.should == 0
|
@@ -67,19 +71,19 @@ describe JenkinsApi::Client::View do
|
|
67
71
|
|
68
72
|
describe "#exists?" do
|
69
73
|
it "returns true a view that exists" do
|
70
|
-
@client.should_receive(:api_get_request).with("
|
74
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
71
75
|
@view.exists?("test_view2").should == true
|
72
76
|
end
|
73
77
|
|
74
78
|
it "returns false for non-existent view" do
|
75
|
-
@client.should_receive(:api_get_request).with("
|
79
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
76
80
|
@view.exists?("i_am_not_there").should == false
|
77
81
|
end
|
78
82
|
end
|
79
83
|
|
80
84
|
describe "#list_jobs" do
|
81
85
|
it "lists all jobs in the given view" do
|
82
|
-
@client.should_receive(:api_get_request).with("
|
86
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
83
87
|
@client.should_receive(:api_get_request).with("/view/test_view").and_return(@sample_view_json)
|
84
88
|
response = @view.list_jobs("test_view")
|
85
89
|
response.class.should == Array
|
@@ -87,7 +91,7 @@ describe JenkinsApi::Client::View do
|
|
87
91
|
end
|
88
92
|
|
89
93
|
it "raises an error if called on a non-existent view" do
|
90
|
-
@client.should_receive(:api_get_request).with("
|
94
|
+
@client.should_receive(:api_get_request).with("").and_return(@sample_views_json)
|
91
95
|
expect(
|
92
96
|
lambda { @view.list_jobs("i_am_not_there") }
|
93
97
|
).to raise_error
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
+
<hudson>
|
3
|
+
<disabledAdministrativeMonitors/>
|
4
|
+
<version>1.517</version>
|
5
|
+
<numExecutors>10</numExecutors>
|
6
|
+
<mode>NORMAL</mode>
|
7
|
+
<useSecurity>true</useSecurity>
|
8
|
+
<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
|
9
|
+
<permission>hudson.model.Computer.Configure:testuser</permission>
|
10
|
+
<permission>hudson.model.Computer.Connect:testuser</permission>
|
11
|
+
<permission>hudson.model.Computer.Create:testuser</permission>
|
12
|
+
<permission>hudson.model.Computer.Delete:testuser</permission>
|
13
|
+
<permission>hudson.model.Computer.Disconnect:testuser</permission>
|
14
|
+
<permission>hudson.model.Hudson.Administer:testuser</permission>
|
15
|
+
<permission>hudson.model.Hudson.ConfigureUpdateCenter:testuser</permission>
|
16
|
+
<permission>hudson.model.Hudson.Read:testuser</permission>
|
17
|
+
<permission>hudson.model.Hudson.RunScripts:testuser</permission>
|
18
|
+
<permission>hudson.model.Hudson.UploadPlugins:testuser</permission>
|
19
|
+
<permission>hudson.model.Item.Build:testuser</permission>
|
20
|
+
<permission>hudson.model.Item.Cancel:testuser</permission>
|
21
|
+
<permission>hudson.model.Item.Configure:testuser</permission>
|
22
|
+
<permission>hudson.model.Item.Create:testuser</permission>
|
23
|
+
<permission>hudson.model.Item.Delete:testuser</permission>
|
24
|
+
<permission>hudson.model.Item.Discover:testuser</permission>
|
25
|
+
<permission>hudson.model.Item.Read:testuser</permission>
|
26
|
+
<permission>hudson.model.Item.Workspace:testuser</permission>
|
27
|
+
<permission>hudson.model.View.Configure:testuser</permission>
|
28
|
+
<permission>hudson.model.View.Create:testuser</permission>
|
29
|
+
<permission>hudson.model.View.Delete:testuser</permission>
|
30
|
+
<permission>hudson.model.View.Read:testuser</permission>
|
31
|
+
</authorizationStrategy>
|
32
|
+
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
|
33
|
+
<disableSignup>false</disableSignup>
|
34
|
+
<enableCaptcha>false</enableCaptcha>
|
35
|
+
</securityRealm>
|
36
|
+
<projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
|
37
|
+
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
|
38
|
+
<buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
|
39
|
+
<markupFormatter class="hudson.markup.RawHtmlMarkupFormatter">
|
40
|
+
<disableSyntaxHighlighting>false</disableSyntaxHighlighting>
|
41
|
+
</markupFormatter>
|
42
|
+
<jdks/>
|
43
|
+
<viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
|
44
|
+
<myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
|
45
|
+
<clouds/>
|
46
|
+
<slaves/>
|
47
|
+
<quietPeriod>5</quietPeriod>
|
48
|
+
<scmCheckoutRetryCount>0</scmCheckoutRetryCount>
|
49
|
+
<views>
|
50
|
+
<hudson.model.AllView>
|
51
|
+
<owner class="hudson" reference="../../.."/>
|
52
|
+
<name>All</name>
|
53
|
+
<filterExecutors>false</filterExecutors>
|
54
|
+
<filterQueue>false</filterQueue>
|
55
|
+
<properties class="hudson.model.View$PropertyList"/>
|
56
|
+
</hudson.model.AllView>
|
57
|
+
</views>
|
58
|
+
<primaryView>All</primaryView>
|
59
|
+
<slaveAgentPort>0</slaveAgentPort>
|
60
|
+
<label></label>
|
61
|
+
<crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
|
62
|
+
<excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
|
63
|
+
<PROXY__HEADER>X-Forwarded-For</PROXY__HEADER>
|
64
|
+
</crumbIssuer>
|
65
|
+
<nodeProperties/>
|
66
|
+
<globalNodeProperties/>
|
67
|
+
</hudson>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# Replace jenkins configuration file with crumb enabled
|
4
|
+
sudo cp -f travis/jenkins_config_with_crumb.xml /var/lib/jenkins/config.xml
|
5
|
+
# Restart jenkins for the new configuration to take effect
|
6
|
+
sudo service jenkins restart
|
7
|
+
# Jenkins takes a bit to get ready - so wait
|
8
|
+
sleep 60
|
9
|
+
echo `sudo service jenkins status`
|
10
|
+
|
11
|
+
echo "Crumbs support is enabled on jenkins"
|
data/travis/spec.yml
CHANGED
metadata
CHANGED
@@ -1,162 +1,182 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenkins_api_client
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 12
|
8
|
-
- 1
|
9
|
-
version: 0.12.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.13.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Kannan Manickam
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
requirements:
|
12
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nokogiri
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
24
19
|
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
segments:
|
27
|
-
- 1
|
28
|
-
- 5
|
29
|
-
- 0
|
20
|
+
- !ruby/object:Gem::Version
|
30
21
|
version: 1.5.0
|
31
|
-
name: nokogiri
|
32
|
-
requirement: *id001
|
33
|
-
prerelease: false
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
segments:
|
41
|
-
- 0
|
42
|
-
- 16
|
43
|
-
- 0
|
44
|
-
version: 0.16.0
|
45
|
-
name: thor
|
46
|
-
requirement: *id002
|
47
23
|
prerelease: false
|
48
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: thor
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.16.0
|
49
38
|
type: :runtime
|
50
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
segments:
|
55
|
-
- 0
|
56
|
-
version: "0"
|
57
|
-
name: json
|
58
|
-
requirement: *id003
|
59
39
|
prerelease: false
|
60
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.16.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: json
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
61
54
|
type: :runtime
|
62
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
segments:
|
67
|
-
- 1
|
68
|
-
- 4
|
69
|
-
- 0
|
70
|
-
version: 1.4.0
|
71
|
-
name: terminal-table
|
72
|
-
requirement: *id004
|
73
55
|
prerelease: false
|
74
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: terminal-table
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.4.0
|
75
70
|
type: :runtime
|
76
|
-
|
77
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.4.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: mixlib-shellout
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
78
83
|
- - ~>
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 1
|
82
|
-
- 1
|
83
|
-
- 0
|
84
|
+
- !ruby/object:Gem::Version
|
84
85
|
version: 1.1.0
|
85
|
-
|
86
|
-
requirement: *id005
|
86
|
+
type: :runtime
|
87
87
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
- 1
|
96
|
-
- 0
|
97
|
-
version: "1.0"
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.1.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
98
95
|
name: bundler
|
99
|
-
requirement:
|
100
|
-
|
101
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '1.0'
|
102
102
|
type: :development
|
103
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
104
|
-
requirements:
|
105
|
-
- - ">="
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
segments:
|
108
|
-
- 1
|
109
|
-
- 6
|
110
|
-
- 4
|
111
|
-
version: 1.6.4
|
112
|
-
name: jeweler
|
113
|
-
requirement: *id007
|
114
103
|
prerelease: false
|
115
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: jeweler
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.6.4
|
116
118
|
type: :development
|
117
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
118
|
-
requirements:
|
119
|
-
- - ">="
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
segments:
|
122
|
-
- 0
|
123
|
-
version: "0"
|
124
|
-
name: simplecov
|
125
|
-
requirement: *id008
|
126
119
|
prerelease: false
|
127
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.6.4
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: simplecov
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
128
134
|
type: :development
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
version:
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
136
143
|
name: rspec
|
137
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
138
151
|
prerelease: false
|
139
|
-
|
140
|
-
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
description: ! '
|
159
|
+
|
141
160
|
This is a simple and easy-to-use Jenkins Api client with features focused on
|
142
|
-
|
143
|
-
|
161
|
+
|
162
|
+
automating Job configuration programaticaly and so forth'
|
163
|
+
email:
|
144
164
|
- arangamani.kannan@gmail.com
|
145
|
-
executables:
|
165
|
+
executables:
|
146
166
|
- jenkinscli
|
147
167
|
extensions: []
|
148
|
-
|
149
168
|
extra_rdoc_files: []
|
150
|
-
|
151
|
-
files:
|
169
|
+
files:
|
152
170
|
- .gitignore
|
153
171
|
- .jenkins.yml
|
154
172
|
- .travis.yml
|
155
173
|
- CHANGELOG.md
|
174
|
+
- CONTRIBUTORS.md
|
156
175
|
- Gemfile
|
157
176
|
- LICENCE
|
158
177
|
- README.md
|
159
178
|
- Rakefile
|
179
|
+
- Vagrantfile
|
160
180
|
- bin/jenkinscli
|
161
181
|
- config/login.yml.example
|
162
182
|
- java_deps/jenkins-cli.jar
|
@@ -192,38 +212,36 @@ files:
|
|
192
212
|
- spec/unit_tests/system_spec.rb
|
193
213
|
- spec/unit_tests/view_spec.rb
|
194
214
|
- travis/jenkins_config.xml
|
215
|
+
- travis/jenkins_config_with_crumb.xml
|
195
216
|
- travis/setup.sh
|
217
|
+
- travis/setup_crumb.sh
|
196
218
|
- travis/spec.yml
|
197
219
|
- travis/user_config.xml
|
198
|
-
has_rdoc: true
|
199
220
|
homepage: https://github.com/arangamani/jenkins_api_client
|
200
221
|
licenses: []
|
201
|
-
|
202
222
|
post_install_message:
|
203
223
|
rdoc_options: []
|
204
|
-
|
205
|
-
require_paths:
|
224
|
+
require_paths:
|
206
225
|
- lib
|
207
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
|
-
requirements:
|
216
|
-
- - ">="
|
217
|
-
- !ruby/object:Gem::Version
|
218
|
-
segments:
|
226
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
227
|
+
none: false
|
228
|
+
requirements:
|
229
|
+
- - ! '>='
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
segments:
|
219
233
|
- 0
|
220
|
-
|
234
|
+
hash: -361033053725942213
|
235
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
none: false
|
237
|
+
requirements:
|
238
|
+
- - ! '>='
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: '0'
|
221
241
|
requirements: []
|
222
|
-
|
223
242
|
rubyforge_project:
|
224
|
-
rubygems_version: 1.
|
243
|
+
rubygems_version: 1.8.23
|
225
244
|
signing_key:
|
226
245
|
specification_version: 3
|
227
246
|
summary: Jenkins JSON API Client
|
228
247
|
test_files: []
|
229
|
-
|