diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index cace33e6..887d571a 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -232,33 +232,7 @@ simple tests against it after applying the module. You can run this with: ```sh -bundle exec rake acceptance -``` - -This will run the tests on the module's default nodeset. You can override the -nodeset used, e.g., - -```sh -BEAKER_set=centos-7-x64 bundle exec rake acceptance -``` - -There are default rake tasks for the various acceptance test modules, e.g., - -```sh -bundle exec rake beaker:centos-7-x64 -bundle exec rake beaker:ssh:centos-7-x64 -``` - -If you don't want to have to recreate the virtual machine every time you can -use `BEAKER_destroy=no` and `BEAKER_provision=no`. On the first run you will at -least need `BEAKER_provision` set to yes (the default). The Vagrantfile for the -created virtual machines will be in `.vagrant/beaker_vagrant_files`. - -Beaker also supports docker containers. We also use that in our automated CI -pipeline at [travis-ci](http://travis-ci.org). To use that instead of Vagrant: - -```sh -PUPPET_INSTALL_TYPE=agent BEAKER_IS_PE=no BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_debug=true BEAKER_setfile=debian10-64{hypervisor=docker} BEAKER_destroy=yes bundle exec rake beaker +BEAKER_setfile=debian10-x64 bundle exec rake beaker ``` You can replace the string `debian10` with any common operating system. @@ -269,15 +243,10 @@ The following strings are known to work: * ubuntu2004 * debian9 * debian10 -* centos6 * centos7 * centos8 -The easiest way to debug in a docker container is to open a shell: - -```sh -docker exec -it -u root ${container_id_or_name} bash -``` +For more information and tips & tricks, see [voxpupuli-acceptance's documentation](https://github.com/voxpupuli/voxpupuli-acceptance#running-tests). The source of this file is in our [modulesync_config](https://github.com/voxpupuli/modulesync_config/blob/master/moduleroot/.github/CONTRIBUTING.md.erb) repository. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..97ddc620 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,75 @@ +name: CI + +on: pull_request + +jobs: + setup_matrix: + name: 'Setup Test Matrix' + runs-on: ubuntu-latest + timeout-minutes: 40 + outputs: + beaker_setfiles: ${{ steps.get-outputs.outputs.beaker_setfiles }} + puppet_major_versions: ${{ steps.get-outputs.outputs.puppet_major_versions }} + puppet_unit_test_matrix: ${{ steps.get-outputs.outputs.puppet_unit_test_matrix }} + env: + BUNDLE_WITHOUT: development:release + steps: + - uses: actions/checkout@v2 + - name: Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7' + bundler-cache: true + - name: Run rake validate + run: bundle exec rake validate + - name: Run rake rubocop + run: bundle exec rake rubocop + - name: Setup Test Matrix + id: get-outputs + run: bundle exec metadata2gha --use-fqdn --pidfile-workaround false + + unit: + needs: setup_matrix + runs-on: ubuntu-latest + timeout-minutes: 40 + strategy: + fail-fast: false + matrix: + include: ${{fromJson(needs.setup_matrix.outputs.puppet_unit_test_matrix)}} + env: + BUNDLE_WITHOUT: development:system_tests:release + PUPPET_VERSION: "~> ${{ matrix.puppet }}.0" + name: Puppet ${{ matrix.puppet }} (Ruby ${{ matrix.ruby }}) + steps: + - uses: actions/checkout@v2 + - name: Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + - name: Run tests + run: bundle exec rake + + acceptance: + needs: setup_matrix + runs-on: ubuntu-latest + env: + BUNDLE_WITHOUT: development:test:release + strategy: + fail-fast: false + matrix: + setfile: ${{fromJson(needs.setup_matrix.outputs.beaker_setfiles)}} + puppet: ${{fromJson(needs.setup_matrix.outputs.puppet_major_versions)}} + name: ${{ matrix.puppet.name }} - ${{ matrix.setfile.name }} + steps: + - uses: actions/checkout@v2 + - name: Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7' + bundler-cache: true + - name: Run tests + run: bundle exec rake beaker + env: + BEAKER_PUPPET_COLLECTION: ${{ matrix.puppet.collection }} + BEAKER_setfile: ${{ matrix.setfile.value }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..68b85284 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,29 @@ +name: Release + +on: + push: + tags: + - '*' + +env: + BUNDLE_WITHOUT: development:test:system_tests + +jobs: + deploy: + name: 'deploy to forge' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7' + bundler-cache: true + - name: Build and Deploy + env: + # Configure secrets here: + # https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets + BLACKSMITH_FORGE_USERNAME: '${{ secrets.PUPPET_FORGE_USERNAME }}' + BLACKSMITH_FORGE_API_KEY: '${{ secrets.PUPPET_FORGE_API_KEY }}' + run: bundle exec rake module:push diff --git a/.msync.yml b/.msync.yml index 5758aced..57ff5038 100644 --- a/.msync.yml +++ b/.msync.yml @@ -1,2 +1,2 @@ --- -modulesync_config_version: '3.1.0' +modulesync_config_version: '4.1.0' diff --git a/.pmtignore b/.pmtignore index 4e6d54b8..33a8c65d 100644 --- a/.pmtignore +++ b/.pmtignore @@ -1,11 +1,12 @@ docs/ pkg/ +Gemfile Gemfile.lock Gemfile.local vendor/ .vendor/ -spec/fixtures/manifests/ -spec/fixtures/modules/ +spec/ +Rakefile .vagrant/ .bundle/ .ruby-version @@ -13,9 +14,21 @@ coverage/ log/ .idea/ .dependencies/ +.github/ .librarian/ Puppetfile.lock *.iml +.editorconfig +.fixtures.yml +.gitignore +.msync.yml +.overcommit.yml +.pmtignore +.rspec +.rspec_parallel +.rubocop.yml +.sync.yml .*.sw? .yardoc/ +.yardopts Dockerfile diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d7871c17..00000000 --- a/.travis.yml +++ /dev/null @@ -1,73 +0,0 @@ ---- -# yamllint disable rule:line-length rule:truthy -os: linux -dist: focal -language: ruby -cache: bundler -before_install: - - yes | gem update --system - - bundle --version -script: - - 'bundle exec rake $CHECK' -jobs: - fast_finish: true - include: - - rvm: 2.4.4 - bundler_args: --without system_tests development release - env: PUPPET_VERSION="~> 5.0" CHECK=test - - rvm: 2.5.3 - bundler_args: --without system_tests development release - env: PUPPET_VERSION="~> 6.0" CHECK=test_with_coveralls - - rvm: 2.5.3 - bundler_args: --without system_tests development release - env: PUPPET_VERSION="~> 6.0" CHECK=rubocop - - rvm: 2.4.4 - bundler_args: --without system_tests development release - env: PUPPET_VERSION="~> 5.0" CHECK=build DEPLOY_TO_FORGE=yes - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet5 BEAKER_setfile=centos6-64 CHECK=beaker - services: docker - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_setfile=centos6-64 CHECK=beaker - services: docker - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet5 BEAKER_setfile=centos7-64 CHECK=beaker - services: docker - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_setfile=centos7-64 CHECK=beaker - services: docker - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet5 BEAKER_setfile=centos8-64 CHECK=beaker - services: docker - - rvm: 2.5.3 - bundler_args: --without development release - env: BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_setfile=centos8-64 CHECK=beaker - services: docker -branches: - only: - - master - - /^v\d/ -notifications: - email: false - webhooks: https://voxpupu.li/incoming/travis - irc: - on_success: always - on_failure: always - channels: - - "chat.freenode.org#voxpupuli-notifications" -deploy: - provider: puppetforge - username: puppet - password: - secure: "iItNJ/PlMvdSiYjtXWJkS69mF/4XUriTRC6axFoiTgX8BzGNWA1U/anENNyzmhRKcH/Nc0erVeau+RX8vyJ0HmIJOCvYfq5Q/SQWex1fDXLe/UYJkAEWwmeIOVSF2nTEUPDvDn/d6bNEdULw5yrNn1dT8eLqIIXl6/nThdpiS917BX6CeYdojr/mISrLsvihuB5DQRdVzH+hK1bXcECihnOfNH9lQ0lZ2v2ohJiLJL0DadDg0YMMeJMlP7CnBZzRs7fhTPdLMjzCvysef9nqBYRlGBRUn+CaQ4VoQZlWB1JchJup4qCGeU9ANkb8gdKYTy1kFkBrEDuqlUUuuTTMhDpQ+2fGF32zgnXCSnVY8AIriFfO9c1ljxL6k6vaHpfnsPcMrxuQXNeOPGYpVjNGi/Hz8OjuZ3IT07c8SmZgmGaNp+ZIKErJQV0eob0NeA/1P7HheRS5aPEiN8vj/ZGuIGa+BhbTp2riJ599urrSqGDcJ0YzNeW2BvBZQoXs953X4N4yROz4xKMNqPz/jhyGM9w5SBJ/uLiIvKTu+bSsJ2VNyrOOu25eYqzH1zKc71fKiWa1ZOTHKVM24chlmoq3tZTSpSn6OxpptKLxAYZG0IUdFSMy66m8nss1AxL2djScAptugsqpfLqziMArAoN9iWXCeGiWz1qLRl+5AlMrmMY=" - on: - tags: true - # all_branches is required to use tags - all_branches: true - # Only publish the build marked with "DEPLOY_TO_FORGE" - condition: "$DEPLOY_TO_FORGE = yes" diff --git a/Dockerfile b/Dockerfile index 6fd63422..a51c6416 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.5.3 +FROM ruby:2.7 WORKDIR /opt/puppet diff --git a/Gemfile b/Gemfile index 2fce93ce..f4855f64 100644 --- a/Gemfile +++ b/Gemfile @@ -1,15 +1,5 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org" -def location_for(place, fake_version = nil) - if place =~ /^(git[:@][^#]*)#(.*)/ - [fake_version, { :git => $1, :branch => $2, :require => false }].compact - elsif place =~ /^file:\/\/(.*)/ - ['>= 0', { :path => File.expand_path($1), :require => false }] - else - [place, { :require => false }] - end -end - group :test do gem 'voxpupuli-test', '~> 2.1', :require => false gem 'coveralls', :require => false @@ -17,32 +7,27 @@ group :test do end group :development do - gem 'travis', :require => false - gem 'travis-lint', :require => false gem 'guard-rake', :require => false gem 'overcommit', '>= 0.39.1', :require => false end group :system_tests do - gem 'voxpupuli-acceptance', :require => false + gem 'puppet_metadata', '~> 0.3.0', :require => false + gem 'voxpupuli-acceptance', :require => false end group :release do - gem 'github_changelog_generator', :require => false, :git => 'https://github.com/voxpupuli/github-changelog-generator', :branch => 'voxpupuli_essential_fixes' - gem 'puppet-blacksmith', :require => false - gem 'voxpupuli-release', :require => false - gem 'puppet-strings', '>= 2.2', :require => false + gem 'github_changelog_generator', '>= 1.16.1', :require => false + gem 'puppet-blacksmith', :require => false + gem 'voxpupuli-release', :require => false + gem 'puppet-strings', '>= 2.2', :require => false end +gem 'puppetlabs_spec_helper', '~> 2.0', :require => false +gem 'rake', :require => false +gem 'facter', ENV['FACTER_GEM_VERSION'], :require => false, :groups => [:test] - -if facterversion = ENV['FACTER_GEM_VERSION'] - gem 'facter', facterversion.to_s, :require => false, :groups => [:test] -else - gem 'facter', :require => false, :groups => [:test] -end - -ENV['PUPPET_VERSION'].nil? ? puppetversion = '~> 6.0' : puppetversion = ENV['PUPPET_VERSION'].to_s +puppetversion = ENV['PUPPET_VERSION'] || '~> 6.0' gem 'puppet', puppetversion, :require => false, :groups => [:test] # vim: syntax=ruby diff --git a/README.md b/README.md index c0da4689..5be6ceae 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,13 @@ This module provides helpful definitions for dealing with *yum*. Module has been tested on: * Puppet 4.10.9 and newer -* CentOS 6, 7 +* CentOS 7,8 * Amazon Linux 2017 * RHEL 7 * Fedora 30 (partial support) +For the official list of all tested distributions, please take a look at the metadata.json. + ## Usage ### Manage global Yum configuration via the primary class diff --git a/Rakefile b/Rakefile index b450fe7b..d1bf7491 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,10 @@ -require 'voxpupuli/test/rake' +# Attempt to load voxupuli-test (which pulls in puppetlabs_spec_helper), +# otherwise attempt to load it directly. +begin + require 'voxpupuli/test/rake' +rescue LoadError + require 'puppetlabs_spec_helper/rake_tasks' +end # load optional tasks for releases # only available if gem group releases is installed @@ -26,6 +32,7 @@ end begin require 'github_changelog_generator/task' + require 'puppet_blacksmith' GitHubChangelogGenerator::RakeTask.new :changelog do |config| version = (Blacksmith::Modulefile.new).version config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/ diff --git a/data/os/RedHat/CentOS/6.yaml b/data/os/RedHat/CentOS/6.yaml deleted file mode 100644 index a98d7b10..00000000 --- a/data/os/RedHat/CentOS/6.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -yum::os_default_repos: - - 'contrib' diff --git a/data/os/RedHat/VirtuozzoLinux/6.yaml b/data/os/RedHat/VirtuozzoLinux/6.yaml deleted file mode 100644 index f84b91a0..00000000 --- a/data/os/RedHat/VirtuozzoLinux/6.yaml +++ /dev/null @@ -1,98 +0,0 @@ -# VirtuozzoLinux 6 default repos ---- -yum::os_default_repos: - - 'virtuozzolinux-base' - - 'virtuozzolinux-updates' - - 'virtuozzolinux-base-debuginfo' - - 'virtuozzolinux-updates-debuginfo' - - 'virtuozzo' - - 'virtuozzo-updates' - - 'virtuozzo-debuginfo' - - 'ez-templates' - - 'ez-templates-32' - - 'obsoleted-ez-templates' - - 'obsoleted-ez-templates-32' - -yum::repos: - virtuozzolinux-base: - descr: "VirtuozzoLinux - Base" - #mirrorlist: "http://repo.virtuozzolinux.com/virtuozzolinux/mirrorlists/virtuozzolinux-$releasever-$basearch-os.mirrorlist" - mirrorlist: "http://repo.virtuozzo.com/vzlinux/mirrorlist/mirrors-6-os" - #baseurl: "http://repo.virtuozzo.com/vzlinux/6/$basearch/os/" - enabled: true - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzolinux-base.repo" - virtuozzolinux-updates: - descr: "VirtuozzoLinux - Updates" - mirrorlist: "http://repo.virtuozzo.com/vzlinux/mirrorlist/mirrors-6-updates" - #baseurl: "http://repo.virtuozzo.com/vzlinux/6/$basearch/updates/" - enabled: true - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzolinux-updates.repo" - virtuozzolinux-base-debuginfo: - descr: "VirtuozzoLinux - Base Debug" - mirrorlist: "http://repo.virtuozzo.com/vzlinux/mirrorlist/mirrors-6-os-debug" - #baseurl: "http://repo.virtuozzo.com/vzlinux/6/$basearch/debug/" - enabled: false - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzolinux-base-debuginfo.repo" - virtuozzolinux-updates-debuginfo: - descr: "VirtuozzoLinux - Updates Debug" - mirrorlist: "http://repo.virtuozzo.com/vzlinux/mirrorlist/mirrors-6-updates-debug" - #baseurl: "http://repo.virtuozzo.com/vzlinux/6/$basearch/debug_updates/" - enabled: false - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzolinux-updates-debuginfo.repo" - virtuozzo: - descr: "Virtuozzo Base" - mirrorlist: "http://updates.virtuozzo.com/mirrors/cloudserver/6.0/base" - enabled: true - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzo.repo" - virtuozzo-updates: - descr: "Virtuozzo Updates" - mirrorlist: "http://updates.virtuozzo.com/mirrors/cloudserver/6.0/updates" - enabled: true - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzo-updates.repo" - virtuozzo-debuginfo: - descr: "Virtuozzo Debug and Devel packages" - mirrorlist: "http://updates.virtuozzo.com/mirrors/cloudserver/6.0/debug" - enabled: false - gpgcheck: true - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/virtuozzo-debuginfo.repo" - ez-templates: - descr: "Virtuozzo - EZ templates" - mirrorlist: "http://updates.virtuozzo.com/mirrors/templates-x86_64" - enabled: true - gpgcheck: false - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/ez-templates.repo" - ez-templates-32: - descr: "Virtuozzo - EZ templates (32 bits)" - mirrorlist: "http://updates.virtuozzo.com/mirrors/templates-i386" - enabled: true - gpgcheck: false - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/ez-templates-32.repo" - obsoleted-ez-templates: - descr: "Virtuozzo - obsoleted EZ templates" - mirrorlist: "http://updates.virtuozzo.com/mirrors/obsoleted-templates-x86_64" - enabled: false - gpgcheck: false - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/obsoleted-ez-templates.repo" - obsoleted-ez-templates-32: - descr: "Virtuozzo - obsoleted EZ templates (32 bits)" - mirrorlist: "http://updates.virtuozzo.com/mirrors/obsoleted-templates-i386" - enabled: false - gpgcheck: false - gpgkey: "file:///etc/pki/rpm-gpg/PARALLELS_GPG_KEY" - target: "/etc/yum.repos.d/obsoleted-ez-templates-32.repo" diff --git a/metadata.json b/metadata.json index 283d25b8..7ba8c1d5 100644 --- a/metadata.json +++ b/metadata.json @@ -28,7 +28,6 @@ { "operatingsystem": "RedHat", "operatingsystemrelease": [ - "6", "7", "8" ] @@ -36,7 +35,6 @@ { "operatingsystem": "CentOS", "operatingsystemrelease": [ - "6", "7", "8" ] @@ -44,7 +42,6 @@ { "operatingsystem": "Scientific", "operatingsystemrelease": [ - "6", "7", "8" ] @@ -52,7 +49,6 @@ { "operatingsystem": "OracleLinux", "operatingsystemrelease": [ - "6", "7", "8" ] @@ -60,7 +56,6 @@ { "operatingsystem": "VirtuozzoLinux", "operatingsystemrelease": [ - "6", "7" ] }, @@ -81,7 +76,7 @@ "requirements": [ { "name": "puppet", - "version_requirement": ">= 5.5.8 < 7.0.0" + "version_requirement": ">= 6.1.0 < 8.0.0" } ] }