Skip to content

Commit 1b78904

Browse files
Merge pull request #1708 from puppetlabs/cat-2665-fork-ci-mysql
(CAT-2665) Roll out safe fork CI integration
2 parents ab090f6 + d38bfb1 commit 1b78904

12 files changed

Lines changed: 93 additions & 55 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,33 @@ on:
44
pull_request:
55
branches:
66
- "main"
7+
pull_request_target:
8+
types: [labeled, reopened]
9+
branches:
10+
- "main"
711
workflow_dispatch:
8-
12+
13+
permissions:
14+
contents: read
15+
16+
concurrency:
17+
group: ${{ github.workflow }}-${{ github.ref }}
18+
cancel-in-progress: true
19+
920
jobs:
1021
Spec:
22+
if: github.event_name != 'pull_request_target'
1123
uses: "puppetlabs/cat-github-actions/.github/workflows/module_ci.yml@main"
1224
secrets: "inherit"
1325

1426
Acceptance:
15-
needs: Spec
27+
if: >-
28+
github.event_name == 'workflow_dispatch' ||
29+
(github.event_name == 'pull_request' &&
30+
github.event.pull_request.head.repo.fork == false) ||
31+
(github.event_name == 'pull_request_target' &&
32+
github.event.pull_request.head.repo.fork == true &&
33+
contains(github.event.pull_request.labels.*.name, 'allowed-for-ci'))
1634
uses: "puppetlabs/cat-github-actions/.github/workflows/module_acceptance.yml@main"
1735
with:
1836
flags: "--nightly --platform-exclude centos-7 --platform-exclude scientific-7 --platform-exclude oraclelinux-7 --platform-exclude almalinux-8 --arch-exclude arm"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: "Fork CI Label Guard"
2+
3+
on:
4+
pull_request_target:
5+
types: [synchronize, closed]
6+
7+
permissions:
8+
pull-requests: write
9+
10+
jobs:
11+
strip:
12+
uses: "puppetlabs/cat-github-actions/.github/workflows/fork_ci_label_guard.yml@main"

.rubocop.yml

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
---
22
inherit_from: .rubocop_todo.yml
3-
4-
require:
3+
plugins:
54
- rubocop-performance
5+
- rubocop-hash_inspect
66
- rubocop-rspec
7+
- rubocop-rspec_rails
8+
- rubocop-factory_bot
9+
- rubocop-capybara
710
AllCops:
811
NewCops: enable
912
DisplayCopNames: true
@@ -108,6 +111,8 @@ Performance/StringInclude:
108111
Enabled: true
109112
Performance/Sum:
110113
Enabled: true
114+
Security/IoMethods:
115+
Enabled: true
111116
Style/CollectionMethods:
112117
Enabled: true
113118
Style/MethodCalledOnDoEndBlock:
@@ -122,6 +127,12 @@ Capybara/CurrentPathExpectation:
122127
Enabled: false
123128
Capybara/VisibilityMatcher:
124129
Enabled: false
130+
FactoryBot/AttributeDefinedStatically:
131+
Enabled: false
132+
FactoryBot/CreateList:
133+
Enabled: false
134+
FactoryBot/FactoryClassName:
135+
Enabled: false
125136
Gemspec/DuplicatedAssignment:
126137
Enabled: false
127138
Gemspec/OrderedDependencies:
@@ -296,8 +307,6 @@ Performance/UriDefaultParser:
296307
Enabled: false
297308
RSpec/Be:
298309
Enabled: false
299-
RSpec/Capybara/FeatureMethods:
300-
Enabled: false
301310
RSpec/ContainExactly:
302311
Enabled: false
303312
RSpec/ContextMethod:
@@ -306,6 +315,8 @@ RSpec/ContextWording:
306315
Enabled: false
307316
RSpec/DescribeClass:
308317
Enabled: false
318+
RSpec/Dialect:
319+
Enabled: false
309320
RSpec/EmptyHook:
310321
Enabled: false
311322
RSpec/EmptyLineAfterExample:
@@ -322,12 +333,6 @@ RSpec/ExpectChange:
322333
Enabled: false
323334
RSpec/ExpectInHook:
324335
Enabled: false
325-
RSpec/FactoryBot/AttributeDefinedStatically:
326-
Enabled: false
327-
RSpec/FactoryBot/CreateList:
328-
Enabled: false
329-
RSpec/FactoryBot/FactoryClassName:
330-
Enabled: false
331336
RSpec/HooksBeforeExamples:
332337
Enabled: false
333338
RSpec/ImplicitBlockExpectation:
@@ -376,8 +381,6 @@ RSpec/VoidExpect:
376381
Enabled: false
377382
RSpec/Yield:
378383
Enabled: false
379-
Security/Open:
380-
Enabled: false
381384
Style/AccessModifierDeclarations:
382385
Enabled: false
383386
Style/AccessorGrouping:
@@ -502,6 +505,12 @@ Capybara/SpecificFinders:
502505
Enabled: false
503506
Capybara/SpecificMatcher:
504507
Enabled: false
508+
FactoryBot/ConsistentParenthesesStyle:
509+
Enabled: false
510+
FactoryBot/FactoryNameStyle:
511+
Enabled: false
512+
FactoryBot/SyntaxMethods:
513+
Enabled: false
505514
Gemspec/DeprecatedAttributeAssignment:
506515
Enabled: false
507516
Gemspec/DevelopmentDependencies:
@@ -602,28 +611,12 @@ RSpec/DuplicatedMetadata:
602611
Enabled: false
603612
RSpec/ExcessiveDocstringSpacing:
604613
Enabled: false
605-
RSpec/FactoryBot/ConsistentParenthesesStyle:
606-
Enabled: false
607-
RSpec/FactoryBot/FactoryNameStyle:
608-
Enabled: false
609-
RSpec/FactoryBot/SyntaxMethods:
610-
Enabled: false
611614
RSpec/IdenticalEqualityAssertion:
612615
Enabled: false
613616
RSpec/NoExpectationExample:
614617
Enabled: false
615618
RSpec/PendingWithoutReason:
616619
Enabled: false
617-
RSpec/Rails/AvoidSetupHook:
618-
Enabled: false
619-
RSpec/Rails/HaveHttpStatus:
620-
Enabled: false
621-
RSpec/Rails/InferredSpecType:
622-
Enabled: false
623-
RSpec/Rails/MinitestAssertions:
624-
Enabled: false
625-
RSpec/Rails/TravelAround:
626-
Enabled: false
627620
RSpec/RedundantAround:
628621
Enabled: false
629622
RSpec/SkipBlockInsideExample:
@@ -634,9 +627,17 @@ RSpec/SubjectDeclaration:
634627
Enabled: false
635628
RSpec/VerifiedDoubleReference:
636629
Enabled: false
637-
Security/CompoundHash:
630+
RSpecRails/AvoidSetupHook:
638631
Enabled: false
639-
Security/IoMethods:
632+
RSpecRails/HaveHttpStatus:
633+
Enabled: false
634+
RSpecRails/InferredSpecType:
635+
Enabled: false
636+
RSpecRails/MinitestAssertions:
637+
Enabled: false
638+
RSpecRails/TravelAround:
639+
Enabled: false
640+
Security/CompoundHash:
640641
Enabled: false
641642
Style/ArgumentsForwarding:
642643
Enabled: false

