jenkins_api_client 0.3.1 → 0.3.2
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/lib/jenkins_api_client/cli/job.rb +13 -1
- data/lib/jenkins_api_client/job.rb +27 -0
- data/lib/jenkins_api_client/system.rb +1 -1
- data/lib/jenkins_api_client/version.rb +1 -1
- data/spec/job_spec.rb +13 -0
- metadata +166 -162
@@ -30,16 +30,28 @@ module JenkinsApi
|
|
30
30
|
include Thor::Actions
|
31
31
|
|
32
32
|
desc "list", "List jobs"
|
33
|
+
method_option :status, :aliases => "-t", :desc => "Status to filter"
|
33
34
|
method_option :filter, :aliases => "-f", :desc => "Regular expression to filter jobs"
|
34
35
|
def list
|
35
36
|
@client = Helper.setup(parent_options)
|
36
|
-
if options[:filter]
|
37
|
+
if options[:filter] && options[:status]
|
38
|
+
name_filtered = @client.job.list(options[:filter])
|
39
|
+
puts @client.job.list_by_status(options[:status], name_filtered)
|
40
|
+
elsif options[:filter]
|
37
41
|
puts @client.job.list(options[:filter])
|
42
|
+
elsif options[:status]
|
43
|
+
puts @client.job.list_by_status(options[:status])
|
38
44
|
else
|
39
45
|
puts @client.job.list_all
|
40
46
|
end
|
41
47
|
end
|
42
48
|
|
49
|
+
desc "recreate JOB", "Recreate a specified job"
|
50
|
+
def recreate(job)
|
51
|
+
@client = Helper.setup(parent_options)
|
52
|
+
@client.job.recreate(job)
|
53
|
+
end
|
54
|
+
|
43
55
|
desc "build JOB", "Build a job"
|
44
56
|
def build(job)
|
45
57
|
@client = Helper.setup(parent_options)
|
@@ -53,6 +53,17 @@ module JenkinsApi
|
|
53
53
|
@client.api_post_request("/job/#{job_name}/doDelete")
|
54
54
|
end
|
55
55
|
|
56
|
+
# Re-create the same job
|
57
|
+
# This is a hack to clear any existing builds
|
58
|
+
#
|
59
|
+
# @param [String] job_name
|
60
|
+
#
|
61
|
+
def recreate(job_name)
|
62
|
+
job_xml = get_config(job_name)
|
63
|
+
delete(job_name)
|
64
|
+
create(job_name, job_xml)
|
65
|
+
end
|
66
|
+
|
56
67
|
# List all jobs on the Jenkins CI server
|
57
68
|
#
|
58
69
|
def list_all
|
@@ -64,6 +75,22 @@ module JenkinsApi
|
|
64
75
|
jobs.sort!
|
65
76
|
end
|
66
77
|
|
78
|
+
# List all Jobs matching the given status
|
79
|
+
# You can optionally pass in jobs list to filter the status from
|
80
|
+
#
|
81
|
+
# @param [String] status
|
82
|
+
# @param [Array] jobs
|
83
|
+
#
|
84
|
+
def list_by_status(status, jobs = [])
|
85
|
+
jobs = list_all if jobs.empty?
|
86
|
+
xml_response = @client.api_get_request("", "tree=jobs[name,color]")
|
87
|
+
filtered_jobs = []
|
88
|
+
xml_response["jobs"].each { |job|
|
89
|
+
filtered_jobs << job["name"] if color_to_status(job["color"]) == status && jobs.include?(job["name"])
|
90
|
+
}
|
91
|
+
filtered_jobs
|
92
|
+
end
|
93
|
+
|
67
94
|
# List all jobs that match the given regex
|
68
95
|
#
|
69
96
|
# @param [String] filter - a regex
|
@@ -72,7 +72,7 @@ module JenkinsApi
|
|
72
72
|
response = @client.get_root
|
73
73
|
puts "[INFO] Waiting for jenkins to restart..." if @client.debug
|
74
74
|
if (response.body =~ /Please wait while Jenkins is restarting/ || response.body =~ /Please wait while Jenkins is getting ready to work/)
|
75
|
-
sleep
|
75
|
+
sleep 30
|
76
76
|
redo
|
77
77
|
else
|
78
78
|
return true
|
data/spec/job_spec.rb
CHANGED
@@ -38,6 +38,10 @@ describe JenkinsApi::Client::Job do
|
|
38
38
|
@client.job.create("some_random_nonexistent_job", xml).to_i.should == 200
|
39
39
|
end
|
40
40
|
|
41
|
+
it "Should be able to re-create a job" do
|
42
|
+
@client.job.recreate("some_random_nonexistent_job").to_i.should == 200
|
43
|
+
end
|
44
|
+
|
41
45
|
it "Should be able to change the description of a job" do
|
42
46
|
@client.job.change_description("some_random_nonexistent_job", "The description has been changed by the spec test").to_i.should == 200
|
43
47
|
end
|
@@ -58,6 +62,15 @@ describe JenkinsApi::Client::Job do
|
|
58
62
|
}
|
59
63
|
end
|
60
64
|
|
65
|
+
it "Should be able to list jobs by status" do
|
66
|
+
names = @client.job.list('success')
|
67
|
+
names.class.should == Array
|
68
|
+
names.each do |name|
|
69
|
+
status = @client.job.get_current_build_status(name)
|
70
|
+
status.should == 'success'
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
61
74
|
it "Should return all job names with details" do
|
62
75
|
@client.job.list_all_with_details.class.should == Array
|
63
76
|
end
|
metadata
CHANGED
@@ -1,189 +1,186 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenkins_api_client
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Kannan Manickam
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
17
|
+
|
18
|
+
date: 2012-11-18 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
23
21
|
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: activesupport
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 3.2.8
|
38
22
|
type: :runtime
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
version_requirements: *id001
|
33
|
+
name: nokogiri
|
34
|
+
- !ruby/object:Gem::Dependency
|
39
35
|
prerelease: false
|
40
|
-
|
36
|
+
type: :runtime
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
38
|
none: false
|
42
|
-
requirements:
|
39
|
+
requirements:
|
43
40
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 31
|
43
|
+
segments:
|
44
|
+
- 3
|
45
|
+
- 2
|
46
|
+
- 8
|
45
47
|
version: 3.2.8
|
46
|
-
|
47
|
-
name:
|
48
|
-
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 0.16.0
|
54
|
-
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
name: activesupport
|
50
|
+
- !ruby/object:Gem::Dependency
|
55
51
|
prerelease: false
|
56
|
-
|
52
|
+
type: :runtime
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
54
|
none: false
|
58
|
-
requirements:
|
55
|
+
requirements:
|
59
56
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 95
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 16
|
62
|
+
- 0
|
61
63
|
version: 0.16.0
|
62
|
-
|
63
|
-
name:
|
64
|
-
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :runtime
|
64
|
+
version_requirements: *id003
|
65
|
+
name: thor
|
66
|
+
- !ruby/object:Gem::Dependency
|
71
67
|
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: terminal-table
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 1.4.0
|
86
68
|
type: :runtime
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
version_requirements: *id004
|
79
|
+
name: json
|
80
|
+
- !ruby/object:Gem::Dependency
|
87
81
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
82
|
+
type: :runtime
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 7
|
89
|
+
segments:
|
90
|
+
- 1
|
91
|
+
- 4
|
92
|
+
- 0
|
93
93
|
version: 1.4.0
|
94
|
-
|
95
|
-
name:
|
96
|
-
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '1.0'
|
102
|
-
type: :development
|
94
|
+
version_requirements: *id005
|
95
|
+
name: terminal-table
|
96
|
+
- !ruby/object:Gem::Dependency
|
103
97
|
prerelease: false
|
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
|
118
98
|
type: :development
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 15
|
105
|
+
segments:
|
106
|
+
- 1
|
107
|
+
- 0
|
108
|
+
version: "1.0"
|
109
|
+
version_requirements: *id006
|
110
|
+
name: bundler
|
111
|
+
- !ruby/object:Gem::Dependency
|
119
112
|
prerelease: false
|
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: builder
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ~>
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: 3.1.3
|
134
113
|
type: :development
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 7
|
120
|
+
segments:
|
121
|
+
- 1
|
122
|
+
- 6
|
123
|
+
- 4
|
124
|
+
version: 1.6.4
|
125
|
+
version_requirements: *id007
|
126
|
+
name: jeweler
|
127
|
+
- !ruby/object:Gem::Dependency
|
135
128
|
prerelease: false
|
136
|
-
|
129
|
+
type: :development
|
130
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
137
131
|
none: false
|
138
|
-
requirements:
|
132
|
+
requirements:
|
139
133
|
- - ~>
|
140
|
-
- !ruby/object:Gem::Version
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
hash: 5
|
136
|
+
segments:
|
137
|
+
- 3
|
138
|
+
- 1
|
139
|
+
- 3
|
141
140
|
version: 3.1.3
|
142
|
-
|
143
|
-
name:
|
144
|
-
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
|
-
type: :development
|
141
|
+
version_requirements: *id008
|
142
|
+
name: builder
|
143
|
+
- !ruby/object:Gem::Dependency
|
151
144
|
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: rspec
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ! '>='
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
166
145
|
type: :development
|
146
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
version: "0"
|
155
|
+
version_requirements: *id009
|
156
|
+
name: simplecov
|
157
|
+
- !ruby/object:Gem::Dependency
|
167
158
|
prerelease: false
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
159
|
+
type: :development
|
160
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
hash: 3
|
166
|
+
segments:
|
167
|
+
- 0
|
168
|
+
version: "0"
|
169
|
+
version_requirements: *id010
|
170
|
+
name: rspec
|
171
|
+
description: |-
|
172
|
+
|
176
173
|
This is a simple and easy-to-use Jenkins Api client with features focused on
|
177
|
-
|
178
|
-
|
179
|
-
email:
|
174
|
+
automating Job configuration programaticaly and so forth
|
175
|
+
email:
|
180
176
|
- arangamani.kannan@gmail.com
|
181
|
-
executables:
|
177
|
+
executables:
|
182
178
|
- jenkinscli
|
183
179
|
extensions: []
|
184
|
-
|
180
|
+
|
181
|
+
extra_rdoc_files:
|
185
182
|
- CHANGELOG.rdoc
|
186
|
-
files:
|
183
|
+
files:
|
187
184
|
- .gitignore
|
188
185
|
- .travis.yml
|
189
186
|
- CHANGELOG.rdoc
|
@@ -213,29 +210,36 @@ files:
|
|
213
210
|
- spec/system_spec.rb
|
214
211
|
homepage: https://github.com/arangamani/jenkins_api_client
|
215
212
|
licenses: []
|
213
|
+
|
216
214
|
post_install_message:
|
217
215
|
rdoc_options: []
|
218
|
-
|
216
|
+
|
217
|
+
require_paths:
|
219
218
|
- lib
|
220
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
219
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
221
220
|
none: false
|
222
|
-
requirements:
|
223
|
-
- -
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
|
226
|
-
segments:
|
221
|
+
requirements:
|
222
|
+
- - ">="
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
hash: 3
|
225
|
+
segments:
|
227
226
|
- 0
|
228
|
-
|
229
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
|
+
version: "0"
|
228
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
229
|
none: false
|
231
|
-
requirements:
|
232
|
-
- -
|
233
|
-
- !ruby/object:Gem::Version
|
234
|
-
|
230
|
+
requirements:
|
231
|
+
- - ">="
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
hash: 3
|
234
|
+
segments:
|
235
|
+
- 0
|
236
|
+
version: "0"
|
235
237
|
requirements: []
|
238
|
+
|
236
239
|
rubyforge_project:
|
237
240
|
rubygems_version: 1.8.24
|
238
241
|
signing_key:
|
239
242
|
specification_version: 3
|
240
243
|
summary: Jenkins JSON API Client
|
241
244
|
test_files: []
|
245
|
+
|