kettle-dev 3.0.21 → 3.0.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 +14 -1
- data/README.md +4 -3
- data/exe/kettle-release +17 -2
- data/lib/kettle/dev/release_cli.rb +9 -2
- data/lib/kettle/dev/version.rb +1 -1
- 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: ad40aa19520f62dc2838e743db607dddedda644aacaa5cd6c547c6d735f57c00
|
|
4
|
+
data.tar.gz: 0574b95c4cbf251cfcc9518ae7f9ef0669efb18e2d20583f4e6cda8d2a1a4049
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7da8fb76b2666932a2a729c4c479f0a598733050b7ec88d43e61e85740b0fb47f8a25b5465b56257101953eebd2b3c21a51fe17709b8f055d57a3697fde3145c
|
|
7
|
+
data.tar.gz: afb314f4ae1688d92604bfb34975f22e5b54731f99a4de84459126c279be452e788496b17a277c154fc723a7c279322b164bf6653a6b762a63bfcd57ea5e02e2
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.22] - 2026-08-30
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.22][3.0.22t]
|
|
36
|
+
- COVERAGE: 91.58% -- 5893/6435 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.32% -- 2259/2960 branches in 47 files
|
|
38
|
+
- 50.47% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Add an appraisal-only release skip while preserving documentation generation.
|
|
43
|
+
|
|
33
44
|
## [3.0.21] - 2026-08-30
|
|
34
45
|
|
|
35
46
|
- TAG: [v3.0.21][3.0.21t]
|
|
@@ -3688,7 +3699,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3688
3699
|
- Selecting will run the selected workflow via `act`
|
|
3689
3700
|
- This may move to its own gem in the future.
|
|
3690
3701
|
|
|
3691
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3702
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.22...HEAD
|
|
3703
|
+
[3.0.22]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.21...v3.0.22
|
|
3704
|
+
[3.0.22t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.22
|
|
3692
3705
|
[3.0.21]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.20...v3.0.21
|
|
3693
3706
|
[3.0.21t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.21
|
|
3694
3707
|
[3.0.20]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.19...v3.0.20
|
data/README.md
CHANGED
|
@@ -415,7 +415,7 @@ What it does:
|
|
|
415
415
|
Markdown fixtures under `spec/` and `test/`, along with `tmp/`, are intentionally excluded.
|
|
416
416
|
- Skips pre-release checks for any `start_step` greater than `0`, so resumptions begin directly at the requested numbered step.
|
|
417
417
|
- Verifies Bundler >= 2.7, updates the primary and appraisal bundles with `bundle update --bundler`, and commits those lockfiles separately as `🔒️ Update bundle` before release preparation.
|
|
418
|
-
- Runs sanity checks (`bin/setup`, `bin/rake`), confirms version/changelog, optionally updates Appraisals, regenerates docs via `bin/rake yard`, and commits “🔖 Prepare release vX.Y.Z”.
|
|
418
|
+
- Runs sanity checks (`bin/setup`, `bin/rake`), confirms version/changelog, optionally updates Appraisals, regenerates docs via `bin/rake yard`, and commits “🔖 Prepare release vX.Y.Z”. Use `--skip-appraisals` only to omit appraisal generation while retaining documentation generation.
|
|
419
419
|
- Optionally runs your CI locally with `act` before any push:
|
|
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.
|
|
@@ -446,9 +446,10 @@ What it does:
|
|
|
446
446
|
18. Create GitHub Release (requires `GITHUB_TOKEN`)
|
|
447
447
|
19. Push tags to remotes (final)
|
|
448
448
|
- Examples:
|
|
449
|
-
- After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart
|
|
449
|
+
- After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart at the failed step: for example, `bundle exec kettle-release --start-step 10` for CI monitoring or `bundle exec kettle-release --start-step 15` for RubyGems publication. The legacy `start_step=10` spelling remains supported.
|
|
450
450
|
- If the failure required a code or release-metadata change, rerun `bundle exec kettle-release` from step 0 so the release checks, prep metadata, commit, and CI all describe the new release commit.
|
|
451
451
|
- For an intentional same-commit CI bypass, use `bundle exec kettle-release --skip-ci` (or `--skip-steps 10`); this skips remote CI monitoring only and does not claim that CI passed.
|
|
452
|
+
- To retain release documentation generation while bypassing a known Appraisal-only issue, use `bundle exec kettle-release --skip-appraisals`.
|
|
452
453
|
- After fixing a failed pre-release gate, rerun from step 0: `bundle exec kettle-release`
|
|
453
454
|
- After intentionally handling a failed pre-release gate, skip it and start numbered release steps: `bundle exec kettle-release --start-step 1`
|
|
454
455
|
- Auto-approve release confirmation prompts: `bundle exec kettle-release --yes`
|
|
@@ -1056,7 +1057,7 @@ Thanks for RTFM. ☺️
|
|
|
1056
1057
|
[📌gitmoji]: https://gitmoji.dev
|
|
1057
1058
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1058
1059
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1059
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1060
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.435-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1060
1061
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1061
1062
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1062
1063
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/exe/kettle-release
CHANGED
|
@@ -49,7 +49,7 @@ end
|
|
|
49
49
|
# Do not guard with __FILE__ == $PROGRAM_NAME because binstubs use Kernel.load.
|
|
50
50
|
if ARGV.include?("-h") || ARGV.include?("--help")
|
|
51
51
|
puts <<~USAGE
|
|
52
|
-
Usage: kettle-release [--version VERSION] [--local-ci] [--yes] [--appraisal-update] [--skip-changelog] [--skip-bundle-audit] [--start-step STEP] [--skip-ci] [--skip-steps STEPS] [--ci-workflows WORKFLOWS] [--skip-remotes REMOTES] [--required-remotes REMOTES] [--secrets-provider NAME] [--json|--events[=TYPES]] [--report PATH] [start_step=<0-19>]
|
|
52
|
+
Usage: kettle-release [--version VERSION] [--local-ci] [--yes] [--appraisal-update] [--skip-changelog] [--skip-appraisals] [--skip-bundle-audit] [--start-step STEP] [--skip-ci] [--skip-steps STEPS] [--ci-workflows WORKFLOWS] [--skip-remotes REMOTES] [--required-remotes REMOTES] [--secrets-provider NAME] [--json|--events[=TYPES]] [--report PATH] [start_step=<0-19>]
|
|
53
53
|
|
|
54
54
|
Automates the release flow for a Ruby gem in the host project.
|
|
55
55
|
|
|
@@ -91,6 +91,7 @@ if ARGV.include?("-h") || ARGV.include?("--help")
|
|
|
91
91
|
--yes # Auto-approve release confirmation prompts
|
|
92
92
|
--appraisal-update # Use slower appraisal:update instead of default appraisal:generate
|
|
93
93
|
--skip-changelog # Skip kettle-changelog but retain pre-release gates and the default task
|
|
94
|
+
--skip-appraisals # Skip appraisal generation at step 5 but still generate documentation
|
|
94
95
|
--skip-bundle-audit # Skip bundle:audit/update during release rake checks
|
|
95
96
|
--ci-workflows WORKFLOWS # Comma-separated workflow files or stems to monitor at CI step 10
|
|
96
97
|
--skip-remotes REMOTES # Comma-separated git remote names to exclude from release fetch/push parity
|
|
@@ -227,6 +228,19 @@ def extract_skip_changelog_arg!(argv)
|
|
|
227
228
|
skip_changelog
|
|
228
229
|
end
|
|
229
230
|
|
|
231
|
+
def extract_skip_appraisals_arg!(argv)
|
|
232
|
+
skip_appraisals = !!argv.delete("--skip-appraisals")
|
|
233
|
+
argv.delete_if do |arg|
|
|
234
|
+
if arg.start_with?("skip_appraisals=")
|
|
235
|
+
skip_appraisals = arg.split("=", 2)[1].to_s.downcase != "false"
|
|
236
|
+
true
|
|
237
|
+
else
|
|
238
|
+
false
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
skip_appraisals
|
|
242
|
+
end
|
|
243
|
+
|
|
230
244
|
def extract_ci_workflows_arg!(argv)
|
|
231
245
|
workflows = nil
|
|
232
246
|
if (idx = argv.index("--ci-workflows"))
|
|
@@ -353,6 +367,7 @@ yes = !!ARGV.delete("--yes")
|
|
|
353
367
|
appraisal_task = ARGV.delete("--appraisal-update") ? "appraisal:update" : nil
|
|
354
368
|
skip_bundle_audit = !!ARGV.delete("--skip-bundle-audit")
|
|
355
369
|
skip_changelog = extract_skip_changelog_arg!(ARGV)
|
|
370
|
+
skip_appraisals = extract_skip_appraisals_arg!(ARGV)
|
|
356
371
|
json_output = !!ARGV.delete("--json")
|
|
357
372
|
events_output, event_types = extract_events_arg!(ARGV)
|
|
358
373
|
Kettle::Dev::ExitAdapter.abort("--events cannot be combined with --json") if events_output && json_output
|
|
@@ -369,7 +384,7 @@ secrets_provider = extract_secrets_provider_arg!(ARGV)
|
|
|
369
384
|
|
|
370
385
|
begin
|
|
371
386
|
event_stream = events_output ? Kettle::Ndjson.event_stream($stdout, types: event_types) : nil
|
|
372
|
-
Kettle::Dev::ReleaseCLI.new(start_step: start_step, local_ci: local_ci, version: version_override, appraisal_task: appraisal_task, skip_steps: skip_steps, skip_changelog: skip_changelog, skip_bundle_audit: skip_bundle_audit, ci_workflows: ci_workflows, skip_remotes: skip_remotes, required_remotes: required_remotes, secrets_provider_name: secrets_provider, yes: yes, event_stream: event_stream, json_output: json_output, json_io: $stdout, report_path: report_path).run
|
|
387
|
+
Kettle::Dev::ReleaseCLI.new(start_step: start_step, local_ci: local_ci, version: version_override, appraisal_task: appraisal_task, skip_steps: skip_steps, skip_changelog: skip_changelog, skip_appraisals: skip_appraisals, skip_bundle_audit: skip_bundle_audit, ci_workflows: ci_workflows, skip_remotes: skip_remotes, required_remotes: required_remotes, secrets_provider_name: secrets_provider, yes: yes, event_stream: event_stream, json_output: json_output, json_io: $stdout, report_path: report_path).run
|
|
373
388
|
rescue LoadError => e
|
|
374
389
|
warn("#{script_basename}: could not load dependency: #{e.class}: #{e.message}")
|
|
375
390
|
warn(Array(e.backtrace).join("\n")) if ENV["DEBUG"]
|
|
@@ -191,13 +191,14 @@ module Kettle
|
|
|
191
191
|
|
|
192
192
|
public
|
|
193
193
|
|
|
194
|
-
def initialize(start_step: 0, local_ci: false, version: nil, appraisal_task: nil, skip_steps: nil, skip_changelog: nil, skip_bundle_audit: nil, ci_workflows: nil, skip_remotes: nil, required_remotes: nil, secrets_provider_name: nil, yes: false, **options)
|
|
194
|
+
def initialize(start_step: 0, local_ci: false, version: nil, appraisal_task: nil, skip_steps: nil, skip_changelog: nil, skip_appraisals: nil, skip_bundle_audit: nil, ci_workflows: nil, skip_remotes: nil, required_remotes: nil, secrets_provider_name: nil, yes: false, **options)
|
|
195
195
|
@root = Kettle::Dev::CIHelpers.project_root
|
|
196
196
|
@git = Kettle::Dev::GitAdapter.new(@root)
|
|
197
197
|
@start_step = (start_step || 0).to_i
|
|
198
198
|
@start_step = 0 if @start_step < 0
|
|
199
199
|
@skip_steps = normalize_skip_steps(skip_steps)
|
|
200
200
|
@skip_changelog = truthy_value?(skip_changelog) || truthy_value?(ENV["KETTLE_DEV_SKIP_CHANGELOG"])
|
|
201
|
+
@skip_appraisals = truthy_value?(skip_appraisals) || truthy_value?(ENV["KETTLE_DEV_SKIP_APPRAISALS"])
|
|
201
202
|
@ci_workflows = normalize_ci_workflows(ci_workflows || ENV["K_RELEASE_CI_WORKFLOWS"])
|
|
202
203
|
@skip_remotes = normalize_remote_names(skip_remotes || ENV["K_RELEASE_SKIP_REMOTES"], "skip remotes")
|
|
203
204
|
@required_remotes = normalize_required_remotes(required_remotes)
|
|
@@ -371,7 +372,9 @@ module Kettle
|
|
|
371
372
|
# 5. appraisal:generate (optional) + canonical docs build
|
|
372
373
|
if run_step?(5)
|
|
373
374
|
appraisals_path = File.join(@root, "Appraisals")
|
|
374
|
-
if
|
|
375
|
+
if skip_appraisals?
|
|
376
|
+
puts "Skipping #{@appraisal_task} because --skip-appraisals was provided."
|
|
377
|
+
elsif File.file?(appraisals_path)
|
|
375
378
|
puts "Appraisals detected at #{Kettle::Dev.display_path(appraisals_path)}. Running: bin/rake #{@appraisal_task}"
|
|
376
379
|
run_cmd!(release_project_command("bin/rake #{@appraisal_task}"))
|
|
377
380
|
else
|
|
@@ -680,6 +683,10 @@ module Kettle
|
|
|
680
683
|
@skip_changelog
|
|
681
684
|
end
|
|
682
685
|
|
|
686
|
+
def skip_appraisals?
|
|
687
|
+
@skip_appraisals
|
|
688
|
+
end
|
|
689
|
+
|
|
683
690
|
def prepare_release_lockfiles_for_commit!
|
|
684
691
|
# Release setup and documentation tasks can re-materialize local PATH
|
|
685
692
|
# sources in the parent development bundle after the preflight reset.
|
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.0.
|
|
8
|
+
VERSION = "3.0.22"
|
|
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
|
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.0.
|
|
4
|
+
version: 3.0.22
|
|
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.
|
|
404
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.
|
|
403
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.22
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.22/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.
|
|
406
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.22
|
|
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
|