Gemfile

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ end
3838
group :development do
3939
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))
4040
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))
41+
gem "json", '= 2.18.0', require: false if Gem::Requirement.create(['>= 4.0.0', '< 5.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
4142
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))
4243
gem "deep_merge", '~> 1.2.2', require: false
4344
gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false
@@ -52,29 +53,35 @@ group :development do
5253
gem "pry", '~> 0.10', require: false
5354
gem "simplecov-console", '~> 0.9', require: false
5455
gem "puppet-debugger", '~> 1.6', require: false
55-
gem "rubocop", '~> 1.50.0', require: false
56-
gem "rubocop-performance", '= 1.16.0', require: false
57-
gem "rubocop-rspec", '= 2.19.0', require: false
58-
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
59-
gem "bigdecimal", '< 3.2.2', require: false, platforms: [:mswin, :mingw, :x64_mingw]
56+
gem "rubocop", '~> 1.73.0', require: false
57+
gem "rubocop-performance", '~> 1.24.0', require: false
58+
gem "rubocop-hash_inspect", '~> 0.2', require: false
59+
gem "rubocop-rspec", '~> 3.5.0', require: false
60+
gem "rubocop-rspec_rails", '~> 2.31.0', require: false
61+
gem "rubocop-factory_bot", '~> 2.27.0', require: false
62+
gem "rubocop-capybara", '~> 2.22.0', require: false
63+
gem "rb-readline", '= 0.5.5', require: false, platforms: [:windows]
64+
gem "bigdecimal", '< 3.2.2', require: false, platforms: [:windows]
6065
end
6166
group :development, :release_prep do
62-
gem "puppet-strings", '~> 4.0', require: false
63-
gem "puppetlabs_spec_helper", '~> 8.0', require: false
64-
gem "puppet-blacksmith", '~> 7.0', require: false
67+
gem "puppet-strings", '~> 4.0', require: false
68+
gem "puppetlabs_spec_helper", '~> 8.0', require: false
69+
gem "puppet-blacksmith", '>= 7.0', '< 10.0', require: false
6570
end
6671
group :system_tests do
67-
gem "puppet_litmus", '~> 2.0', require: false, platforms: [:ruby, :x64_mingw] if !ENV['PUPPET_FORGE_TOKEN'].to_s.empty?
68-
gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw] if ENV['PUPPET_FORGE_TOKEN'].to_s.empty?
69-
gem "CFPropertyList", '< 3.0.7', require: false, platforms: [:mswin, :mingw, :x64_mingw]
72+
gem "puppet_litmus", '~> 2.5', require: false
73+
gem "faraday", '~> 2.5', require: false
74+
gem "CFPropertyList", '< 3.0.7', require: false if RUBY_PLATFORM.include?('darwin')
7075
gem "serverspec", '~> 2.41', require: false
7176
end
7277

