kettle-dev 2.5.20 → 2.5.22
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +29 -1
- data/README.md +1 -1
- data/lib/kettle/dev/ci_helpers.rb +8 -0
- data/lib/kettle/dev/ci_monitor.rb +4 -4
- data/lib/kettle/dev/release_cli.rb +16 -1
- data/lib/kettle/dev/ruby_gems_versions.rb +17 -1
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e6a1bce4c78ca5c41546d1a2462d657b84be80e0823174a52f30b5a92f54a3a
|
|
4
|
+
data.tar.gz: 827a02785c64b65637322c9d9c32bf7d6cee54204852dc3a7d06ce030d7cd564
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df4f0435dddecc497fefea20034de8125d51893532839d70ff5d1ba1e717576d5909c9a0c6b4b7c51e4cd720519c7524e4c4390a67c011aa91bd82dd0ee3c839
|
|
7
|
+
data.tar.gz: 4b9a904a68bbe3d750feba530dcd5a326427690dc93e20efd9f857659cce2f7cb717e0ae418f52cdfff745acf1c42bf324ee244900dce34c163362a417973ecd
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,30 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.5.22] - 2026-08-07
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.5.22][2.5.22t]
|
|
36
|
+
- COVERAGE: 91.88% -- 5464/5947 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.10% -- 2057/2703 branches in 47 files
|
|
38
|
+
- 50.90% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- CI monitoring can use an explicit repository root for monorepo release workflows.
|
|
43
|
+
|
|
44
|
+
## [2.5.21] - 2026-08-07
|
|
45
|
+
|
|
46
|
+
- TAG: [v2.5.21][2.5.21t]
|
|
47
|
+
- COVERAGE: 91.99% -- 5469/5945 lines in 47 files
|
|
48
|
+
- BRANCH COVERAGE: 76.14% -- 2058/2703 branches in 47 files
|
|
49
|
+
- 50.77% documented
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Release coverage now honors a project that disables hard coverage thresholds.
|
|
54
|
+
|
|
55
|
+
- Release-state version lookups now refresh when the cached RubyGems data predates the requested version.
|
|
56
|
+
|
|
33
57
|
## [2.5.20] - 2026-08-07
|
|
34
58
|
|
|
35
59
|
- TAG: [v2.5.20][2.5.20t]
|
|
@@ -3272,7 +3296,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3272
3296
|
- Selecting will run the selected workflow via `act`
|
|
3273
3297
|
- This may move to its own gem in the future.
|
|
3274
3298
|
|
|
3275
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.
|
|
3299
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.22...HEAD
|
|
3300
|
+
[2.5.22]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.21...v2.5.22
|
|
3301
|
+
[2.5.22t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.22
|
|
3302
|
+
[2.5.21]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.20...v2.5.21
|
|
3303
|
+
[2.5.21t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.21
|
|
3276
3304
|
[2.5.20]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.19...v2.5.20
|
|
3277
3305
|
[2.5.20t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.20
|
|
3278
3306
|
[2.5.19]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.18...v2.5.19
|
data/README.md
CHANGED
|
@@ -1007,7 +1007,7 @@ Thanks for RTFM. ☺️
|
|
|
1007
1007
|
[📌gitmoji]: https://gitmoji.dev
|
|
1008
1008
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1009
1009
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1010
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
1010
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.947-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1011
1011
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1012
1012
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1013
1013
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -28,6 +28,14 @@ module Kettle
|
|
|
28
28
|
dir || Dir.pwd
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
# Return the repository root used by release CI monitoring. Monorepo
|
|
32
|
+
# member releases execute from a subdirectory but monitor workflows
|
|
33
|
+
# stored at the shared repository root.
|
|
34
|
+
# @return [String] absolute CI project root
|
|
35
|
+
def ci_project_root
|
|
36
|
+
ENV.fetch("K_RELEASE_CI_ROOT", project_root)
|
|
37
|
+
end
|
|
38
|
+
|
|
31
39
|
# Parse the GitHub owner/repo from the configured origin remote.
|
|
32
40
|
# Supports SSH and HTTPS remote URL forms.
|
|
33
41
|
# @return [Array(String, String), nil] [owner, repo] or nil when unavailable
|
|
@@ -165,7 +165,7 @@ module Kettle
|
|
|
165
165
|
|
|
166
166
|
# --- Collectors ---
|
|
167
167
|
def collect_github
|
|
168
|
-
root = Kettle::Dev::CIHelpers.
|
|
168
|
+
root = Kettle::Dev::CIHelpers.ci_project_root
|
|
169
169
|
workflows = Kettle::Dev::CIHelpers.workflows_list(root)
|
|
170
170
|
gh_remote = preferred_github_remote
|
|
171
171
|
return unless gh_remote && !workflows.empty?
|
|
@@ -223,7 +223,7 @@ module Kettle
|
|
|
223
223
|
module_function :collect_github
|
|
224
224
|
|
|
225
225
|
def collect_gitlab
|
|
226
|
-
root = Kettle::Dev::CIHelpers.
|
|
226
|
+
root = Kettle::Dev::CIHelpers.ci_project_root
|
|
227
227
|
gitlab_ci = File.exist?(File.join(root, ".gitlab-ci.yml"))
|
|
228
228
|
gl_remote = gitlab_remote_candidates.first
|
|
229
229
|
return unless gitlab_ci && gl_remote
|
|
@@ -269,7 +269,7 @@ module Kettle
|
|
|
269
269
|
module_function :collect_gitlab
|
|
270
270
|
|
|
271
271
|
def monitor_github_internal!(restart_hint:, workflows: nil, keepalive: nil, event_recorder: nil)
|
|
272
|
-
root = Kettle::Dev::CIHelpers.
|
|
272
|
+
root = Kettle::Dev::CIHelpers.ci_project_root
|
|
273
273
|
workflows = Array(workflows).empty? ? Kettle::Dev::CIHelpers.workflows_list(root) : Array(workflows)
|
|
274
274
|
gh_remote = preferred_github_remote
|
|
275
275
|
return false unless gh_remote && !workflows.empty?
|
|
@@ -503,7 +503,7 @@ module Kettle
|
|
|
503
503
|
module_function :keepalive_interval
|
|
504
504
|
|
|
505
505
|
def monitor_gitlab_internal!(restart_hint:, keepalive: nil, event_recorder: nil)
|
|
506
|
-
root = Kettle::Dev::CIHelpers.
|
|
506
|
+
root = Kettle::Dev::CIHelpers.ci_project_root
|
|
507
507
|
gitlab_ci = File.exist?(File.join(root, ".gitlab-ci.yml"))
|
|
508
508
|
gl_remote = gitlab_remote_candidates.first
|
|
509
509
|
return false unless gitlab_ci && gl_remote
|
|
@@ -794,10 +794,25 @@ module Kettle
|
|
|
794
794
|
cmd = "#{cmd} --version #{Shellwords.escape(@version_override)}" if @version_override
|
|
795
795
|
cmd = "#{cmd} --yes" if @yes
|
|
796
796
|
cmd = "#{cmd} --events=changelog" if @event_stream
|
|
797
|
-
run_cmd!(cmd)
|
|
797
|
+
with_project_changelog_coverage_policy { run_cmd!(cmd) }
|
|
798
798
|
@changelog_generated_coverage = true
|
|
799
799
|
end
|
|
800
800
|
|
|
801
|
+
# Monorepo subprojects commonly disable their local hard coverage gate
|
|
802
|
+
# because their narrow test suite cannot satisfy the aggregate root
|
|
803
|
+
# thresholds. Preserve an explicit changelog policy, otherwise derive
|
|
804
|
+
# the changelog coverage policy from the project's coverage setting.
|
|
805
|
+
def with_project_changelog_coverage_policy
|
|
806
|
+
original = ENV["K_CHANGELOG_COVERAGE_HARD"]
|
|
807
|
+
changed = original.nil? && ENV["K_SOUP_COV_MIN_HARD"].to_s.casecmp?("false")
|
|
808
|
+
return yield unless changed
|
|
809
|
+
|
|
810
|
+
ENV["K_CHANGELOG_COVERAGE_HARD"] = "false"
|
|
811
|
+
yield
|
|
812
|
+
ensure
|
|
813
|
+
ENV["K_CHANGELOG_COVERAGE_HARD"] = original if changed
|
|
814
|
+
end
|
|
815
|
+
|
|
801
816
|
def release_default_task_command
|
|
802
817
|
# `kettle-changelog` generates strict coverage by running `bundle exec kettle-test`.
|
|
803
818
|
# When that happened during this same release invocation, the default task can skip
|
|
@@ -23,7 +23,7 @@ module Kettle
|
|
|
23
23
|
def fetch(gem_name, version_hint: nil, refresh: false)
|
|
24
24
|
name = gem_name.to_s
|
|
25
25
|
cached = cached_versions(name)
|
|
26
|
-
cache_bust = refresh || env_refresh? || fresh_release_marker?(name, version_hint)
|
|
26
|
+
cache_bust = refresh || env_refresh? || fresh_release_marker?(name, version_hint) || cached_behind_version?(cached, version_hint)
|
|
27
27
|
return cached if cached && !cache_bust
|
|
28
28
|
|
|
29
29
|
uri = versions_uri(gem_name, cache_bust: cache_bust)
|
|
@@ -104,6 +104,22 @@ module Kettle
|
|
|
104
104
|
false
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
+
def cached_behind_version?(cached, version_hint)
|
|
108
|
+
return false unless cached && version_hint
|
|
109
|
+
|
|
110
|
+
cached_versions = cached.each_with_object([]) do |entry, versions|
|
|
111
|
+
value = entry["number"] if entry.is_a?(Hash)
|
|
112
|
+
next if value.to_s.empty? || value.to_s =~ /[a-zA-Z]/
|
|
113
|
+
|
|
114
|
+
versions << Gem::Version.new(value)
|
|
115
|
+
end
|
|
116
|
+
return false if cached_versions.empty?
|
|
117
|
+
|
|
118
|
+
cached_versions.max < Gem::Version.new(version_hint)
|
|
119
|
+
rescue ArgumentError
|
|
120
|
+
false
|
|
121
|
+
end
|
|
122
|
+
|
|
107
123
|
def read_marker(path)
|
|
108
124
|
return {} unless File.file?(path)
|
|
109
125
|
|
data/lib/kettle/dev/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "2.5.
|
|
8
|
+
VERSION = "2.5.22"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-dev
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.
|
|
4
|
+
version: 2.5.22
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -402,10 +402,10 @@ licenses:
|
|
|
402
402
|
- AGPL-3.0-only
|
|
403
403
|
metadata:
|
|
404
404
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
405
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.
|
|
406
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.
|
|
405
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.22
|
|
406
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.22/CHANGELOG.md
|
|
407
407
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
408
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.
|
|
408
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.22
|
|
409
409
|
funding_uri: https://github.com/sponsors/pboling
|
|
410
410
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
411
411
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|