kettle-dev 3.1.5 → 3.1.6
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 +1 -3
- data/CHANGELOG.md +18 -1
- data/README.md +7 -6
- data/lib/kettle/dev/release_cli.rb +47 -4
- data/lib/kettle/dev/version.rb +1 -1
- data/lib/kettle/dev.rb +5 -4
- 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: a3eedbe026cd767bf8c441626bcb96dea0701b1c03665ae754a1c1a9d8a5145c
|
|
4
|
+
data.tar.gz: 90750eaeb7d50a06b475fc893a5184e28a9526d7a439ecd74b4804fd152c43cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 46e1634ec393b5e6f4dace446165c407002d81f94841066b2da98a183f0c5251886cac9c93daf6ebbd75bd8333be6fb278aec44c137dad2c7d34a2b1de82334e
|
|
7
|
+
data.tar.gz: 1e7b236a4e37268062b4c3ac7620ddc179c35aa615f53529c5490b681335aec8d2c710a740eb34b825c9248509664c8b808e85e2932375728a24a859f9d21778
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
�/h�JU(�Fk��Zڧ9��h]�q
|
|
3
|
-
;�7q<����9����i�(��w�})�`t�h/O���ao�|;J��[��=#�T|]�("_#�:���(pj���g#��3S��M��Wpr�-�|�d����ED��cW� C��b8{}���J��ZBc7t��.a(�j��2�嬱�l䶼����������Y�K/�V½��yx����f)���������ͮ4����z�3l��9�$k7�f�;}�W6|p�k?�r�W��^�z�U�
|
|
1
|
+
a��%$a)��=QD���X��^½��G���ya��@hj��=�&9�ﲚG�MY(a����:lW�p��r���L�'CY��u'�n�#J����?�O���1|�������!*{�~t�dv�tj���ep��9x;�g�A�O�4G^�~ph����l�����0���`~y��h`bZ�P��>~k����H�i�;:9ⲅ��!�����Yȭj@�3�H7�m�j��Ӫ(l�N{)�2�)6%puW?��7ٿ/rħ��s9"ؼ>�.̻{��*��Jo}�F�H���cr����k�쬔V&�Ow�W�)��3�Y
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,21 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.1.6] - 2026-10-02
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.1.6][3.1.6t]
|
|
36
|
+
- COVERAGE: 91.66% -- 6210/6775 lines in 49 files
|
|
37
|
+
- BRANCH COVERAGE: 76.13% -- 2370/3113 branches in 49 files
|
|
38
|
+
- 51.34% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Branch-stack releases now dispatch selected GitHub Actions workflows directly on the release branch instead of relying on a possibly conflicted validation PR.
|
|
43
|
+
|
|
44
|
+
- Branch-stack release workflow validation now supports the older Psych API bundled with Ruby 2.4.
|
|
45
|
+
|
|
46
|
+
- YAML loading now selects the supported Psych API by version, including Ruby 2.5 environments that report misleading keyword parameters.
|
|
47
|
+
|
|
33
48
|
## [3.1.5] - 2026-09-28
|
|
34
49
|
|
|
35
50
|
- TAG: [v3.1.5][3.1.5t]
|
|
@@ -3938,7 +3953,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3938
3953
|
- Selecting will run the selected workflow via `act`
|
|
3939
3954
|
- This may move to its own gem in the future.
|
|
3940
3955
|
|
|
3941
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.
|
|
3956
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.6...HEAD
|
|
3957
|
+
[3.1.6]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.5...v3.1.6
|
|
3958
|
+
[3.1.6t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.6
|
|
3942
3959
|
[3.1.5]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.4...v3.1.5
|
|
3943
3960
|
[3.1.5t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.5
|
|
3944
3961
|
[3.1.4]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.3...v3.1.4
|
data/README.md
CHANGED
|
@@ -420,7 +420,8 @@ What it does:
|
|
|
420
420
|
- Enable with env: `K_RELEASE_LOCAL_CI="true"` (run automatically) or `K_RELEASE_LOCAL_CI="ask"` (prompt \[Y/n\]).
|
|
421
421
|
- Select workflow with `K_RELEASE_LOCAL_CI_WORKFLOW` (with or without .yml/.yaml). Defaults to `locked_deps.yml` if present; otherwise the first workflow discovered.
|
|
422
422
|
- On failure, the release prep commit is soft-rolled-back (`git reset --soft HEAD^`) and the process aborts.
|
|
423
|
-
- Ensures trunk sync and rebases feature as needed, pushes, monitors GitHub Actions with a progress bar, and merges feature to trunk on success.
|
|
423
|
+
- Ensures trunk sync and rebases feature branches as needed, pushes, monitors GitHub Actions with a progress bar, and merges feature to trunk on success.
|
|
424
|
+
- For release branches listed in `.kettle-family.yml` branch-stack targets, it intentionally does not pull/rebase from trunk or merge the leaf branch into trunk. Instead, it starts the selected GitHub Actions workflows directly on the pushed release branch; each selected workflow must declare `workflow_dispatch`. This validates the exact branch-stack commit without requiring an often-conflicting PR to trunk.
|
|
424
425
|
- Exports `SOURCE_DATE_EPOCH`, builds (optionally signed), creates gem checksums, and runs `bundle exec rake release` (prompts for signing key + RubyGems MFA OTP as needed).
|
|
425
426
|
- Options:
|
|
426
427
|
- `start_step` map (skip directly to a phase):
|
|
@@ -433,11 +434,11 @@ What it does:
|
|
|
433
434
|
(or appraisal:update with --appraisal-update)
|
|
434
435
|
6. Ensure git user configured; commit release prep
|
|
435
436
|
7. Optional local CI with `act` (controlled by `K_RELEASE_LOCAL_CI`)
|
|
436
|
-
8. Ensure trunk in sync across remotes; rebase feature as needed
|
|
437
|
+
8. Ensure trunk in sync across remotes; rebase feature as needed (skipped for configured branch-stack release targets)
|
|
437
438
|
9. Push current branch to remotes (or 'all' remote)
|
|
438
|
-
10. Monitor CI after push;
|
|
439
|
-
11. Merge feature into trunk and push
|
|
440
|
-
12. Checkout trunk and pull latest
|
|
439
|
+
10. Monitor CI after push; configured branch-stack releases dispatch each selected workflow directly on the release branch
|
|
440
|
+
11. Merge feature into trunk and push (skipped for branch-stack release targets)
|
|
441
|
+
12. Checkout trunk and pull latest (skipped for branch-stack release targets)
|
|
441
442
|
13. Gem signing checks/guidance (skip with `SKIP_GEM_SIGNING=true`)
|
|
442
443
|
14. Build gem (bundle exec rake build)
|
|
443
444
|
15. Release gem (bundle exec rake release)
|
|
@@ -1066,7 +1067,7 @@ Thanks for RTFM. ☺️
|
|
|
1066
1067
|
[📌gitmoji]: https://gitmoji.dev
|
|
1067
1068
|
[📌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
1069
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1069
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1070
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.775-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1070
1071
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1071
1072
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1072
1073
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -1419,7 +1419,7 @@ module Kettle
|
|
|
1419
1419
|
end
|
|
1420
1420
|
|
|
1421
1421
|
def monitor_workflows_after_push!
|
|
1422
|
-
|
|
1422
|
+
ensure_ci_trigger_for_release_branch!
|
|
1423
1423
|
keep_release_secrets_alive!("CI monitoring")
|
|
1424
1424
|
restart_hint = "bundle exec kettle-release --start-step 10"
|
|
1425
1425
|
emit_ci_monitor_event(action: "start", status: "started", workflows: @ci_workflows, restart_hint: restart_hint)
|
|
@@ -1452,13 +1452,18 @@ module Kettle
|
|
|
1452
1452
|
end
|
|
1453
1453
|
end
|
|
1454
1454
|
|
|
1455
|
-
def
|
|
1455
|
+
def ensure_ci_trigger_for_release_branch!
|
|
1456
1456
|
branch = current_branch
|
|
1457
1457
|
return if branch.to_s.empty?
|
|
1458
1458
|
|
|
1459
1459
|
trunk = detect_trunk_branch
|
|
1460
1460
|
return if branch == trunk
|
|
1461
1461
|
|
|
1462
|
+
if branch_stack_release_branch?(branch, trunk)
|
|
1463
|
+
dispatch_github_workflows!(branch: branch)
|
|
1464
|
+
return
|
|
1465
|
+
end
|
|
1466
|
+
|
|
1462
1467
|
gh_remote = preferred_github_remote
|
|
1463
1468
|
return unless gh_remote
|
|
1464
1469
|
|
|
@@ -1487,6 +1492,44 @@ module Kettle
|
|
|
1487
1492
|
}
|
|
1488
1493
|
end
|
|
1489
1494
|
|
|
1495
|
+
def dispatch_github_workflows!(branch:)
|
|
1496
|
+
gh_remote = preferred_github_remote
|
|
1497
|
+
return unless gh_remote
|
|
1498
|
+
|
|
1499
|
+
owner, repo = parse_github_owner_repo(remote_url(gh_remote))
|
|
1500
|
+
return unless owner && repo
|
|
1501
|
+
|
|
1502
|
+
root = Kettle::Dev::CIHelpers.ci_project_root
|
|
1503
|
+
workflows = @ci_workflows.empty? ? Kettle::Dev::CIHelpers.workflows_list(root) : @ci_workflows
|
|
1504
|
+
unsupported = workflows.reject { |workflow| workflow_dispatch_configured?(root, workflow) }
|
|
1505
|
+
unless unsupported.empty?
|
|
1506
|
+
abort("Branch-stack release CI requires workflow_dispatch in every selected workflow; unsupported: #{unsupported.join(", ")}")
|
|
1507
|
+
end
|
|
1508
|
+
|
|
1509
|
+
workflows.each do |workflow|
|
|
1510
|
+
gh_output!("workflow", "run", workflow, "--repo", "#{owner}/#{repo}", "--ref", branch)
|
|
1511
|
+
puts "Dispatched GitHub Actions workflow #{workflow} on branch #{branch}."
|
|
1512
|
+
end
|
|
1513
|
+
end
|
|
1514
|
+
|
|
1515
|
+
def workflow_dispatch_configured?(root, workflow)
|
|
1516
|
+
path = File.join(root, ".github", "workflows", workflow)
|
|
1517
|
+
return false unless File.file?(path)
|
|
1518
|
+
|
|
1519
|
+
document = Kettle::Dev.safe_load_yaml(File.read(path), aliases: true)
|
|
1520
|
+
triggers = document.is_a?(Hash) ? (document["on"] || document[true]) : nil
|
|
1521
|
+
case triggers
|
|
1522
|
+
when Hash
|
|
1523
|
+
triggers.key?("workflow_dispatch") || triggers.key?(:workflow_dispatch)
|
|
1524
|
+
when Array
|
|
1525
|
+
triggers.any? { |trigger| trigger.to_s == "workflow_dispatch" }
|
|
1526
|
+
else
|
|
1527
|
+
false
|
|
1528
|
+
end
|
|
1529
|
+
rescue Psych::Exception
|
|
1530
|
+
false
|
|
1531
|
+
end
|
|
1532
|
+
|
|
1490
1533
|
def github_pull_request_for_branch(owner:, repo:, branch:, base:)
|
|
1491
1534
|
output = gh_output!(
|
|
1492
1535
|
"pr",
|
|
@@ -1561,9 +1604,9 @@ module Kettle
|
|
|
1561
1604
|
|
|
1562
1605
|
exit_code = status.respond_to?(:exitstatus) ? status.exitstatus : 1
|
|
1563
1606
|
diag = stderr_str.to_s.empty? ? "" : "\n--- STDERR ---\n#{stderr_str}".rstrip
|
|
1564
|
-
abort("GitHub
|
|
1607
|
+
abort("GitHub CLI command failed: gh #{args.join(" ")} (exit #{exit_code})#{diag}")
|
|
1565
1608
|
rescue Errno::ENOENT
|
|
1566
|
-
abort("GitHub
|
|
1609
|
+
abort("GitHub CLI command failed: gh CLI is required for release CI setup.")
|
|
1567
1610
|
end
|
|
1568
1611
|
|
|
1569
1612
|
def run_cmd!(cmd, resume_step: @release_resume_step)
|
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 = "3.1.
|
|
8
|
+
VERSION = "3.1.6"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data/lib/kettle/dev.rb
CHANGED
|
@@ -115,10 +115,11 @@ module Kettle
|
|
|
115
115
|
text.to_s.gsub(VAR_HOME_TEXT, "/home")
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
def safe_load_yaml(content)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
def safe_load_yaml(content, aliases: false)
|
|
119
|
+
supports_keyword_options = Gem::Version.new(Psych::VERSION) >= Gem::Version.new("4.0")
|
|
120
|
+
return YAML.safe_load(content, permitted_classes: [], aliases: aliases) if supports_keyword_options
|
|
121
|
+
|
|
122
|
+
YAML.safe_load(content, [], [], aliases)
|
|
122
123
|
end
|
|
123
124
|
|
|
124
125
|
def safe_load_yaml_file(path)
|
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: 3.1.
|
|
4
|
+
version: 3.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -422,10 +422,10 @@ licenses:
|
|
|
422
422
|
- AGPL-3.0-only
|
|
423
423
|
metadata:
|
|
424
424
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
425
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.
|
|
426
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.
|
|
425
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.6
|
|
426
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.6/CHANGELOG.md
|
|
427
427
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
428
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.
|
|
428
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.6
|
|
429
429
|
funding_uri: https://github.com/sponsors/pboling
|
|
430
430
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
431
431
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|