kettle-family 1.2.58 → 1.2.59
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 +16 -1
- data/README.md +14 -7
- data/lib/kettle/family/cli.rb +6 -6
- data/lib/kettle/family/release_waves.rb +25 -1
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +7 -3
- 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: 1362393294aee4023a1d11a45973f31affd2a4b858f9fbe400b22ebed831d078
|
|
4
|
+
data.tar.gz: e776253f40b9e2c77c2db5638e075d9c0ff08b2841e8be18ab23452da9254e89
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7996bae296cfe6b3cee363e53e2992d6033375d34e90866127e59368b8b6b8ed3fe769a15ac66ed7105b365fb591c7fe58967c466ef1f162bf732edb3f2f34ab
|
|
7
|
+
data.tar.gz: 03ccd0e0d856f16f596c80f3b028787bc475a9bebe82e34efce92eb1d4ce6bdd0dc571a5e9b7074680a23ee1a01de9aab2d183f88ddc409557519e809a8eff5b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,19 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.2.59] - 2026-08-25
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.59][1.2.59t]
|
|
36
|
+
- COVERAGE: 93.52% -- 5367/5739 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 76.27% -- 2173/2849 branches in 33 files
|
|
38
|
+
- 29.78% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Reject configured release waves that place runtime gem dependencies after their dependents.
|
|
43
|
+
|
|
44
|
+
- Keep configured shared changelog version anchors authoritative during partial family releases.
|
|
45
|
+
|
|
33
46
|
## [1.2.58] - 2026-08-23
|
|
34
47
|
|
|
35
48
|
- TAG: [v1.2.58][1.2.58t]
|
|
@@ -2153,7 +2166,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2153
2166
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2154
2167
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2155
2168
|
|
|
2156
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2169
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.59...HEAD
|
|
2170
|
+
[1.2.59]: https://github.com/kettle-dev/kettle-family/compare/v1.2.58...v1.2.59
|
|
2171
|
+
[1.2.59t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.59
|
|
2157
2172
|
[1.2.58]: https://github.com/kettle-dev/kettle-family/compare/v1.2.57...v1.2.58
|
|
2158
2173
|
[1.2.58t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.58
|
|
2159
2174
|
[1.2.57]: https://github.com/kettle-dev/kettle-family/compare/v1.2.56...v1.2.57
|
data/README.md
CHANGED
|
@@ -39,7 +39,9 @@ is, avoiding duplicate release-prep commits after a failure/fix/retry cycle.
|
|
|
39
39
|
options such as `start_step=N` and `--local-ci` pass through, CI failures still
|
|
40
40
|
abort by default, and gem signing passphrases are cached once per family run
|
|
41
41
|
while RubyGems MFA prompts remain interactive unless an opt-in release secrets
|
|
42
|
-
provider supplies them.
|
|
42
|
+
provider supplies them. Resume options are deliberately scoped: use them only
|
|
43
|
+
when the member's prepared release commit is unchanged. If a CI failure requires
|
|
44
|
+
code, version, changelog, or lockfile changes, rerun that member from step 0.
|
|
43
45
|
|
|
44
46
|
## 💡 Info you can shake a stick at
|
|
45
47
|
|
|
@@ -286,8 +288,9 @@ release:
|
|
|
286
288
|
|
|
287
289
|
Resume and security-release options pass through to `kettle-release`. Passing
|
|
288
290
|
`--start-step N` appends `start_step=N`; as with direct `kettle-release` usage,
|
|
289
|
-
`N >
|
|
290
|
-
|
|
291
|
+
`N > 0` skips the pre-release gate and should be used only for the same
|
|
292
|
+
prepared release commit after the earlier prerequisites passed. A code or
|
|
293
|
+
metadata fix requires a new full release run from step 0:
|
|
291
294
|
|
|
292
295
|
```console
|
|
293
296
|
kettle-family release --publish --start-step 10 --local-ci
|
|
@@ -296,6 +299,13 @@ kettle-family release --publish --start-step 10 --local-ci
|
|
|
296
299
|
Executed publish runs skip versions that are already published. CI failures
|
|
297
300
|
abort by default; pass `--continue-ci-failures` to set
|
|
298
301
|
`K_RELEASE_CI_CONTINUE=true` for the underlying `kettle-release` process.
|
|
302
|
+
That option still monitors CI and only changes whether a failed result blocks
|
|
303
|
+
the release. It does not skip monitoring. Use `--fast-recovery retry-ci`
|
|
304
|
+
for a selected same-commit member when the failure was transient, or
|
|
305
|
+
`--fast-recovery skip-ci` only when you intentionally accept the CI result.
|
|
306
|
+
Use `--skip-ci` when every selected member should run from step 0 while
|
|
307
|
+
skipping remote CI monitoring; it is not a substitute for fixing code and
|
|
308
|
+
creating a new release commit.
|
|
299
309
|
|
|
300
310
|
Executed publish runs can also use a release secrets provider. The default
|
|
301
311
|
provider is `interactive`. The `1password` provider is supplied by
|
|
@@ -449,9 +459,6 @@ step 0 while skipping remote CI monitoring, use `--skip-ci` instead:
|
|
|
449
459
|
kettle-family release --publish --execute --skip-ci
|
|
450
460
|
```
|
|
451
461
|
|
|
452
|
-
The existing `--continue-ci-failures` option still monitors CI and only changes
|
|
453
|
-
whether a failed result blocks the release; it does not skip CI monitoring.
|
|
454
|
-
|
|
455
462
|
By default, family publish runs pass `--yes` to configured `kettle-changelog`
|
|
456
463
|
family changelog commands and child `kettle-release` commands. Use
|
|
457
464
|
`--no-accept` when you want each child command to ask its own confirmation
|
|
@@ -856,7 +863,7 @@ Thanks for RTFM. ☺️
|
|
|
856
863
|
[📌gitmoji]: https://gitmoji.dev
|
|
857
864
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
858
865
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
859
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
866
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.739-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
860
867
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
861
868
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
862
869
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/kettle/family/cli.rb
CHANGED
|
@@ -521,12 +521,12 @@ module Kettle
|
|
|
521
521
|
option :build_only, long: "--build-only", desc: "Use build release command" do
|
|
522
522
|
options[:publish] = false
|
|
523
523
|
end
|
|
524
|
-
option :start_step, long: "--start-step", value: {type: Integer, usage: "N"}, desc: "
|
|
525
|
-
option :skip_steps, long: "--skip-steps", value: {type: String, usage: "LIST"}, desc: "
|
|
526
|
-
option :fast_recovery, long: "--fast-recovery", value: {type: String, usage: "MODE"}, desc: "Recover selected CI failures with retry-ci or skip-ci"
|
|
527
|
-
option :fast_recovery_members, long: "--fast-recovery-members", value: {type: String, usage: "MEMBERS"}, desc: "Limit fast recovery to comma-separated selected members"
|
|
528
|
-
option :skip_ci, long: "--skip-ci", desc: "
|
|
529
|
-
option :skip_changelog, long: "--skip-changelog", desc: "Run
|
|
524
|
+
option :start_step, long: "--start-step", value: {type: Integer, usage: "N"}, desc: "Resume the same release commit at kettle-release step N; use only after that step's prerequisites passed"
|
|
525
|
+
option :skip_steps, long: "--skip-steps", value: {type: String, usage: "LIST"}, desc: "Skip comma-separated kettle-release steps for the same release commit"
|
|
526
|
+
option :fast_recovery, long: "--fast-recovery", value: {type: String, usage: "MODE"}, desc: "Recover selected same-commit CI failures with retry-ci or skip-ci"
|
|
527
|
+
option :fast_recovery_members, long: "--fast-recovery-members", value: {type: String, usage: "MEMBERS"}, desc: "Limit fast recovery to selected comma-separated members; defaults to all selected members"
|
|
528
|
+
option :skip_ci, long: "--skip-ci", desc: "Run every selected member from step 0 while skipping only remote CI monitoring; requires --publish"
|
|
529
|
+
option :skip_changelog, long: "--skip-changelog", desc: "Run release checks and child releases while skipping kettle-changelog"
|
|
530
530
|
option :local_ci, long: "--local-ci", desc: "Pass --local-ci through to kettle-release commands"
|
|
531
531
|
option :continue_ci_failures, long: "--continue-ci-failures", desc: "Set K_RELEASE_CI_CONTINUE=true for release commands"
|
|
532
532
|
option :ci_workflows, long: "--ci-workflows", value: {type: String, usage: "LIST"}, desc: "Pass a comma-separated CI workflow monitor subset through to kettle-release commands"
|
|
@@ -13,8 +13,11 @@ module Kettle
|
|
|
13
13
|
configured = configured_waves_for_selected_members
|
|
14
14
|
configured_names = configured.flatten.map(&:name)
|
|
15
15
|
remaining_members = members.reject { |member| configured_names.include?(member.name) }
|
|
16
|
+
planned = configured + inferred_waves(remaining_members)
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
validate_configured_dependency_order!(planned) unless configured.empty?
|
|
19
|
+
|
|
20
|
+
planned
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
private
|
|
@@ -74,6 +77,27 @@ module Kettle
|
|
|
74
77
|
release_dependency_names(member).select { |dependency| by_name.key?(dependency) }
|
|
75
78
|
end
|
|
76
79
|
|
|
80
|
+
def validate_configured_dependency_order!(planned_waves)
|
|
81
|
+
wave_indexes = planned_waves.each_with_index.flat_map do |wave, index|
|
|
82
|
+
wave.map { |member| [member.name, index] }
|
|
83
|
+
end.to_h
|
|
84
|
+
|
|
85
|
+
members.each do |member|
|
|
86
|
+
member_wave = wave_indexes.fetch(member.name)
|
|
87
|
+
Array(member.dependencies).map(&:to_s).filter_map do |dependency|
|
|
88
|
+
dependency_wave = wave_indexes[dependency]
|
|
89
|
+
next unless dependency_wave
|
|
90
|
+
next if dependency_wave < member_wave
|
|
91
|
+
|
|
92
|
+
[member.name, dependency, member_wave + 1, dependency_wave + 1]
|
|
93
|
+
end.each do |dependent, dependency, dependent_wave, dependency_wave|
|
|
94
|
+
raise Error,
|
|
95
|
+
"configured release waves violate runtime dependency order: #{dependent} (wave #{dependent_wave}) " \
|
|
96
|
+
"requires #{dependency} (wave #{dependency_wave}); move #{dependency} to an earlier wave"
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
77
101
|
def release_dependency_names(member)
|
|
78
102
|
Array(member.release_dependencies || member.dependencies).map(&:to_s)
|
|
79
103
|
end
|
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "1.2.
|
|
8
|
+
VERSION = "1.2.59"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -1979,13 +1979,16 @@ module Kettle
|
|
|
1979
1979
|
end
|
|
1980
1980
|
|
|
1981
1981
|
version_path = File.expand_path(version_file, config.root)
|
|
1982
|
-
|
|
1982
|
+
# The root anchor may belong to an earlier wave, so partial releases
|
|
1983
|
+
# must not fall back to a selected member's independent version.
|
|
1984
|
+
known_members = family_members.empty? ? members : family_members
|
|
1985
|
+
member = known_members.find { |candidate| path_inside?(version_path, candidate.root) }
|
|
1983
1986
|
return member if member
|
|
1984
1987
|
|
|
1985
1988
|
fallback = members.first
|
|
1986
1989
|
return fallback if fallback&.version_file
|
|
1987
1990
|
|
|
1988
|
-
raise Error, "shared root changelog version file #{version_file} is not inside any
|
|
1991
|
+
raise Error, "shared root changelog version file #{version_file} is not inside any family member"
|
|
1989
1992
|
end
|
|
1990
1993
|
|
|
1991
1994
|
def family_changelog_env
|
|
@@ -2031,7 +2034,8 @@ module Kettle
|
|
|
2031
2034
|
|
|
2032
2035
|
def family_changelog_version_file
|
|
2033
2036
|
configured = config.changelog_version_file.to_s
|
|
2034
|
-
|
|
2037
|
+
known_members = family_members.empty? ? members : family_members
|
|
2038
|
+
return configured if !configured.empty? && known_members.any? { |member| path_inside?(File.expand_path(configured, config.root), member.root) }
|
|
2035
2039
|
|
|
2036
2040
|
members.first&.version_file.to_s
|
|
2037
2041
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-family
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.59
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -71,7 +71,7 @@ dependencies:
|
|
|
71
71
|
requirements:
|
|
72
72
|
- - ">="
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 3.0.
|
|
74
|
+
version: 3.0.11
|
|
75
75
|
- - "<"
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
77
|
version: 4.0.0
|
|
@@ -81,7 +81,7 @@ dependencies:
|
|
|
81
81
|
requirements:
|
|
82
82
|
- - ">="
|
|
83
83
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: 3.0.
|
|
84
|
+
version: 3.0.11
|
|
85
85
|
- - "<"
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
87
|
version: 4.0.0
|
|
@@ -361,10 +361,10 @@ licenses:
|
|
|
361
361
|
- AGPL-3.0-only
|
|
362
362
|
metadata:
|
|
363
363
|
homepage_uri: https://kettle-family.galtzo.com
|
|
364
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
365
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
364
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.59
|
|
365
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.59/CHANGELOG.md
|
|
366
366
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
367
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
367
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.59
|
|
368
368
|
funding_uri: https://github.com/sponsors/pboling
|
|
369
369
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
370
370
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|