improved_jenkins_client 1.6.3 → 1.6.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bd76b52cc0145e53f5fff5e80ff895350f890c84a284ffad8362c574804533f
4
- data.tar.gz: 11589a77612dd8caef6da7a762a3e5626d0cbaa3b283ec73ce37d23398d87d9d
3
+ metadata.gz: d0b836a0050b0fac502e19aaa527a175e98cd33f92f3c1b450f9616136140c08
4
+ data.tar.gz: 4b49c8cd16ba499e768fbdea346ff08e607597012de67c226cc3b515e4bfa729
5
5
  SHA512:
6
- metadata.gz: 4a5af1612b767ec3a8fa2321f0f81a2b3b3e41881f2c99d272db0aa77b9a3e3262648bab9a86b47a70bade5f5188a5f5465968185a9512b6755864e7341b3ec0
7
- data.tar.gz: cc0e7ad61dc9849bf93f41083bb255e52e26d0a641472cd4fdfd412fa0bca52b61b14de265d52912591cce9496a4336ef526c4a094e0ade26625567f67e9d561
6
+ metadata.gz: 2e4f9929f81880760be739a58ddda8475d70caa1a330c896aedd5cdef80ce53e464c0556843fa33fc7d4f1d9e353bf05d18e021cef68c1032ed99577bbe60e69
7
+ data.tar.gz: 29a6315717c1e4f57d6eaae520a37a6b804aea07c990cc7751030113615e409800a0a672b790024bcb0bf2dfac33bfb9c8739b17a1e6e2051e0b9d0d6627d26c
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{lib/|bin/|java_deps/|gemspec}) }
21
21
  s.require_paths = ['lib']
22
22
  s.homepage = 'https://github.com/yugabyte-db/improved_jenkins_client'
23
- s.required_ruby_version = ::Gem::Requirement.new('~> 2.1')
23
+ s.required_ruby_version = ::Gem::Requirement.new('>= 2.1')
24
24
  s.rubygems_version = "2.4.5.1"
25
25
  s.summary = "Improved Jenkins JSON API Client"
26
26
  s.licenses = ["MIT"]
@@ -257,6 +257,13 @@ module JenkinsApi
257
257
  stuck
258
258
  end
259
259
 
260
+ # Cancel the given task
261
+ #
262
+ # @param [String] task_id the task id
263
+ def cancel_item(task_id)
264
+ @client.api_post_request("/queue/cancelItem?id=#{task_id}")
265
+ end
266
+
260
267
  end
261
268
  end
262
269
  end
@@ -72,7 +72,8 @@ module JenkinsApi
72
72
  "ca_file",
73
73
  "follow_redirects",
74
74
  "identity_file",
75
- "cookies"
75
+ "cookies",
76
+ "pretty_json_responses"
76
77
  ].freeze
77
78
 
78
79
  # Initialize a Client object with Jenkins CI server credentials
@@ -106,6 +107,7 @@ module JenkinsApi
106
107
  # @option args [Fixnum] :log_level (Logger::INFO) The level for messages to be logged. Should be one of:
107
108
  # Logger::DEBUG (0), Logger::INFO (1), Logger::WARN (2), Logger::ERROR (2), Logger::FATAL (3)
108
109
  # @option args [String] :cookies Cookies to be sent with all requests in the format: name=value; name2=value2
110
+ # @option args [Boolean] :pretty_json_responses Whether to append pretty=true to most JSON GET requests.
109
111
  #
110
112
  # @return [JenkinsApi::Client] a client object to Jenkins API
111
113
  #
@@ -415,18 +417,26 @@ module JenkinsApi
415
417
  raw_response = false)
416
418
  url_prefix = "#{@jenkins_path}#{url_prefix}"
417
419
  to_get = ""
420
+
421
+
418
422
  if tree
419
423
  to_get = "#{url_prefix}#{url_suffix}?#{tree}"
424
+ query_param_separator = "&"
420
425
  else
421
426
  to_get = "#{url_prefix}#{url_suffix}"
427
+ query_param_separator = "?"
428
+ end
429
+ if @pretty_json_responses && url_suffix == "/api/json"
430
+ to_get += query_param_separator
431
+ to_get += "pretty=true"
422
432
  end
