diff --git a/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml index 5bd0f50..d027aa4 100644 --- a/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml +++ b/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml @@ -1,70 +1,69 @@ --- name: '[Daily] Unit Tests with nightly Puppet gem' on: schedule: - cron: '0 5 * * 1-5' jobs: daily_unit_tests_with_nightly_puppet_gem: name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} strategy: matrix: os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2016' ] - puppet_version: [ 5, 6, 7 ] + puppet_version: [ 6, 7 ] include: - - puppet_version: 5 - ruby: 2.4 - puppet_version: 6 ruby: 2.5 - puppet_version: 7 ruby: 2.7 - os: 'ubuntu-18.04' os_type: 'Linux' env_set_cmd: 'export ' gem_file: 'puppet-latest.gem' - os: 'macos-10.15' os_type: 'macOS' env_set_cmd: 'export ' gem_file: 'puppet-latest-universal-darwin.gem' - os: 'windows-2016' os_type: 'Windows' env_set_cmd: '$env:' gem_file: 'puppet-latest-x64-mingw32.gem' runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v2 - name: Install ruby version ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Install the latest nightly build of puppet${{ matrix.puppet_version }} gem run: | curl http://nightlies.puppet.com/downloads/gems/puppet${{ matrix.puppet_version }}-nightly/${{ matrix.gem_file }} --output puppet.gem gem install puppet.gem -N - name: Prepare testing environment with bundler run: | git config --global core.longpaths true bundle config set system 'true' + bundle config set --local without 'release' ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=$(ruby -e 'puts /puppet\s+\((.+)\)/.match(`gem list -eld puppet`)[1]') bundle update --jobs 4 --retry 3 - name: Run unit tests run: bundle exec rake parallel_spec notify-via-slack: name: Notify workflow conclusion via Slack if: ${{ always() }} needs: daily_unit_tests_with_nightly_puppet_gem runs-on: 'ubuntu-latest' steps: - uses: luchihoratiu/notify-via-slack@main with: SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} diff --git a/.github/workflows/static_code_analysis.yaml b/.github/workflows/static_code_analysis.yaml index 0a1f427..9a132eb 100644 --- a/.github/workflows/static_code_analysis.yaml +++ b/.github/workflows/static_code_analysis.yaml @@ -1,48 +1,49 @@ --- name: Static Code Analysis on: push: branches: [ main ] pull_request: branches: [ main ] jobs: static_code_analysis: name: Run checks env: - ruby_version: 2.5 + ruby_version: 2.6 extra_checks: check:symlinks check:git_ignore check:dot_underscore check:test_file runs-on: 'ubuntu-18.04' steps: - name: Checkout current PR code uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install ruby version ${{ env.ruby_version }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ env.ruby_version }} - name: Prepare testing environment with bundler run: | git config --global core.longpaths true + bundle config set --local without 'release' bundle update --jobs 4 --retry 3 - name: Run commits check run: bundle exec rake commits - name: Run rubocop check run: bundle exec rake ${{ env.extra_checks }} rubocop - name: Run syntax check run: bundle exec rake ${{ env.extra_checks }} syntax syntax:hiera syntax:manifests syntax:templates - name: Run lint check run: bundle exec rake ${{ env.extra_checks }} lint - name: Run metadata_lint check run: bundle exec rake ${{ env.extra_checks }} metadata_lint diff --git a/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml index 0b1afc0..e2122bd 100644 --- a/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml +++ b/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml @@ -1,61 +1,60 @@ --- name: Unit Tests with nightly Puppet gem on: push: branches: [ main ] pull_request: branches: [ main ] jobs: unit_tests_with_nightly_puppet_gem: name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} strategy: matrix: os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2016' ] - puppet_version: [ 5, 6, 7 ] + puppet_version: [ 6, 7 ] include: - - puppet_version: 5 - ruby: 2.4 - puppet_version: 6 ruby: 2.5 - puppet_version: 7 ruby: 2.7 - os: 'ubuntu-18.04' os_type: 'Linux' env_set_cmd: 'export ' gem_file: 'puppet-latest.gem' - os: 'macos-10.15' os_type: 'macOS' env_set_cmd: 'export ' gem_file: 'puppet-latest-universal-darwin.gem' - os: 'windows-2016' os_type: 'Windows' env_set_cmd: '$env:' gem_file: 'puppet-latest-x64-mingw32.gem' runs-on: ${{ matrix.os }} steps: - name: Checkout current PR code uses: actions/checkout@v2 - name: Install ruby version ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Install the latest nightly build of puppet${{ matrix.puppet_version }} gem run: | curl http://nightlies.puppet.com/downloads/gems/puppet${{ matrix.puppet_version }}-nightly/${{ matrix.gem_file }} --output puppet.gem gem install puppet.gem -N - name: Prepare testing environment with bundler run: | git config --global core.longpaths true bundle config set system 'true' + bundle config set --local without 'release' ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=$(ruby -e 'puts /puppet\s+\((.+)\)/.match(`gem list -eld puppet`)[1]') bundle update --jobs 4 --retry 3 - name: Run unit tests run: bundle exec rake parallel_spec diff --git a/.github/workflows/unit_tests_with_released_puppet_gem.yaml b/.github/workflows/unit_tests_with_released_puppet_gem.yaml index 11ddefe..bd157f3 100644 --- a/.github/workflows/unit_tests_with_released_puppet_gem.yaml +++ b/.github/workflows/unit_tests_with_released_puppet_gem.yaml @@ -1,49 +1,50 @@ --- name: Unit Tests with released Puppet gem on: push: branches: [ main ] pull_request: branches: [ main ] jobs: unit_tests_with_released_puppet_gem: name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} strategy: matrix: os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2016' ] - puppet_version: [ 5, 6 ] + puppet_version: [ 6, 7 ] include: - - puppet_version: 5 - ruby: 2.4 - puppet_version: 6 ruby: 2.5 + - puppet_version: 7 + ruby: 2.7 - os: 'ubuntu-18.04' os_type: 'Linux' - os: 'macos-10.15' os_type: 'macOS' - os: 'windows-2016' os_type: 'Windows' runs-on: ${{ matrix.os }} env: PUPPET_GEM_VERSION: ~> ${{ matrix.puppet_version }}.0 steps: - name: Checkout current PR code uses: actions/checkout@v2 - name: Install ruby version ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Prepare testing environment with bundler run: | git config --global core.longpaths true bundle config set system 'true' + bundle config set --local without 'release' bundle update --jobs 4 --retry 3 - name: Run unit tests run: bundle exec rake parallel_spec diff --git a/Gemfile b/Gemfile index dd48fcc..5f131ee 100644 --- a/Gemfile +++ b/Gemfile @@ -1,92 +1,96 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org' def location_for(place_or_version, fake_version = nil) git_url_regex = %r{\A(?(https?|git)[:@][^#]*)(#(?.*))?} file_url_regex = %r{\Afile:\/\/(?.*)} 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 ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments minor_version = ruby_version_segments[0..1].join('.') group :development do gem "parallel_tests", '>= 2.14.1', '< 2.14.3', require: false gem "metadata-json-lint", '>= 2.0.2', '< 3.0.0', require: false gem "rspec-puppet-facts", '~> 1.10.0', require: false gem "rspec_junit_formatter", '~> 0.2', require: false gem "rubocop", '~> 0.49.0', require: false gem "rubocop-rspec", '~> 1.16.0', require: false gem "rubocop-i18n", '~> 1.2.0', require: false gem "puppetlabs_spec_helper", '>= 2.9.0', '< 3.0.0', require: false gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0') gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9') gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) 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 "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-module-posix-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby] gem "puppet-module-win-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-strings", require: false gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2') end + group :system_tests do - gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby] - gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] + gem "puppet-module-posix-system-r#{minor_version}", '~> 0.5', require: false, platforms: [:ruby] + gem "puppet-module-win-system-r#{minor_version}", '~> 0.5', require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4') gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.5') gem "beaker-pe", require: false gem "beaker-hostgenerator" gem "beaker-rspec" gem "beaker-puppet", *location_for(ENV['BEAKER_PUPPET_VERSION'] || '~> 1.0') - gem "pdk", '~> 1.18', platforms: [:ruby] +end + +group :release do gem "puppet-blacksmith", '~> 3.4', require: false + gem "pdk", platforms: [:ruby] end puppet_version = ENV['PUPPET_GEM_VERSION'] facter_version = ENV['FACTER_GEM_VERSION'] hiera_version = ENV['HIERA_GEM_VERSION'] gems = {} 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 if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)} # If we're using a Puppet gem on Windows which handles its own win32-xxx gem # dependencies (>= 3.5.0), set the maximum versions (see PUP-6445). gems['win32-dir'] = ['<= 0.4.9', require: false] gems['win32-eventlog'] = ['<= 0.6.5', require: false] gems['win32-process'] = ['<= 0.7.5', require: false] gems['win32-security'] = ['<= 0.2.5', require: false] gems['win32-service'] = ['0.8.8', require: false] end 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'), ] extra_gemfiles.each do |gemfile| if File.file?(gemfile) && File.readable?(gemfile) eval(File.read(gemfile), binding) end end # vim: syntax=ruby