Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upgrade to pdk 3, ruby 3 #778

Merged
merged 5 commits into from
Dec 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ fixtures:
repositories:
apache:
repo: "https://github.com/mlibrary/puppetlabs-apache"
ref: "v7.1.1"
forge_modules:
rbenv: {"repo": "jdowning/rbenv", "ref": "3.1.0" }
archive: {"repo": "puppet/archive", "ref": "7.1.0" }
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
*.erb eol=lf
*.pp eol=lf
*.sh eol=lf
*.epp eol=lf
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,19 @@
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/spec/fixtures/modules/*
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
/spec/fixtures/litmus_inventory.yaml
/.pdkignore
/.tmp/
/.tool-versions
/Puppetfile.lock
/modules/
/spec/examples.txt
1 change: 1 addition & 0 deletions .puppet-lint.rc
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
--relative
--no-puppet_url_without_modules-check
154 changes: 0 additions & 154 deletions .rubocop.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7
3.2
9 changes: 8 additions & 1 deletion .sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- ---/doc/ # We have files here
- /.pdkignore
- /.tmp/
- /.tool-versions
- /Puppetfile.lock
- /modules/
- /spec/examples.txt
Expand All @@ -13,8 +14,14 @@ Gemfile:
':development':
- gem: faker
- gem: librarian-puppet
version: '>= 5.0'
- gem: pdk
version: 2.7.1
version: '>= 3.3.0'
Rakefile:
extra_disabled_lint_checks:
# We sometimes refer to non-nebula puppet fileserver paths.
# This check will make breaking changes on lint_fix task.
- puppet_url_without_modules
spec/default_facts.yml:
extra_facts:
ec2_tag_role: nebula::role::aws
Expand Down
1 change: 0 additions & 1 deletion .tool-versions

This file was deleted.

4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
FROM ruby:2.7
FROM ruby:3.2
ARG UNAME=app
ARG UID=1000
ARG GID=1000
ARG APP_HOME=/app

RUN gem install 'bundler:~>2.4.19'
RUN gem install 'bundler:~>2.5.22'
RUN groupadd -g $GID -o $UNAME
RUN useradd -m -d $APP_HOME -u $UID -g $GID -o -s /bin/bash $UNAME
RUN mkdir -p /gems && chown $UID:$GID /gems
Expand Down
84 changes: 67 additions & 17 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,31 +1,81 @@
source 'https://rubygems.org'
source ENV['GEM_SOURCE'] || 'https://rubygems.org'

minor_version = Gem::Version.new(RUBY_VERSION.dup).segments[0..1].join('.')
def location_for(place_or_version, fake_version = nil)
git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
file_url_regex = %r{\Afile:\/\/(?<path>.*)}

gem 'rake', '>= 13.0.6'
if place_or_version && (git_url = place_or_version.match(git_url_regex))
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else
[place_or_version, { require: false }]
end
end

group :development do
gem "fast_gettext", require: false
gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
gem "rubocop-rake"
gem "faker"
gem "librarian-puppet"
gem "pdk", '2.7.1'
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.5.1', require: false if Gem::Requirement.create(['>= 3.0.0', '< 3.0.5']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.6.1', require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.6.3', require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "racc", '~> 1.4.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false
gem "facterdb", '~> 1.18', require: false
gem "metadata-json-lint", '~> 3.0', require: false
gem "puppetlabs_spec_helper", '~> 6.0', require: false
gem "rspec-puppet-facts", '~> 2.0', require: false
gem "codecov", '~> 0.2', require: false
gem "dependency_checker", '~> 1.0.0', require: false
gem "parallel_tests", '= 3.12.1', require: false
gem "pry", '~> 0.10', require: false
gem "simplecov-console", '~> 0.5', require: false
gem "puppet-debugger", '~> 1.0', require: false
gem "rubocop", '= 1.48.1', require: false
gem "rubocop-performance", '= 1.16.0', require: false
gem "rubocop-rspec", '= 2.19.0', require: false
gem "puppet-strings", '~> 4.0', require: false
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "faker", require: false
gem "librarian-puppet", '>= 5.0', require: false
gem "pdk", '>= 3.3.0', require: false
end
group :system_tests do
gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw]
gem "serverspec", '~> 2.41', require: false
end
group :release_prep do
gem "puppet-strings", '~> 4.0', require: false
gem "puppetlabs_spec_helper", '~> 6.0', require: false
end

puppet_version = ENV['PUPPET_GEM_VERSION']
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']

gems = {}

gem 'puppet', '~> 7.26'
gem 'puppet-strings'
gem 'semantic_puppet'
gem 'yard', '>= 0.9.36'
gems['puppet'] = location_for(puppet_version)

# If facter or hiera versions have been specified via the environment
# variables

gems['facter'] = location_for(facter_version) if facter_version
gems['hiera'] = location_for(hiera_version) if hiera_version

gems.each do |gem_name, gem_params|
gem gem_name, *gem_params
end

# Evaluate Gemfile.local and ~/.gemfile if they exist
[
extra_gemfiles = [
"#{__FILE__}.local",
File.join(Dir.home, '.gemfile'),
].each do |gemfile|
]

extra_gemfiles.each do |gemfile|
if File.file?(gemfile) && File.readable?(gemfile)
eval(File.read(gemfile), binding)
end
end

# vim: syntax=ruby
52 changes: 6 additions & 46 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,50 +1,10 @@
# frozen_string_literal: true

require 'bundler'
require 'puppet_litmus/rake_tasks' if Gem.loaded_specs.key? 'puppet_litmus'
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings'

# We sometimes refer to non-nebula puppet fileserver paths.
PuppetLint.configuration.send('disable_relative')
PuppetLint.configuration.send('disable_puppet_url_without_modules')

desc "run librarian-puppet to confirm dependencies are resolvable"
task librarian: [:librarian_standalone, :librarian_clean]

desc "don't clean after librarian"
task :librarian_standalone do |t|
system('librarian-puppet install --verbose') or abort
end

desc "rm Puppetfile.lock"
task :librarian_clean do |t|
FileUtils.rm_f('Puppetfile.lock')
end

desc "list outdated modules in .fixtures.yml"
task :outdated do |t|
require 'yaml'
require 'net/http'
require 'uri'
require 'json'

fixtures = YAML.load_file('.fixtures.yml')
fixtures['fixtures']['forge_modules'].values.each do |mod|
repo = mod['repo']
slug = repo.tr('/','-')
vers = mod['ref']
uri = URI.parse "https://forgeapi.puppet.com/v3/modules/#{slug}"

response = Net::HTTP.get_response(uri)
raise "failed to fetch #{mod['repo']}" unless response.code == '200'

releases = JSON.parse(response.body)['releases'].map{|x| x['version']}
latest = releases.first
installed_index = releases.find_index(vers)
installed = releases[installed_index]

if installed_index != 0
newer = releases.slice(0,installed_index).join(', ')
puts "#{repo} (#{installed}) < #{newer}"
puts "https://forge.puppet.com/modules/#{repo}"

puts
end
end
end
2 changes: 1 addition & 1 deletion lib/puppet/functions/public_ip.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def run
if aws_node?
ec2_metadata['public-ipv4']
else
facts['ipaddress']
facts['networking']['ip']
end
end

Expand Down
Loading
Loading