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.
@@ -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 15
75
+ sleep 30
76
76
  redo
77
77
  else
78
78
  return true
@@ -24,7 +24,7 @@ module JenkinsApi
24
24
  class Client
25
25
  MAJOR = 0
26
26
  MINOR = 3
27
- TINY = 1
27
+ TINY = 2
28
28
  PRE = nil
29
29
  VERSION = [MAJOR, MINOR, TINY, PRE].compact.join('.')
30
30
  end
@@ -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
- version: 0.3.1
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
- date: 2012-11-11 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:
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
47
- name: thor
48
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
63
- name: json
64
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
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
- - !ruby/object:Gem::Dependency
95
- name: bundler
96
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
143
- name: simplecov
144
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- description: ! '
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
- automating Job configuration programaticaly and so forth'
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
- extra_rdoc_files:
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
- require_paths:
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
- version: '0'
226
- segments:
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ hash: 3
225
+ segments:
227
226
  - 0
228
- hash: -2953561023250567894
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
- version: '0'
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
+