kettle-family 1.2.24 → 1.2.25
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 +1 -1
- data/lib/kettle/family/release_waves.rb +7 -2
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +13 -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: a0bf576e6199b80bd4119a759a0ddf8aeb5ec049c0134a8e02d0e1abfd29f2cc
|
|
4
|
+
data.tar.gz: 5503f0ce6b1d4fd750c4421be6a28a9c542c156702d1d78b1cd7e2d0e793d6d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b08d0f45114f017908ba3eed8356575d66754286d89941458b380c6f14028174c0a1503454661117d612d696d25d4c646d4aee42c479acc94b61c81f7316f2f3
|
|
7
|
+
data.tar.gz: b21dcc6aa7a5d80186a174d5f17a73500809815351f716665a8426030abf6dd9eb7811b70a720eb6aabe0696d2ec57a9ed53476732d61dbc1e6424190e37de99
|
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.25] - 2026-08-03
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.25][1.2.25t]
|
|
36
|
+
- COVERAGE: 93.94% -- 4698/5001 lines in 31 files
|
|
37
|
+
- BRANCH COVERAGE: 76.54% -- 1843/2408 branches in 31 files
|
|
38
|
+
- 29.31% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Fail release planning when dependency cycles lack an explicit release wave.
|
|
43
|
+
|
|
44
|
+
- Repair stale dependency checksums before retrying family release lockfiles
|
|
45
|
+
|
|
33
46
|
## [1.2.24] - 2026-08-03
|
|
34
47
|
|
|
35
48
|
- TAG: [v1.2.24][1.2.24t]
|
|
@@ -1681,7 +1694,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
1681
1694
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
1682
1695
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
1683
1696
|
|
|
1684
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
1697
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.25...HEAD
|
|
1698
|
+
[1.2.25]: https://github.com/kettle-dev/kettle-family/compare/v1.2.24...v1.2.25
|
|
1699
|
+
[1.2.25t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.25
|
|
1685
1700
|
[1.2.24]: https://github.com/kettle-dev/kettle-family/compare/v1.2.23...v1.2.24
|
|
1686
1701
|
[1.2.24t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.24
|
|
1687
1702
|
[1.2.23]: https://github.com/kettle-dev/kettle-family/compare/v1.2.22...v1.2.23
|
data/README.md
CHANGED
|
@@ -828,7 +828,7 @@ Thanks for RTFM. ☺️
|
|
|
828
828
|
[📌gitmoji]: https://gitmoji.dev
|
|
829
829
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
830
830
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
831
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-
|
|
831
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.001-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
832
832
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
833
833
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
834
834
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
module Kettle
|
|
4
4
|
module Family
|
|
5
5
|
class ReleaseWaves
|
|
6
|
-
def initialize(members:, configured_waves: [])
|
|
6
|
+
def initialize(members:, configured_waves: [], strict_cycles: false)
|
|
7
7
|
@members = members
|
|
8
8
|
@configured_waves = configured_waves
|
|
9
|
+
@strict_cycles = strict_cycles
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def waves
|
|
@@ -18,7 +19,7 @@ module Kettle
|
|
|
18
19
|
|
|
19
20
|
private
|
|
20
21
|
|
|
21
|
-
attr_reader :members, :configured_waves
|
|
22
|
+
attr_reader :members, :configured_waves, :strict_cycles
|
|
22
23
|
|
|
23
24
|
def configured_waves_for_selected_members
|
|
24
25
|
duplicates = configured_waves.flatten.group_by(&:itself).select { |_name, names| names.length > 1 }.keys
|
|
@@ -52,6 +53,10 @@ module Kettle
|
|
|
52
53
|
wave_names = hard_ready.select do |name|
|
|
53
54
|
selected_dependencies_for(by_name.fetch(name), by_name).all? { |dependency| completed.include?(dependency) }
|
|
54
55
|
end
|
|
56
|
+
if wave_names.empty? && strict_cycles
|
|
57
|
+
raise Error,
|
|
58
|
+
"cyclic release dependency order: #{pending.join(", ")}; configure release.waves to break the cycle"
|
|
59
|
+
end
|
|
55
60
|
wave_names = [hard_ready.first] if wave_names.empty?
|
|
56
61
|
|
|
57
62
|
planned_waves << wave_names.map { |name| by_name.fetch(name) }
|
|
@@ -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.25"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -1117,7 +1117,7 @@ module Kettle
|
|
|
1117
1117
|
end
|
|
1118
1118
|
|
|
1119
1119
|
def release_waves(release_members)
|
|
1120
|
-
ReleaseWaves.new(members: release_members, configured_waves: config.release_waves).waves
|
|
1120
|
+
ReleaseWaves.new(members: release_members, configured_waves: config.release_waves, strict_cycles: true).waves
|
|
1121
1121
|
end
|
|
1122
1122
|
|
|
1123
1123
|
def append_dependency_floor_results(released_members:, dependent_members:, runner:, memo:)
|
|
@@ -1182,6 +1182,7 @@ module Kettle
|
|
|
1182
1182
|
def wait_for_dependency_floor_lockfiles_result(member:, released_members:, runner:)
|
|
1183
1183
|
result = nil
|
|
1184
1184
|
REGISTRY_WAIT_ATTEMPTS.times do |index|
|
|
1185
|
+
attempts = index + 1
|
|
1185
1186
|
emit_dependency_floor_lockfile_progress(member: member, attempt: index + 1)
|
|
1186
1187
|
result = runner.call(
|
|
1187
1188
|
member: member,
|
|
@@ -1189,8 +1190,17 @@ module Kettle
|
|
|
1189
1190
|
command: dependency_floor_lockfile_command(released_members),
|
|
1190
1191
|
env: release_lockfile_env(member)
|
|
1191
1192
|
)
|
|
1193
|
+
if repair_checksum_mismatches(member, result)
|
|
1194
|
+
attempts += 1
|
|
1195
|
+
result = runner.call(
|
|
1196
|
+
member: member,
|
|
1197
|
+
phase: "dependency_floor_lockfiles",
|
|
1198
|
+
command: dependency_floor_lockfile_command(released_members),
|
|
1199
|
+
env: release_lockfile_env(member)
|
|
1200
|
+
)
|
|
1201
|
+
end
|
|
1192
1202
|
validate_dependency_floor_lockfile_result(result: result, member: member, released_members: released_members) if result.ok?
|
|
1193
|
-
annotate_dependency_floor_lockfile_result(result,
|
|
1203
|
+
annotate_dependency_floor_lockfile_result(result, attempts)
|
|
1194
1204
|
break if result.ok?
|
|
1195
1205
|
|
|
1196
1206
|
sleep(REGISTRY_WAIT_INTERVAL_SECONDS) if index + 1 < REGISTRY_WAIT_ATTEMPTS
|
|
@@ -2899,7 +2909,7 @@ module Kettle
|
|
|
2899
2909
|
return false unless execute
|
|
2900
2910
|
return false if result.ok?
|
|
2901
2911
|
|
|
2902
|
-
line_numbers = checksum_mismatch_lockfile_lines(result.stderr)
|
|
2912
|
+
line_numbers = checksum_mismatch_lockfile_lines([result.stdout, result.stderr].join("\n"))
|
|
2903
2913
|
return false if line_numbers.empty?
|
|
2904
2914
|
|
|
2905
2915
|
lockfile = File.join(member.root, "Gemfile.lock")
|
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.25
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -74,7 +74,7 @@ dependencies:
|
|
|
74
74
|
version: '2.3'
|
|
75
75
|
- - ">="
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 2.5.
|
|
77
|
+
version: 2.5.18
|
|
78
78
|
type: :runtime
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -84,7 +84,7 @@ dependencies:
|
|
|
84
84
|
version: '2.3'
|
|
85
85
|
- - ">="
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: 2.5.
|
|
87
|
+
version: 2.5.18
|
|
88
88
|
- !ruby/object:Gem::Dependency
|
|
89
89
|
name: kettle-test
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -345,10 +345,10 @@ licenses:
|
|
|
345
345
|
- AGPL-3.0-only
|
|
346
346
|
metadata:
|
|
347
347
|
homepage_uri: https://kettle-family.galtzo.com
|
|
348
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
349
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
348
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.25
|
|
349
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.25/CHANGELOG.md
|
|
350
350
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
351
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
351
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.25
|
|
352
352
|
funding_uri: https://github.com/sponsors/pboling
|
|
353
353
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
354
354
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|