kettle-dev 2.2.20 → 2.2.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 +30 -1
- data/README.md +1 -1
- data/lib/kettle/dev/gem_spec_reader.rb +1 -1
- data/lib/kettle/dev/release_cli.rb +70 -9
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- 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: e8c48d8192f541834457ce29c83b4169ac7476eb14273d6591608ff9292f8ce1
|
|
4
|
+
data.tar.gz: de8058fb6e66bd6f804cdf6bc48deded0e7b0b52ec80ece2de168777844b06ba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 51b8849553e75278f25fe2193aec2a7fe88e3a6f022e58a8effba2577e85fefc4fdc536a9f81ca7e6b2fa0748145054facf4a79395072f38c3b659c26224749d
|
|
7
|
+
data.tar.gz: 5190b2c20b7d947337f5405d0f605fdb91d305a62d8bc646d2ab8c99c24050e06e4e2707219083f76aaf261636d792ac6afc0eed47fda5ab0c2f6b5af321b497
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,31 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.2.22] - 2026-06-28
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.2.22][2.2.22t]
|
|
36
|
+
- COVERAGE: 92.01% -- 4171/4533 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 73.08% -- 1653/2262 branches in 33 files
|
|
38
|
+
- 61.04% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- `kettle-release` now passes the exact built gem artifact to `bin/gem_checksums`
|
|
43
|
+
so stale packages in `pkg/` cannot cause checksums for the wrong version.
|
|
44
|
+
|
|
45
|
+
## [2.2.21] - 2026-06-28
|
|
46
|
+
|
|
47
|
+
- TAG: [v2.2.21][2.2.21t]
|
|
48
|
+
- COVERAGE: 92.34% -- 4182/4529 lines in 33 files
|
|
49
|
+
- BRANCH COVERAGE: 73.34% -- 1659/2262 branches in 33 files
|
|
50
|
+
- 61.04% documented
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- `kettle-release` now detects local `.kettle-family.yml` branch-stack release
|
|
55
|
+
targets and skips trunk sync, trunk merge, and trunk checkout for those release
|
|
56
|
+
branches.
|
|
57
|
+
|
|
33
58
|
## [2.2.20] - 2026-06-27
|
|
34
59
|
|
|
35
60
|
- TAG: [v2.2.20][2.2.20t]
|
|
@@ -2321,7 +2346,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2321
2346
|
- Selecting will run the selected workflow via `act`
|
|
2322
2347
|
- This may move to its own gem in the future.
|
|
2323
2348
|
|
|
2324
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.
|
|
2349
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.22...HEAD
|
|
2350
|
+
[2.2.22]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.21...v2.2.22
|
|
2351
|
+
[2.2.22t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.22
|
|
2352
|
+
[2.2.21]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.20...v2.2.21
|
|
2353
|
+
[2.2.21t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.21
|
|
2325
2354
|
[2.2.20]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.19...v2.2.20
|
|
2326
2355
|
[2.2.20t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.20
|
|
2327
2356
|
[2.2.19]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.18...v2.2.19
|
data/README.md
CHANGED
|
@@ -874,7 +874,7 @@ Thanks for RTFM. ☺️
|
|
|
874
874
|
[📌gitmoji]: https://gitmoji.dev
|
|
875
875
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
876
876
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
877
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.
|
|
877
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.533-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
878
878
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
879
879
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
880
880
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -196,7 +196,7 @@ module Kettle
|
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
def declared_version_file_path(root)
|
|
199
|
-
gemspec_path = Dir.glob(File.join(root.to_s, "*.gemspec")).
|
|
199
|
+
gemspec_path = Dir.glob(File.join(root.to_s, "*.gemspec")).min
|
|
200
200
|
return unless gemspec_path && File.file?(gemspec_path)
|
|
201
201
|
|
|
202
202
|
gemspec_source = File.read(gemspec_path)
|
|
@@ -9,6 +9,7 @@ require "fileutils"
|
|
|
9
9
|
require "net/http"
|
|
10
10
|
require "json"
|
|
11
11
|
require "uri"
|
|
12
|
+
require "yaml"
|
|
12
13
|
|
|
13
14
|
# External gems
|
|
14
15
|
require "kettle/rb/compat_matrix"
|
|
@@ -128,6 +129,7 @@ module Kettle
|
|
|
128
129
|
committed = nil
|
|
129
130
|
trunk = nil
|
|
130
131
|
feature = nil
|
|
132
|
+
branch_stack_release = false
|
|
131
133
|
|
|
132
134
|
# 2. Version detection and sanity checks + prompt
|
|
133
135
|
if run_step?(2)
|
|
@@ -257,8 +259,12 @@ module Kettle
|
|
|
257
259
|
if run_step?(8) && !local_ci?
|
|
258
260
|
trunk = detect_trunk_branch
|
|
259
261
|
feature = current_branch
|
|
262
|
+
branch_stack_release = branch_stack_release_branch?(feature, trunk)
|
|
263
|
+
if branch_stack_release
|
|
264
|
+
puts "Kettle-family branch stack release branch detected: #{feature}; skipping trunk sync/rebase."
|
|
265
|
+
end
|
|
260
266
|
puts "Trunk branch detected: #{trunk}"
|
|
261
|
-
ensure_trunk_synced_before_push!(trunk, feature)
|
|
267
|
+
ensure_trunk_synced_before_push!(trunk, feature) unless branch_stack_release
|
|
262
268
|
elsif run_step?(8)
|
|
263
269
|
puts "Local CI release mode: skipping remote trunk sync before publishing."
|
|
264
270
|
end
|
|
@@ -273,14 +279,25 @@ module Kettle
|
|
|
273
279
|
if run_step?(11) && !local_ci?
|
|
274
280
|
trunk ||= detect_trunk_branch
|
|
275
281
|
feature ||= current_branch
|
|
276
|
-
|
|
282
|
+
branch_stack_release ||= branch_stack_release_branch?(feature, trunk)
|
|
283
|
+
if branch_stack_release
|
|
284
|
+
puts "Kettle-family branch stack release branch detected: #{feature}; skipping merge into #{trunk}."
|
|
285
|
+
else
|
|
286
|
+
merge_feature_into_trunk_and_push!(trunk, feature)
|
|
287
|
+
end
|
|
277
288
|
end
|
|
278
289
|
|
|
279
290
|
# 12. checkout trunk and pull
|
|
280
291
|
if run_step?(12) && !local_ci?
|
|
281
292
|
trunk ||= detect_trunk_branch
|
|
282
|
-
|
|
283
|
-
|
|
293
|
+
feature ||= current_branch
|
|
294
|
+
branch_stack_release ||= branch_stack_release_branch?(feature, trunk)
|
|
295
|
+
if branch_stack_release
|
|
296
|
+
puts "Kettle-family branch stack release branch detected: #{feature}; staying on release branch."
|
|
297
|
+
else
|
|
298
|
+
checkout!(trunk)
|
|
299
|
+
pull!(trunk)
|
|
300
|
+
end
|
|
284
301
|
end
|
|
285
302
|
|
|
286
303
|
# 13. signing guidance and checks
|
|
@@ -327,8 +344,9 @@ module Kettle
|
|
|
327
344
|
# release build to include them in the gem, thus altering the artifact, and invalidating the checksums.
|
|
328
345
|
if run_step?(16)
|
|
329
346
|
# Generate checksums for the just-built artifact, commit them, then validate
|
|
330
|
-
run_cmd!("bin/gem_checksums")
|
|
331
347
|
version ||= detect_version
|
|
348
|
+
gem_path = checksum_gem_path_for_version!(version)
|
|
349
|
+
run_cmd!("bin/gem_checksums #{Shellwords.escape(gem_path)}")
|
|
332
350
|
validate_checksums!(version, stage: "after release")
|
|
333
351
|
end
|
|
334
352
|
|
|
@@ -1086,6 +1104,44 @@ module Kettle
|
|
|
1086
1104
|
puts "Merged #{feature} into #{trunk} and pushed. The PR (if any) should auto-close."
|
|
1087
1105
|
end
|
|
1088
1106
|
|
|
1107
|
+
def branch_stack_release_branch?(branch, trunk = nil)
|
|
1108
|
+
return false if branch.to_s.empty?
|
|
1109
|
+
return false if trunk && branch == trunk
|
|
1110
|
+
|
|
1111
|
+
local_kettle_family_release_target_branches.include?(branch)
|
|
1112
|
+
end
|
|
1113
|
+
|
|
1114
|
+
def local_kettle_family_release_target_branches
|
|
1115
|
+
local_kettle_family_config_paths.each do |path|
|
|
1116
|
+
next unless File.file?(path)
|
|
1117
|
+
|
|
1118
|
+
begin
|
|
1119
|
+
data = YAML.safe_load(File.read(path), permitted_classes: [], aliases: false) || {}
|
|
1120
|
+
branches = Array(dig_string_keys(data, "release", "target_branches")) +
|
|
1121
|
+
Array(dig_string_keys(data, "branches", "release_targets"))
|
|
1122
|
+
return branches.map(&:to_s).reject(&:empty?) unless branches.empty?
|
|
1123
|
+
rescue Psych::Exception => e
|
|
1124
|
+
warn("Ignoring invalid kettle-family config #{Kettle::Dev.display_path(path)}: #{e.message}")
|
|
1125
|
+
end
|
|
1126
|
+
end
|
|
1127
|
+
[]
|
|
1128
|
+
end
|
|
1129
|
+
|
|
1130
|
+
def local_kettle_family_config_paths
|
|
1131
|
+
[
|
|
1132
|
+
File.join(@root, ".kettle-family.yml"),
|
|
1133
|
+
File.join(@root, ".structuredmerge", "kettle-family.yml")
|
|
1134
|
+
]
|
|
1135
|
+
end
|
|
1136
|
+
|
|
1137
|
+
def dig_string_keys(data, *keys)
|
|
1138
|
+
keys.reduce(data) do |memo, key|
|
|
1139
|
+
break nil unless memo.is_a?(Hash)
|
|
1140
|
+
|
|
1141
|
+
memo[key] || memo[key.to_sym]
|
|
1142
|
+
end
|
|
1143
|
+
end
|
|
1144
|
+
|
|
1089
1145
|
def ensure_signing_setup_or_skip!
|
|
1090
1146
|
# Treat any non-/true/i value as an explicit skip signal
|
|
1091
1147
|
return if ENV.fetch("SKIP_GEM_SIGNING", "").casecmp("true").zero?
|
|
@@ -1104,10 +1160,7 @@ module Kettle
|
|
|
1104
1160
|
end
|
|
1105
1161
|
|
|
1106
1162
|
def validate_checksums!(version, stage: "")
|
|
1107
|
-
gem_path =
|
|
1108
|
-
unless gem_path && File.file?(gem_path)
|
|
1109
|
-
abort("Unable to locate built gem for version #{version} in pkg/. Did the build succeed?")
|
|
1110
|
-
end
|
|
1163
|
+
gem_path = checksum_gem_path_for_version!(version)
|
|
1111
1164
|
actual = compute_sha256(gem_path)
|
|
1112
1165
|
checks_path = File.join(@root, "checksums", "#{File.basename(gem_path)}.sha256")
|
|
1113
1166
|
unless File.file?(checks_path)
|
|
@@ -1129,6 +1182,14 @@ module Kettle
|
|
|
1129
1182
|
end
|
|
1130
1183
|
end
|
|
1131
1184
|
|
|
1185
|
+
def checksum_gem_path_for_version!(version)
|
|
1186
|
+
gem_path = gem_file_for_version(version)
|
|
1187
|
+
unless gem_path && File.file?(gem_path)
|
|
1188
|
+
abort("Unable to locate built gem for version #{version} in pkg/. Did the build succeed?")
|
|
1189
|
+
end
|
|
1190
|
+
gem_path
|
|
1191
|
+
end
|
|
1192
|
+
|
|
1132
1193
|
def gem_file_for_version(version)
|
|
1133
1194
|
pkg = File.join(@root, "pkg")
|
|
1134
1195
|
pattern = File.join(pkg, "*.gem")
|
data/lib/kettle/dev/version.rb
CHANGED
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.2.
|
|
4
|
+
version: 2.2.22
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -208,7 +208,7 @@ dependencies:
|
|
|
208
208
|
version: '1.0'
|
|
209
209
|
- - ">="
|
|
210
210
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: 1.0.
|
|
211
|
+
version: 1.0.4
|
|
212
212
|
type: :development
|
|
213
213
|
prerelease: false
|
|
214
214
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -218,7 +218,7 @@ dependencies:
|
|
|
218
218
|
version: '1.0'
|
|
219
219
|
- - ">="
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
|
-
version: 1.0.
|
|
221
|
+
version: 1.0.4
|
|
222
222
|
- !ruby/object:Gem::Dependency
|
|
223
223
|
name: gitmoji-regex
|
|
224
224
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -359,10 +359,10 @@ licenses:
|
|
|
359
359
|
- AGPL-3.0-only
|
|
360
360
|
metadata:
|
|
361
361
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
362
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.
|
|
363
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.
|
|
362
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.22
|
|
363
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.22/CHANGELOG.md
|
|
364
364
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
365
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.
|
|
365
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.22
|
|
366
366
|
funding_uri: https://github.com/sponsors/pboling
|
|
367
367
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
368
368
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|