improved_jenkins_client 1.6.0 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19904a21383083aac042b3519246181d77b42a0dd70a9d24681c3f1b1f4107eb
4
- data.tar.gz: 59edb7776fff8d492802d16cbc098af2b7caf6143c98f9126a480050fc5aa510
3
+ metadata.gz: 26e682d2f9c008a0943a3ff4d76fdc5a9ea614135eef5ed6f8dfc20c692c1c3d
4
+ data.tar.gz: 4ee3bc91c1cc3e7c86601012de333e79fde95b73e4b828a7c2e899dd28abd3c1
5
5
  SHA512:
6
- metadata.gz: 612ea06785632e4b6392bcd2b8ee6250945f3baa59f96cae4c08fe1b28dbc4d5169ab25a3fb645d857cbac1e59e8561e6617b32625aea626ab505d7a87ce8aa9
7
- data.tar.gz: 7f60050161fb200ef85ecb5d6304830dd6c9f7b339ee4fc16a727b1bcdab75efe4474cdce6181e8bc3d89428c663e77c88fd7acb6247ea53e29f91dc2ca6db20
6
+ metadata.gz: 2c2c4e95a00b51edd873288112253bcba265475e7dcb50466d0f6d5629850adefb1c9b9ce983cbb4f2ad3b5160a7f1be22827fcf12b4fccb105e060bdd0e3651
7
+ data.tar.gz: 9053180465db13e212f82b6889a0c9012f52f28dba300b7eb06eae362728120ffd5e43251bd5909bc0633664e7a34286c69b7d88264a3f75807fab9a1e2dc33f
@@ -8,7 +8,8 @@ Gem::Specification.new do |s|
8
8
 
9
9
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
10
  s.require_paths = ["lib"]
11
- s.authors = ["Kannan Manickam", "Yugabyte engineering team"]
11
+ s.authors = ["Kannan Manickam (the original jenkins_api_client gem)",
12
+ "Yugabyte Engineering Team (improvements)"]
12
13
  s.description =
13
14
  "\nThis is a simple and easy-to-use Jenkins Api client with features focused on" +
14
15
  "\nautomating Job configuration programaticaly. Based on the improved_jenkins_client with" +
@@ -18,7 +19,7 @@ Gem::Specification.new do |s|
18
19
  s.executables = ['jenkinscli']
19
20
  s.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{lib/|bin/|java_deps/|gemspec}) }
20
21
  s.require_paths = ['lib']
21
- s.homepage = 'https://github.com/yugabyte-db/improved-ruby-jenkins-client'
22
+ s.homepage = 'https://github.com/yugabyte-db/improved_jenkins_client'
22
23
  s.required_ruby_version = ::Gem::Requirement.new('~> 2.1')
23
24
  s.rubygems_version = "2.4.5.1"
24
25
  s.summary = "Improved Jenkins JSON API Client"
@@ -731,6 +731,65 @@ module JenkinsApi
731
731
  response_json["builds"]
732
732
  end
733
733
 
734
+ # Yields all builds using the allBuilds API endpoint.
735
+ #
736
+ # @param job_name [String] the job to retrieve builds for
737
+ # @param fields [Array] the fields to retrieve from each build. ['*'] by default, meaning all
738
+ # fields
739
+ # @param limit [Integer] the maximum total number of builds to retrieve
740
+ # @param page_size [Integer] the number of builds to retrieve at once
741
+ #
742
+ def each_build(
743
+ job_name,
744
+ fields: ['*'],
745
+ start_index: 0,
746
+ limit: nil,
747
+ page_size: 100)
748
+ unless page_size.is_a?(Integer) && page_size >= 1
749
+ raise "Invalid page size: #{page_size} (#{page_size.class}) -- must be at least one"
750
+ end
751
+ unless start_index.is_a?(Integer) && start_index >= 0
752
+ raise "Invalid start index: #{start_index} (#{start_index.class}), must be a " +
753
+ "nonnegative integer"
754
+ end
755
+ unless limit.nil? || limit.is_a?(Integer) && limit >= 0
756
+ raise "Invalid limit: #{limit} (#{limit.class}) -- must be nil or a non-negative integer"
757
+ end
758
+ unless fields.is_a?(Array) && fields.size >= 1
759
+ raise "Invalid array of fields to retrieve: #{fields} (#{fields.class}), must have at " +
760
+ "least one element"
761
+ end
762
+
763
+ start_index = 0
764
+ url = "/job/#{path_encode job_name}"
765
+ fields_str = fields.join(',')
766
+ while limit.nil? || start_index < limit do
767
+ @logger.info(
768
+ "Obtaining the build details of '#{job_name}' (fields: #{fields}) starting at " +
769
+ "index #{start_index} with page size #{page_size}")
770
+
771
+ end_index = start_index + page_size
772
+ end_index = limit if !limit.nil? && end_index > limit
773
+
774
+ break if start_index >= end_index
775
+
776
+ tree = "allBuilds[#{fields_str}]{#{start_index},#{end_index}}"
777
+ response_json = @client.api_get_request(url, tree_string(tree))
778
+ build_range = response_json["allBuilds"]
779
+
780
+ break if build_range.size == 0 # End of results.
781
+
782
+ build_range.each do |result|
783
+ yield result
784
+ end
785
+
786
+ # We got some results but less than what we asked for. This must be the last page.
787
+ break if build_range.size < end_index - start_index
788
+
789
+ start_index += page_size
790
+ end
791
+ end
792
+
734
793
  # This method maps the color to status of a job
735
794
  #
736
795
  # @param [String] color color given by the API for a job
@@ -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 = 0
30
+ TINY = 2
31
31
  # Used for pre-releases
32
32
  PRE = nil
33
33
  # Version String of Jenkins API Client.
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: improved_jenkins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
- - Kannan Manickam
8
- - Yugabyte engineering team
7
+ - Kannan Manickam (the original jenkins_api_client gem)
8
+ - Yugabyte Engineering Team (improvements)
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
@@ -146,7 +146,7 @@ files:
146
146
  - lib/improved_jenkins_client/user.rb
147
147
  - lib/improved_jenkins_client/version.rb
148
148
  - lib/improved_jenkins_client/view.rb
149
- homepage: https://github.com/yugabyte-db/improved-ruby-jenkins-client
149
+ homepage: https://github.com/yugabyte-db/improved_jenkins_client
150
150
  licenses:
151
151
  - MIT
152
152
  metadata: {}