Skip to content

Commit

Permalink
Merge pull request #778 from mlibrary/pdk_prep
Browse files Browse the repository at this point in the history
upgrade to pdk 3, ruby 3
  • Loading branch information
rrotter authored Dec 18, 2024
2 parents 80cf90a + 29883bb commit 785d577
Show file tree
Hide file tree
Showing 18 changed files with 207 additions and 271 deletions.
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

0 comments on commit 785d577

Please sign in to comment.