From 2c0afe143390c2f4a73710b18bcfbb17392b86b3 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 30 Apr 2026 14:27:12 +0200 Subject: [PATCH 1/4] Add Ruby 3.4 support & update gems The older versions were only working on Ruby 3.2. That made it challenging to run the tests locally on a modern operating system. This PR updates all dependencies and aligns them with the Vox Pupuli setup. --- Gemfile | 7 +++---- Rakefile | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 367e733a..0e88c089 100644 --- a/Gemfile +++ b/Gemfile @@ -7,13 +7,12 @@ gem 'puppet', ENV.fetch('PUPPET_GEM_VERSION', '>= 8'), groups: ['development', ' gem 'rake' gem 'kafo_module_lint', {"groups"=>["test"]} -gem 'puppet-lint-spaceship_operator_without_tag-check', '~> 1.0', {"groups"=>["test"]} -gem 'voxpupuli-test', '~> 9.0', {"groups"=>["test"]} +gem 'puppet-lint-spaceship_operator_without_tag-check', '~> 2.0', {"groups"=>["test"]} +gem 'voxpupuli-test', '~> 14.0', {"groups"=>["test"]} gem 'github_changelog_generator', '>= 1.15.0', {"groups"=>["development"]} -gem 'puppet_metadata', '~> 5.3' +gem 'puppet_metadata', '~> 6.2' gem 'puppet-blacksmith', '>= 6.0.0', {"groups"=>["development"]} gem 'voxpupuli-acceptance', '~> 4.1', {"groups"=>["system_tests"]} -gem 'puppetlabs_spec_helper', {"groups"=>["system_tests"]} gem 'hocon' # vim:ft=ruby diff --git a/Rakefile b/Rakefile index c182b84b..3511700e 100644 --- a/Rakefile +++ b/Rakefile @@ -19,7 +19,7 @@ begin rescue LoadError else # We use fixtures in our modules, which is not the default - task :beaker => 'spec_prep' + task :beaker => 'fixtures:prep' end # blacksmith isn't always present, e.g. on Travis with --without development From 5f1b85cded955b1c6c1126f242d1918f91da9a1e Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 30 Apr 2026 14:29:37 +0200 Subject: [PATCH 2/4] puppet-lint: autofix --- manifests/config/entry.pp | 12 ++++++------ types/facter/config.pp | 8 ++++---- types/facter/config/cli.pp | 8 ++++---- types/facter/config/facts.pp | 4 ++-- types/facter/config/global.pp | 10 +++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/manifests/config/entry.pp b/manifests/config/entry.pp index 210163f0..aa4bd6f5 100644 --- a/manifests/config/entry.pp +++ b/manifests/config/entry.pp @@ -29,14 +29,14 @@ # note the spaces at he end of the 'order' parameters, # they make sure that '1_main ' is ordered before '1_main_*' ensure_resource('concat::fragment', "puppet.conf_${section}", { - target => "${puppet::dir}/puppet.conf", - content => "\n[${section}]", - order => "${sectionorder}_${section} ", + target => "${puppet::dir}/puppet.conf", + content => "\n[${section}]", + order => "${sectionorder}_${section} ", }) ensure_resource('concat::fragment', "puppet.conf_${section}_end", { - target => "${puppet::dir}/puppet.conf", - content => "\n", - order => "${sectionorder}_${section}~end", + target => "${puppet::dir}/puppet.conf", + content => "\n", + order => "${sectionorder}_${section}~end", }) # this adds the '$key =' for the first value, diff --git a/types/facter/config.pp b/types/facter/config.pp index edb195de..0750a2e1 100644 --- a/types/facter/config.pp +++ b/types/facter/config.pp @@ -1,7 +1,7 @@ # @summary Facter configuration type type Puppet::Facter::Config = Struct[{ - Optional['facts'] => Puppet::Facter::Config::Facts, - Optional['global'] => Puppet::Facter::Config::Global, - Optional['cli'] => Puppet::Facter::Config::CLI, - Optional['fact-groups'] => Hash[String[1], Array[String[1]]], + Optional['facts'] => Puppet::Facter::Config::Facts, + Optional['global'] => Puppet::Facter::Config::Global, + Optional['cli'] => Puppet::Facter::Config::CLI, + Optional['fact-groups'] => Hash[String[1], Array[String[1]]], }] diff --git a/types/facter/config/cli.pp b/types/facter/config/cli.pp index 18a7f64c..57e79b64 100644 --- a/types/facter/config/cli.pp +++ b/types/facter/config/cli.pp @@ -2,8 +2,8 @@ # # @note All these settings are ignored when called from the Ruby API (by Puppet/OpenVox) type Puppet::Facter::Config::CLI = Struct[{ - Optional['debug'] => Boolean, - Optional['trace'] => Boolean, - Optional['verbose'] => Boolean, - Optional['log-level'] => Enum['none','trace','debug','info','warn','error','fatal'], + Optional['debug'] => Boolean, + Optional['trace'] => Boolean, + Optional['verbose'] => Boolean, + Optional['log-level'] => Enum['none','trace','debug','info','warn','error','fatal'], }] diff --git a/types/facter/config/facts.pp b/types/facter/config/facts.pp index b3357be4..9af2d0b4 100644 --- a/types/facter/config/facts.pp +++ b/types/facter/config/facts.pp @@ -1,5 +1,5 @@ # @summary Facter `facts` configuration type type Puppet::Facter::Config::Facts = Struct[{ - Optional['blocklist'] => Array[String[1]], - Optional['ttls'] => Array[Hash[String[1], Puppet::Facter::Config::TTL]], + Optional['blocklist'] => Array[String[1]], + Optional['ttls'] => Array[Hash[String[1], Puppet::Facter::Config::TTL]], }] diff --git a/types/facter/config/global.pp b/types/facter/config/global.pp index 749e698a..fb5de4e1 100644 --- a/types/facter/config/global.pp +++ b/types/facter/config/global.pp @@ -4,9 +4,9 @@ # * `no-custom-facts` # * `no-ruby` type Puppet::Facter::Config::Global = Struct[{ - Optional['external-dir'] => Array[Stdlib::Absolutepath], - Optional['custom-dir'] => Array[Stdlib::Absolutepath], - Optional['no-external-facts'] => Boolean, - Optional['no-custom-facts'] => Boolean[false], # Cannot be true - Optional['no-ruby'] => Boolean[false], # Cannot be true + Optional['external-dir'] => Array[Stdlib::Absolutepath], + Optional['custom-dir'] => Array[Stdlib::Absolutepath], + Optional['no-external-facts'] => Boolean, + Optional['no-custom-facts'] => Boolean[false], # Cannot be true + Optional['no-ruby'] => Boolean[false], # Cannot be true }] From 86b1c598d8adad0103260d355fea63d3ecefb6f5 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 30 Apr 2026 14:31:22 +0200 Subject: [PATCH 3/4] puppet-lint: fix params_not_optional_with_undef --- manifests/agent/service/cron.pp | 2 +- manifests/agent/service/systemd.pp | 2 +- manifests/init.pp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifests/agent/service/cron.pp b/manifests/agent/service/cron.pp index 329b4d6c..1f8aed8b 100644 --- a/manifests/agent/service/cron.pp +++ b/manifests/agent/service/cron.pp @@ -3,7 +3,7 @@ class puppet::agent::service::cron ( Boolean $enabled = false, Optional[Integer[0,23]] $hour = undef, - Variant[Integer[0,59], Array[Integer[0,59]], Undef] $minute = undef, + Optional[Variant[Integer[0,59], Array[Integer[0,59]]]] $minute = undef, ) { unless $puppet::runmode == 'unmanaged' or 'cron' in $puppet::unavailable_runmodes { if $enabled { diff --git a/manifests/agent/service/systemd.pp b/manifests/agent/service/systemd.pp index 648a6c7b..6f2012e2 100644 --- a/manifests/agent/service/systemd.pp +++ b/manifests/agent/service/systemd.pp @@ -3,7 +3,7 @@ class puppet::agent::service::systemd ( Boolean $enabled = false, Optional[Integer[0,23]] $hour = undef, - Variant[Integer[0,59], Array[Integer[0,59]], Undef] $minute = undef, + Optional[Variant[Integer[0,59], Array[Integer[0,59]]]] $minute = undef, Optional[String[1]] $timezone = undef, ) { unless $puppet::runmode == 'unmanaged' or 'systemd.timer' in $puppet::unavailable_runmodes { diff --git a/manifests/init.pp b/manifests/init.pp index 3ee899d1..4321fb50 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -618,7 +618,7 @@ Boolean $usecacheonfailure = $puppet::params::usecacheonfailure, Enum['cron', 'service', 'systemd.timer', 'none', 'unmanaged'] $runmode = $puppet::params::runmode, Optional[Integer[0,23]] $run_hour = undef, - Variant[Integer[0,59], Array[Integer[0,59]], Undef] $run_minute = undef, + Optional[Variant[Integer[0,59], Array[Integer[0,59]]]] $run_minute = undef, Optional[String[1]] $run_timezone = undef, Array[Enum['cron', 'service', 'systemd.timer', 'none']] $unavailable_runmodes = $puppet::params::unavailable_runmodes, Optional[String] $cron_cmd = $puppet::params::cron_cmd, From 5f1121aa0c91ef3dd28689e79893e29d8bdf498d Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Mon, 4 May 2026 10:33:15 +0200 Subject: [PATCH 4/4] .sync.yml: Drop pidfile workaround This was removed from the actual github workflow in b277839737aaa9ea97a588761c95f9d1ffea000c --- .sync.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.sync.yml b/.sync.yml index f7471265..c23206d3 100644 --- a/.sync.yml +++ b/.sync.yml @@ -1,6 +1,4 @@ --- -.github/workflows/ci.yml: - pidfile_workaround: true Gemfile: extra: - gem: hocon