7378
gems = {}
79+
bolt_version = ENV.fetch('BOLT_GEM_VERSION', nil)
7480
puppet_version = ENV.fetch('PUPPET_GEM_VERSION', nil)
7581
facter_version = ENV.fetch('FACTER_GEM_VERSION', nil)
7682
hiera_version = ENV.fetch('HIERA_GEM_VERSION', nil)
7783

84+
gems['bolt'] = location_for(bolt_version, nil, { source: gemsource_puppetcore })
7885
gems['puppet'] = location_for(puppet_version, nil, { source: gemsource_puppetcore })
7986
gems['facter'] = location_for(facter_version, nil, { source: gemsource_puppetcore })
8087
gems['hiera'] = location_for(hiera_version, nil, {}) if hiera_version

lib/puppet/functions/mysql/strip_hash.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
def strip_hash(hash)
1919
# Filter out all the top level blanks.
20-
hash.reject { |_k, v| v == '' }.each do |_k, v|
20+
hash.reject { |_k, v| v == '' }.each_value do |v|
2121
v.reject! { |_ki, vi| vi == '' } if v.is_a?(Hash)
2222
end
2323
end

lib/puppet/provider/mysql_login_path/sensitive.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
class Puppet::Provider::MysqlLoginPath::Sensitive < Puppet::Pops::Types::PSensitiveType::Sensitive
66
def ==(other)
7-
return true if other.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive) && unwrap == other.unwrap
7+
true if other.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive) && unwrap == other.unwrap
88
end
99

1010
def encode_with(coder)

metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,6 @@
8585
],
8686
"description": "MySQL module",
8787
"template-url": "https://github.com/puppetlabs/pdk-templates#main",
88-
"template-ref": "heads/main-0-g19976cd",
89-
"pdk-version": "3.5.0"
88+
"template-ref": "heads/main-0-gc391e21",
89+
"pdk-version": "3.7.0"
9090
}

spec/acceptance/02_mysql_mariadb_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
require 'spec_helper_acceptance'
44

5-
describe 'mysql server class', if: ((os[:family] == 'debian') || (os[:family] == 'redhat' && os[:release].to_i > 6)) do
5+
describe 'mysql server class', if: (os[:family] == 'debian') || (os[:family] == 'redhat' && os[:release].to_i > 6) do
66
describe 'mariadb' do
77
let(:pp) do
88
<<-MANIFEST

spec/acceptance/types/mysql_user_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ class { 'mysql::server': * => $ed25519_opts }
4646
end
4747
end
4848

49-
describe 'changing authentication plugin', if: (Gem::Version.new(mysql_version) > Gem::Version.new('5.5.0') && os[:release] !~ %r{^16\.04}) do
50-
it 'works without errors', if: (os[:family] != 'sles' && os[:release].to_i == 15) do
49+
describe 'changing authentication plugin', if: Gem::Version.new(mysql_version) > Gem::Version.new('5.5.0') && os[:release] !~ %r{^16\.04} do
50+
it 'works without errors', if: os[:family] != 'sles' && os[:release].to_i == 15 do
5151
pp = <<-MANIFEST
5252
mysql_user { 'ashp@localhost':
5353
plugin => 'auth_socket',
@@ -57,14 +57,14 @@ class { 'mysql::server': * => $ed25519_opts }
5757
idempotent_apply(pp)
5858
end
5959

60-
it 'has the correct plugin', if: (os[:family] != 'sles' && os[:release].to_i == 15) do
60+
it 'has the correct plugin', if: os[:family] != 'sles' && os[:release].to_i == 15 do
6161
run_shell("#{mysql_cmd} -NBe \"select plugin from mysql.user where CONCAT(user, '@', host) = 'ashp@localhost'\"") do |r|
6262
expect(r.stdout.rstrip).to eq('auth_socket')
6363
expect(r.stderr).to be_empty
6464
end
6565
end
6666

67-
it 'does not have a password', if: (os[:family] != 'sles' && os[:release].to_i == 15) do
67+
it 'does not have a password', if: os[:family] != 'sles' && os[:release].to_i == 15 do
6868
table = if Gem::Version.new(mysql_version) > Gem::Version.new('5.7.0')
6969
'authentication_string'
7070
else

spec/spec_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
begin
2828
require 'deep_merge'
29-
default_facts.deep_merge!(YAML.safe_load(File.read(f), permitted_classes: [], permitted_symbols: [], aliases: true))
29+
default_facts.deep_merge!(YAML.safe_load_file(f, permitted_classes: [], permitted_symbols: [], aliases: true))
3030
rescue StandardError => e
3131
RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
3232
end

0 commit comments

Comments
 (0)