kettle-dev 3.0.12 → 3.0.13
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 +3 -3
- data/exe/kettle-release +44 -13
- data/lib/kettle/dev/ci_monitor.rb +3 -3
- data/lib/kettle/dev/release_cli.rb +1 -1
- 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: a082b4a2994774e072557058c17670f3f4252e98bf4c406c38265233e37f10df
|
|
4
|
+
data.tar.gz: c09ac0a7de3fda62be5676f735a170c6577816cdfde710cbcf48d8805e5e6040
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41b0bf2772bd39e1f164b82dc1bf0f07accc07a3310a7e642c75ba1729b2c3cca5db0030b16b0af015e63c6902b596276f79470fc2f646be964a03ec485e565c
|
|
7
|
+
data.tar.gz: 57a42e46f0dfb6ad000c952e82a46a3f39308d9e3036363f21a8664b00fbb30e3a5a2e96eef8d88bf6a7aa5a68d9b935e934d450796962688ddba216af7ac92a
|
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.13] - 2026-08-25
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.13][3.0.13t]
|
|
36
|
+
- COVERAGE: 91.54% -- 5758/6290 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.44% -- 2210/2891 branches in 47 files
|
|
38
|
+
- 50.74% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Add named standalone release aliases for CI bypass and numbered-step recovery.
|
|
43
|
+
|
|
33
44
|
## [3.0.12] - 2026-08-25
|
|
34
45
|
|
|
35
46
|
- TAG: [v3.0.12][3.0.12t]
|
|
@@ -3557,7 +3568,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3557
3568
|
- Selecting will run the selected workflow via `act`
|
|
3558
3569
|
- This may move to its own gem in the future.
|
|
3559
3570
|
|
|
3560
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3571
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.13...HEAD
|
|
3572
|
+
[3.0.13]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.12...v3.0.13
|
|
3573
|
+
[3.0.13t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.13
|
|
3561
3574
|
[3.0.12]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.11...v3.0.12
|
|
3562
3575
|
[3.0.12t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.12
|
|
3563
3576
|
[3.0.11]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.10...v3.0.11
|
data/README.md
CHANGED
|
@@ -443,11 +443,11 @@ What it does:
|
|
|
443
443
|
18. Create GitHub Release (requires `GITHUB_TOKEN`)
|
|
444
444
|
19. Push tags to remotes (final)
|
|
445
445
|
- Examples:
|
|
446
|
-
- After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart from monitoring: `bundle exec kettle-release start_step=10`
|
|
446
|
+
- After a transient CI or provider failure with no code, version, changelog, or lockfile changes, restart from monitoring: `bundle exec kettle-release --start-step 10` (the legacy `start_step=10` spelling remains supported)
|
|
447
447
|
- 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.
|
|
448
|
-
- For an intentional same-commit CI bypass, use `bundle exec kettle-release
|
|
448
|
+
- 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.
|
|
449
449
|
- After fixing a failed pre-release gate, rerun from step 0: `bundle exec kettle-release`
|
|
450
|
-
- After intentionally handling a failed pre-release gate, skip it and start numbered release steps: `bundle exec kettle-release
|
|
450
|
+
- After intentionally handling a failed pre-release gate, skip it and start numbered release steps: `bundle exec kettle-release --start-step 1`
|
|
451
451
|
- Auto-approve release confirmation prompts: `bundle exec kettle-release --yes`
|
|
452
452
|
- Run direct release with 1Password secrets: `bundle exec kettle-release --secrets-provider 1password`
|
|
453
453
|
- Lockfile recovery:
|
data/exe/kettle-release
CHANGED
|
@@ -49,16 +49,16 @@ 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] [--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-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
|
|
|
56
56
|
Full releases start at step 0 and run `kettle-pre-release` plus
|
|
57
|
-
`kettle-changelog` before the numbered release steps. Any
|
|
57
|
+
`kettle-changelog` before the numbered release steps. Any start step
|
|
58
58
|
greater than 0 skips pre-release prep and resumes directly at the
|
|
59
59
|
requested numbered step.
|
|
60
60
|
|
|
61
|
-
Start steps (use start_step=<n>
|
|
61
|
+
Start steps (use --start-step <n>; start_step=<n> remains supported):
|
|
62
62
|
0. Run kettle-pre-release gates and kettle-changelog
|
|
63
63
|
1. Verify Bundler >= 2.7 (start at 1 to skip pre-release checks)
|
|
64
64
|
2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
|
|
@@ -82,7 +82,9 @@ if ARGV.include?("-h") || ARGV.include?("--help")
|
|
|
82
82
|
19. Push tags to remotes (final)
|
|
83
83
|
|
|
84
84
|
Options:
|
|
85
|
-
|
|
85
|
+
--start-step NUMBER # Begin at the numbered step above; use 10 only for a transient CI failure on the same commit
|
|
86
|
+
start_step=<number> # Legacy alias for --start-step
|
|
87
|
+
--skip-ci # Alias for --skip-steps 10; skips remote CI monitoring while running the rest
|
|
86
88
|
skip_steps=<numbers> # Comma-separated numbered steps to skip while running the rest; 10 skips remote CI monitoring
|
|
87
89
|
--skip-steps NUMBERS # Alias for skip_steps=NUMBERS (e.g., --skip-steps 10 or --skip-steps 10,18)
|
|
88
90
|
--version VERSION # Use this version instead of detecting VERSION from lib/**/version.rb
|
|
@@ -101,9 +103,11 @@ if ARGV.include?("-h") || ARGV.include?("--help")
|
|
|
101
103
|
# create the git tag locally, then push commits and tags after publish
|
|
102
104
|
|
|
103
105
|
Recovery guidance:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
--start-step 10 # Retry only CI monitoring after a transient CI/provider failure; do not use after code or metadata changes
|
|
107
|
+
--start-step 11 # Continue after CI monitoring only when that same release commit was intentionally accepted
|
|
108
|
+
--skip-ci # Skip remote CI monitoring for the same prepared release commit; this does not rerun or replace CI
|
|
109
|
+
start_step=10 # Legacy spelling of --start-step 10
|
|
110
|
+
skip_steps=10 # Legacy spelling of --skip-ci
|
|
107
111
|
kettle-release # After code, version, changelog, or lockfile changes, rerun the complete flow from step 0
|
|
108
112
|
|
|
109
113
|
Environment:
|
|
@@ -139,10 +143,11 @@ if ARGV.include?("-h") || ARGV.include?("--help")
|
|
|
139
143
|
Examples:
|
|
140
144
|
kettle-release # full flow from the top (start_step=0)
|
|
141
145
|
kettle-release --local-ci # run local act CI, publish gem, then push commits/tags
|
|
142
|
-
kettle-release
|
|
143
|
-
kettle-release
|
|
144
|
-
kettle-release
|
|
145
|
-
|
|
146
|
+
kettle-release --start-step 1 # skip pre-release checks and start numbered release steps
|
|
147
|
+
kettle-release --start-step 10 # retry CI monitoring after a transient failure on the unchanged release commit
|
|
148
|
+
kettle-release --skip-ci # intentionally skip remote CI monitoring for the unchanged release commit
|
|
149
|
+
kettle-release start_step=10 # legacy spelling of --start-step 10
|
|
150
|
+
SKIP_GEM_SIGNING=true kettle-release --start-step 14 # build+release without signing
|
|
146
151
|
USAGE
|
|
147
152
|
exit 0
|
|
148
153
|
end
|
|
@@ -184,6 +189,31 @@ def extract_skip_steps_arg!(argv)
|
|
|
184
189
|
skip_steps
|
|
185
190
|
end
|
|
186
191
|
|
|
192
|
+
def extract_start_step_arg!(argv)
|
|
193
|
+
start_step = nil
|
|
194
|
+
if (idx = argv.index("--start-step"))
|
|
195
|
+
start_step = argv[idx + 1]
|
|
196
|
+
if start_step.to_s.empty? || start_step.to_s.start_with?("-")
|
|
197
|
+
Kettle::Dev::ExitAdapter.abort("--start-step requires a numbered release step")
|
|
198
|
+
end
|
|
199
|
+
argv.slice!(idx, 2)
|
|
200
|
+
end
|
|
201
|
+
argv.delete_if do |arg|
|
|
202
|
+
if arg.start_with?("--start-step=", "start_step=")
|
|
203
|
+
start_step = arg.split("=", 2)[1]
|
|
204
|
+
Kettle::Dev::ExitAdapter.abort("--start-step requires a numbered release step") if start_step.to_s.empty?
|
|
205
|
+
true
|
|
206
|
+
else
|
|
207
|
+
false
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
start_step
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def extract_skip_ci_arg!(argv)
|
|
214
|
+
!!argv.delete("--skip-ci")
|
|
215
|
+
end
|
|
216
|
+
|
|
187
217
|
def extract_skip_changelog_arg!(argv)
|
|
188
218
|
skip_changelog = !!argv.delete("--skip-changelog")
|
|
189
219
|
argv.delete_if do |arg|
|
|
@@ -326,10 +356,11 @@ skip_changelog = extract_skip_changelog_arg!(ARGV)
|
|
|
326
356
|
json_output = !!ARGV.delete("--json")
|
|
327
357
|
events_output, event_types = extract_events_arg!(ARGV)
|
|
328
358
|
Kettle::Dev::ExitAdapter.abort("--events cannot be combined with --json") if events_output && json_output
|
|
329
|
-
|
|
330
|
-
|
|
359
|
+
start_step = extract_start_step_arg!(ARGV) || 0
|
|
360
|
+
skip_ci = extract_skip_ci_arg!(ARGV)
|
|
331
361
|
version_override = extract_version_arg!(ARGV)
|
|
332
362
|
skip_steps = extract_skip_steps_arg!(ARGV)
|
|
363
|
+
skip_steps = [skip_steps, "10"].compact.join(",") if skip_ci
|
|
333
364
|
ci_workflows = extract_ci_workflows_arg!(ARGV)
|
|
334
365
|
skip_remotes = extract_skip_remotes_arg!(ARGV)
|
|
335
366
|
required_remotes = extract_required_remotes_arg!(ARGV)
|
|
@@ -49,7 +49,7 @@ module Kettle
|
|
|
49
49
|
#
|
|
50
50
|
# @param restart_hint [String] guidance command shown on failure
|
|
51
51
|
# @return [Boolean] whether all configured CI providers passed
|
|
52
|
-
def monitor_all!(restart_hint: "bundle exec kettle-release
|
|
52
|
+
def monitor_all!(restart_hint: "bundle exec kettle-release --start-step 10", workflows: nil, keepalive: nil, event_recorder: nil, **options)
|
|
53
53
|
results = [
|
|
54
54
|
monitor_github_internal!(restart_hint: restart_hint, workflows: workflows, keepalive: keepalive, event_recorder: event_recorder),
|
|
55
55
|
monitor_gitlab_internal!(restart_hint: restart_hint, keepalive: keepalive, event_recorder: event_recorder)
|
|
@@ -69,7 +69,7 @@ module Kettle
|
|
|
69
69
|
# Returns false when GitLab is not configured for this repo/branch.
|
|
70
70
|
# @param restart_hint [String]
|
|
71
71
|
# @return [Boolean]
|
|
72
|
-
def monitor_gitlab!(restart_hint: "bundle exec kettle-release
|
|
72
|
+
def monitor_gitlab!(restart_hint: "bundle exec kettle-release --start-step 10")
|
|
73
73
|
result = monitor_gitlab_internal!(restart_hint: restart_hint)
|
|
74
74
|
result.nil? ? false : result
|
|
75
75
|
end
|
|
@@ -138,7 +138,7 @@ module Kettle
|
|
|
138
138
|
# Designed for kettle-release.
|
|
139
139
|
# @param restart_hint [String]
|
|
140
140
|
# @return [void]
|
|
141
|
-
def monitor_and_prompt_for_release!(restart_hint: "bundle exec kettle-release
|
|
141
|
+
def monitor_and_prompt_for_release!(restart_hint: "bundle exec kettle-release --start-step 10")
|
|
142
142
|
results = collect_all
|
|
143
143
|
any_checks = !(results[:github].nil? || results[:github].empty?) || !!results[:gitlab]
|
|
144
144
|
abort("CI configuration not detected (GitHub or GitLab). Ensure CI is configured and remotes point to the correct hosts.") unless any_checks
|
|
@@ -1253,7 +1253,7 @@ module Kettle
|
|
|
1253
1253
|
def monitor_workflows_after_push!
|
|
1254
1254
|
ensure_github_pull_request_for_ci!
|
|
1255
1255
|
keep_release_secrets_alive!("CI monitoring")
|
|
1256
|
-
restart_hint = "bundle exec kettle-release
|
|
1256
|
+
restart_hint = "bundle exec kettle-release --start-step 10"
|
|
1257
1257
|
emit_ci_monitor_event(action: "start", status: "started", workflows: @ci_workflows, restart_hint: restart_hint)
|
|
1258
1258
|
# The monitor preserves fail-fast behavior by default and returns false
|
|
1259
1259
|
# when K_RELEASE_CI_CONTINUE explicitly allows failed CI checks.
|
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.13"
|
|
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.13
|
|
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.13
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.13/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.13
|
|
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
|