kettle-dev 3.0.29 → 3.0.30

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: bc59b144ad35c13c8dc77cdadfcea930ba96aaf4d5d3896de8eaba577e83cd41
4
- data.tar.gz: 3c045b3ba0e37e744a2e6305dd2b06edd30726973fb06c8462c2d40bb553e812
3
+ metadata.gz: d32d5afad3273769c6866465e43835b68691702c67e7de114aa0c641e5ba98e4
4
+ data.tar.gz: 182991a2de8eb82855285724435c3430a2dd52759838efbf11543061eb4336b4
5
5
  SHA512:
6
- metadata.gz: 1844c35d044d30ea440baca2c784b7aea035f37848c8dfa5b2a5a7533759e00eeaf20e04af3da857821617c762eaa717639b44fd17aabdd78cba5a1b2b7380ed
7
- data.tar.gz: 7b4e5f90dbcf71235efe088f84ae03ec0707539f2072e2f246d0a48e1dc43bd361c8c5befc6a2bebfe7d017ceffca1fab631e897558bbcdf9882f3253cfe747a
6
+ metadata.gz: 29ad4b57bc12dc971e7132a46c52a6c33492838673d53f35c4dafb7a30c915383002365ab65fc7cf0350e35a5d8bb35ce0764c2cc33913f859c9fad49e9b467a
7
+ data.tar.gz: 82ab1755611b6d7f645ab573554f18030766a76a07f93e8e2a9af866ec2eadb2b36426d104142de457ca6af26b4eb05df4516978a77b19de2209057de315f508
checksums.yaml.gz.sig CHANGED
@@ -1 +1,2 @@
1
- QY#7��$��~h �њ��G����ӸǮ܎ f53�Z�Ӑ�F���%R��*k��,����g�9u��wG��賅�F}G$��'=�D���m� .=�|�-�~���|�M���f��3��r��S������FL�?�҅�:~��=�|"a�2+��2�9�g7'�uKvi}����cF�ux7H�٣�Ą#t{�7nI�ԩ�g����-�5]�׊Ks����;
1
+ CY*���g:~'����s{�тzSrTU������2 ��J`�B��@�������<����/�x՜!IC▹r���aOz�����U������;9p������"��u����a��tvW
2
+ ����P
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
+ ## [3.0.30] - 2026-09-01
34
+
35
+ - TAG: [v3.0.30][3.0.30t]
36
+ - COVERAGE: 91.68% -- 6038/6586 lines in 47 files
37
+ - BRANCH COVERAGE: 76.31% -- 2310/3027 branches in 47 files
38
+ - 50.00% documented
39
+
40
+ ### Fixed
41
+
42
+ - Add an isolated family-member publish mode for concurrent monorepo releases.
43
+
44
+ - Add serialized family-member checksum finalization for concurrent monorepo releases.
45
+
33
46
  ## [3.0.29] - 2026-09-01
34
47
 
35
48
  - TAG: [v3.0.29][3.0.29t]
@@ -3786,7 +3799,9 @@ Please file a bug if you notice a violation of semantic versioning.
3786
3799
  - Selecting will run the selected workflow via `act`
3787
3800
  - This may move to its own gem in the future.
3788
3801
 