423
433
  request = Net::HTTP::Get.new(to_get)
424
434
  @logger.debug "GET #{to_get}"
425
435
  response = make_http_request(request)
426
436
  if raw_response
427
- handle_exception(response, "raw")
437
+ handle_exception(response, "raw", full_url: to_get)
428
438
  else
429
- handle_exception(response, "body", url_suffix =~ /json/)
439
+ handle_exception(response, "body", url_suffix =~ /json/, full_url: to_get)
430
440
  end
431
441
  end
432
442
 
@@ -797,14 +807,25 @@ module JenkinsApi
797
807
  # @raise [Exceptions::ApiException] Any other exception returned from
798
808
  # Jenkins that are not categorized in the API Client.
799
809
  #
800
- def handle_exception(response, to_send = "code", send_json = false)
801
- msg = "HTTP Code: #{response.code}, Response Body: #{response.body}"
802
- @logger.debug msg
803
- case response.code.to_i
810
+ def handle_exception(response, to_send = "code", send_json = false, full_url: nil)
811
+ msg = "HTTP Code: #{response.code} "
812
+
813
+ msg += ", URL: #{full_url}" unless full_url.nil?
814
+
815
+ if @logger.level <= Logger::DEBUG
816
+ @logger.debug "#{msg}; Response Body: #{response.body}"
817
+ end
818
+ response_code = response.code.to_i
819
+ if response_code >= 400
820
+ @logger.warn msg
821
+ end
822
+
823
+ case response_code
804
824
  # As of Jenkins version 1.519, the job builds return a 201 status code
805
825
  # with a Location HTTP header with the pointing the URL of the item in
806
826
  # the queue.
807
- when 200, 201, 302
827
+ #
828
+ when 200, 201, 204, 302
808
829
  if to_send == "body" && send_json
809
830
  return JSON.parse(response.body)
810
831
  elsif to_send == "body"
@@ -817,7 +838,7 @@ module JenkinsApi
817
838
  when 400
818
839
  matched = response.body.match(/<p>(.*)<\/p>/)
819
840
  api_message = matched[1] unless matched.nil?
820
- @logger.debug "API message: #{api_message}"
841
+ @logger.warn "API message: #{api_message}"
821
842
  case api_message
822
843
  when /A job already exists with the name/
823
844
  raise Exceptions::JobAlreadyExists.new(@logger, api_message)
@@ -839,7 +860,7 @@ module JenkinsApi
839
860
  when 500
840
861
  matched = response.body.match(/Exception: (.*)<br>/)
841
862
  api_message = matched[1] unless matched.nil?
842
- @logger.debug "API message: #{api_message}"
863
+ @logger.warn "API message: #{api_message}"
843
864
  raise Exceptions::InternalServerError.new(@logger, api_message)
844
865
  when 503
845
866
  raise Exceptions::ServiceUnavailable.new @logger
@@ -723,7 +723,7 @@ module JenkinsApi
723
723
  # @param [String] job_name
724
724
  #
725
725
  def get_builds(job_name, options = {})
726
- @logger.info "Obtaining the build details of '#{job_name}'"
726
+ @logger.info "Obtaining the builds of job '#{job_name}'"
727
727
  url = "/job/#{path_encode job_name}"
728
728
 
729
729
  tree = options[:tree]
@@ -27,7 +27,7 @@ module JenkinsApi
27
27
  # Minor version of the gem
28
28
  MINOR = 6
29
29
  # Tiny version of the gem used for patches
30
- TINY = 3
30
+ TINY = 7
31
31
  # Used for pre-releases
32
32
  PRE = nil
33
33
  # Version String of Jenkins API Client.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: improved_jenkins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.3
4
+ version: 1.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kannan Manickam (the original jenkins_api_client gem)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-10-22 00:00:00.000000000 Z
12
+ date: 2021-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -156,7 +156,7 @@ require_paths:
156
156
  - lib
157
157
  required_ruby_version: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - "~>"
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '2.1'
162
162
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -165,7 +165,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  requirements: []
168
- rubygems_version: 3.1.4
168
+ rubyforge_project:
169
+ rubygems_version: 2.7.6.3
169
170
  signing_key:
170
171
  specification_version: 4
171
172
  summary: Improved Jenkins JSON API Client