Repository navigation
feat!: require Ruby 3.2 and busser 0.9, adopt release-please - #13
Merged
Merged
Conversation
- Set required_ruby_version to ">= 3.1" in the gemspec - Standardize .rubocop.yml on cookstyle/chefstyle with TargetRubyVersion 3.1 (the standalone `chefstyle` gem no longer loads, which broke linting) - Run unit tests on every Ruby release from 3.1 to 4.0 and run cookstyle --chefstyle on Ruby 3.1 - Add the cookstyle bundler group where it was missing so `bundle exec cookstyle` resolves in CI - Apply cookstyle --chefstyle autocorrections - Drop dead linters (cane, tailor, finstyle, standalone chefstyle) that are superseded by cookstyle and fail on modern Ruby Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Add the standard .markdownlint.yaml / .yamllint configs where missing (repos without them fell back to strict defaults and failed CI) - Exclude CHANGELOG files from markdown-lint in the shared workflow, matching test-kitchen; generated changelogs cannot satisfy the rules and are rewritten on each release - Fix real YAML indentation (sequences must be indented under their key); verified the parsed YAML is unchanged - Remove dead .travis.yml / appveyor.yml configs, which were also the main yamllint offenders - README cleanup: drop obsolete <a name="..."></a> heading anchors and dead travis-ci.org badges, modernize .png badge URLs, fix heading levels, add code-fence languages, repair broken lists, strip trailing whitespace Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
It pulls an old rubocop into resolution alongside cookstyle. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Remove Code Climate badges - Fix dead documentation links (docs.kitchen-ci.org and old downloads.chef.io/docs.chef.io paths are gone; ChefDK is superseded by Chef Workstation), and repoint chef/* GitHub links at test-kitchen/* - Replace the "enter-github-user" placeholder links left over from the gem template - Point LICENSE links at the branch and filename that actually exist - Normalize the gemspec license to the SPDX identifier "Apache-2.0" so it matches the shipped LICENSE file Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
guard-cane pulls in cane, which calls File.exists? -- removed in Ruby 4.0 -- so it broke the test run on the new matrix. guard-rubocop and the pinned chefstyle group drag an old rubocop into resolution, which resolved cookstyle down to 7.x where "cookstyle --chefstyle" is not a valid option. Cookstyle supersedes all of these. Also drop the comment describing the version-pinned style libraries, since those dependencies are gone, and collapse the blank lines left behind. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Drop the chefstyle bundler group / dev dependency. chefstyle pins an old rubocop, which resolves cookstyle down to 7.x where "cookstyle --chefstyle" is not a valid option. Cookstyle supersedes it. - Remove .cane config files; cane is unmaintained and calls File.exists?, removed in Ruby 4.0 - Remove the bundler dev dependency; bundler ships with Ruby and pinning it only constrains resolution - Add the gem version badge to READMEs that were missing one Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Point Rakefiles at cookstyle/chefstyle instead of the standalone chefstyle gem, which no longer resolves; several required it unguarded, so rake aborted outright - Remove Guardfiles and guard-* dev dependencies (guard-kitchen keeps its own, since guard is what it integrates with) - Remove the last cane and .cane config remnants - Give repos that have tests but no test task one, so `rake test` works - kitchen-habitat: move fakefs from :development to :test; CI runs with BUNDLE_WITHOUT=development, so the spec could not load it Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Remove countloc and the stats/loc rake tasks it backed; the gem is unmaintained and the tasks only printed line counts - Remove the remaining cane and tailor dependencies (cane calls File.exists?, removed in Ruby 4.0; tailor needs ostruct, no longer a default gem) - busser: drop the aruba `unescape` helper, removed in aruba 1.x, so the cucumber steps run again - busser-cucumber: unpin aruba and cucumber and move to the aruba 2.x config API - Give kitchen-cloudstack and kitchen-opennebula a test task so `rake test` resolves Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Declare rake in the Gemfile's :test group. Gemspec development dependencies land in bundler's :development group, which CI excludes via BUNDLE_WITHOUT=development, so `bundle exec rake` failed with "can't find executable rake for gem rake" - Relax dev dependency pins that require Ruby >= 3.2 (minitest 6, pry-byebug 3.12); bundler resolves the whole Gemfile even for a single group, so these broke the Ruby 3.1 matrix entry outright - kitchen-opennebula: depend on fog-opennebula instead of the fog metagem, which pulls fog-ovirt -> ovirt-engine-sdk and fails to build - guard-kitchen: read the version in the gemspec without loading the library, which requires guard and is unavailable while bundler evaluates the gemspec Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Pin cucumber to the 9.x line. cucumber 10.2.0 raises NoMethodError from its own formatter (group.children is nil), which failed the feature runs - kitchen-rackspace: cap fog-core below 2.3. fog-rackspace 0.1.6 registers a service literally named "CDN v2", and fog-core 2.3+ passes that through const_defined?, which rejects it as an invalid constant name, so `require "fog/rackspace"` raised NameError and no examples could load Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
- Use `gemspec development_group: :test`. Gemspec development dependencies otherwise land in bundler's :development group, which CI excludes via BUNDLE_WITHOUT=development, so rspec/fakefs/rake were missing at runtime - Add base64 where cucumber 9.x needs it; it is no longer a default gem on Ruby 4.0 - kitchen-opennebula: fog-opennebula's latest release is 0.0.5, so ">= 0.1" could never resolve - kitchen-rackspace: port the driver off Kitchen::Driver::SSHBase, removed in test-kitchen 4.x, and wait via the configured transport instead Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
AllCops/Include pinned the file list to **/*.rb, which quietly excluded the gemspec, Gemfile and Rakefile -- cookstyle reported success while never looking at them. Dropping the Include list restores cookstyle's own defaults, which cover those files, and the offenses that surfaced are autocorrected here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Tim Smith <tsmith84@proton.me>
Ruby 3.1 is end of life and busser 0.9.0 is the first release that runs on modern Ruby, so both floors move together. The shared lint-unit workflow still defaults to starting a Ruby 3.1 job, so the caller now passes ruby_versions explicitly. Releases move to release-please: publish.yml opens and maintains a release pull request and publishes on merge, and pr-title.yml checks that pull request titles are conventional commits. Those titles are what release-please reads to pick the next version and build the changelog, so the two land together or neither works. Actions are pinned to a commit with the release named in a trailing comment, so Renovate can keep the pin and the comment in step. Renovate now covers GitHub Actions digests alongside bundler, so the dependabot config that only duplicated the bundler half is gone. Test tooling moves to cucumber 11, aruba 2 and cookstyle 9. BREAKING CHANGE: Ruby 3.1 and busser releases older than 0.9.0 are no longer supported. Signed-off-by: Tim Smith <tsmith84@proton.me>
The gemspec now declares only what a consumer of the gem needs at runtime. Everything the suite needs lives in a Gemfile group instead, so the `gemspec` directive no longer has to reach for `development_group: :test` to get the test gems into the right place, and `BUNDLE_ONLY=cookstyle` / `BUNDLE_WITHOUT=development` in CI select exactly what each job needs. The gemspecs also pick up the usual modern fields: SPDX license identifiers, metadata URIs for the issue tracker, changelog, docs and source, and a NUL-separated `git ls-files` that does not depend on `$INPUT_RECORD_SEPARATOR`. Signed-off-by: Tim Smith <tsmith84@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
ruby_versions: '["3.2", "3.3", "3.4", "4.0"]'. The sharedlint-unitworkflow still defaults to starting a Ruby 3.1 job, so without thisbundler would be asked to resolve somewhere the gem no longer supports.
publish.ymlopens and maintains arelease pull request and publishes on merge;
release-please-config.jsonand.release-please-manifest.jsoncarry the v5 manifest config.pr-title.ymlchecks that pull request titles are conventional commits — these are squash
merged, so the title becomes the commit subject on
main, which is exactlywhat release-please parses. One without the other silently yields empty
changelogs.
Every action is pinned to a commit with its release named in a trailing comment,
and Renovate picks up
helpers:pinGitHubActionDigestsand:semanticCommitssothe pins and comments stay in step. Renovate now covers actions as well as
bundler, so the dependabot config that only duplicated the bundler half is gone.
The workflow files are byte-identical to the ones in
test-kitchen/busser, whichis where this pattern was established.
Note
This also fixes a pre-existing red suite: the branch was resolving busser 0.6.0,
which failed
busser plugin install. The 0.9.0 floor fixes it.Verification
bundle exec rake testandbundle exec cookstyle --chefstyleboth pass locallyon Ruby 4.0.6.