3789
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.29...HEAD
3802
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.30...HEAD
3803
+ [3.0.30]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.29...v3.0.30
3804
+ [3.0.30t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.30
3790
3805
  [3.0.29]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.28...v3.0.29
3791
3806
  [3.0.29t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.29
3792
3807
  [3.0.28]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.27...v3.0.28
data/README.md CHANGED
@@ -1066,7 +1066,7 @@ Thanks for RTFM. ☺️
1066
1066
  [📌gitmoji]: https://gitmoji.dev
1067
1067
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1068
1068
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1069
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.555-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1069
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.586-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1070
1070
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1071
1071
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1072
1072
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -69,6 +69,8 @@ module Kettle
69
69
  ].freeze
70
70
  DEBUG_TRUE_VALUES = %w[1 true yes on].freeze
71
71
  RELEASE_VALIDATION_SOURCE = "https://gem.coop"
72
+ FAMILY_MEMBER_PUBLISH_MODE_ENV = "KETTLE_RELEASE_FAMILY_MEMBER_PUBLISH"
73
+ FAMILY_MEMBER_FINALIZE_MODE_ENV = "KETTLE_RELEASE_FAMILY_MEMBER_FINALIZE"
72
74
 
73
75
  class << self
74
76
  def run_cmd!(cmd)
@@ -223,6 +225,8 @@ module Kettle
223
225
  @finished_report = nil
224
226
  @changelog_generated_coverage = false
225
227
  @release_task_lockfile_paths = {}
228
+ @family_member_publish = truthy_value?(ENV[FAMILY_MEMBER_PUBLISH_MODE_ENV])
229
+ @family_member_finalize = truthy_value?(ENV[FAMILY_MEMBER_FINALIZE_MODE_ENV])
226
230
  end
227
231
 
228
232
  def run
@@ -255,6 +259,9 @@ module Kettle
255
259
  attr_reader :finished_report
256
260
 
257
261
  def run_with_release_environment
262
+ return run_family_member_publish if family_member_publish?
263
+ return run_family_member_finalize if family_member_finalize?
264
+
258
265
  # Changelog generation at step 0 runs the target project's test bundle
259
266
  # to collect coverage. Normalize its canonical release lockfile before
260
267
  # that subprocess starts; otherwise a local development PATH lock can
@@ -605,6 +612,41 @@ module Kettle
605
612
  @skip_bundle_audit
606
613
  end
607
614
 
615
+ # Kettle Family uses this mode only after it has prepared and validated
616
+ # the shared monorepo release commit. A member may build and publish its
617
+ # gem, but it must never alter the shared Git repository or release it.
618
+ def family_member_publish?
619
+ @family_member_publish
620
+ end
621
+
622
+ def family_member_finalize?
623
+ @family_member_finalize
624
+ end
625
+
626
+ def run_family_member_publish
627
+ version = detect_version
628
+ prepare_release_lockfiles_for_release_tasks!
629
+ ensure_signing_setup_or_skip!
630
+ ensure_release_secrets_ready_for_signing! if signing_enabled? && release_secrets_configured?
631
+ run_cmd!(release_project_command("bundle exec rake build"))
632
+
633
+ gem_name = detect_gem_name
634
+ @release_candidate = build_release_candidate(gem_name, version)
635
+ with_unpublished_candidate_cleanup { publish_built_gem!(version) }
636
+ human_output.puts "\n🚀 Published #{gem_name} v#{version} from family member mode 🚀"
637
+ end
638
+
639
+ # Kettle Family invokes this serially in the primary checkout after
640
+ # concurrent member publication. bin/gem_checksums owns its checksum
641
+ # commit; the family owns the one shared tag, pushes, and GitHub Release.
642
+ def run_family_member_finalize
643
+ version = detect_version
644
+ gem_path = checksum_gem_path_for_version!(version)
645
+ run_cmd!(release_child_command("bin/gem_checksums #{Shellwords.escape(gem_path)}"))
646
+ validate_checksums!(version, stage: "after family member publish")
647
+ human_output.puts "\n🔒 Finalized checksums for #{detect_gem_name} v#{version} from family member mode 🔒"
648
+ end
649
+
608
650
  def truthy_value?(value)
609
651
  return true if value == true
610
652
 
@@ -1868,6 +1910,15 @@ module Kettle
1868
1910
  abort("Failed to create local tag #{tag}.") unless @git.tag_annotated(tag, tag)
1869
1911
  end
1870
1912
 
1913
+ publish_built_gem!(version)
1914
+ end
1915
+
1916
+ def publish_built_gem!(version)
1917
+ gem_path = gem_file_for_version(version)
1918
+ unless gem_path && File.file?(gem_path)
1919
+ abort("Unable to locate built gem for version #{version} in pkg/. Did the build succeed?")
1920
+ end
1921
+
1871
1922
  puts "Publishing #{File.basename(gem_path)} to RubyGems without pushing git refs..."
1872
1923
  run_cmd!("gem push #{Shellwords.escape(gem_path)}")
1873
1924
  gem_name = gem_name_from_gem_path(gem_path, version)
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "3.0.29"
8
+ VERSION = "3.0.30"
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
@@ -1,2 +1,2 @@
1
- '�{w��
2
- *�Ʒa��:���Ȕ��\���l�q^q��)��������*eM��cO:���w�ɴ�3�
1
+ 1����w��̪�Y��I�I���$��B1`���Ԕe�?�\KR�rX����ш|�����1E�C�qC�)��=#��r��7��y��
2
+ hSy-GTXJ�q���<*\ͯX ����� 4=+� 0��0���¥H<M�;���Dq�{�5(/
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: 3.0.29
4
+ version: 3.0.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -400,10 +400,10 @@ licenses:
400
400
  - AGPL-3.0-only
401
401
  metadata:
402
402
  homepage_uri: https://kettle-dev.galtzo.com
403
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.29
404
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.29/CHANGELOG.md
403
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.30
404
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.30/CHANGELOG.md
405
405
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
406
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.29
406
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.30
407
407
  funding_uri: https://github.com/sponsors/pboling
408
408
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
409
409
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file