69 changes: 69 additions & 0 deletions .github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +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 ]
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: |
bundle config set system 'true'
${{ 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 }}
46 changes: 46 additions & 0 deletions .github/workflows/static_code_analysis.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: Static Code Analysis

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
static_code_analysis:
name: Run checks

env:
ruby_version: 2.5
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: 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
60 changes: 60 additions & 0 deletions .github/workflows/unit_tests_with_nightly_puppet_gem.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +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 ]
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: |
bundle config set system 'true'
${{ 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
48 changes: 48 additions & 0 deletions .github/workflows/unit_tests_with_released_puppet_gem.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
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 ]
include:
- puppet_version: 5
ruby: 2.4
- puppet_version: 6
ruby: 2.5

- 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: |
bundle config set system 'true'
bundle update --jobs 4 --retry 3
- name: Run unit tests
run: bundle exec rake parallel_spec
45 changes: 0 additions & 45 deletions .travis.yml

This file was deleted.

12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).

## [1.2.0](https://github.com/puppetlabs/puppetlabs-zfs_core/tree/1.2.0) (2020-10-30)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-zfs_core/compare/1.1.0...1.2.0)

### Added

- \(Modules-7207\) Add 'caches' support [\#38](https://github.com/puppetlabs/puppetlabs-zfs_core/pull/38) ([kBite](https://github.com/kBite))

### Fixed

- \(MODULES-10848\) Do not redefine PARAMETER\_UNSET\_OR\_NOT\_AVAILABLE [\#39](https://github.com/puppetlabs/puppetlabs-zfs_core/pull/39) ([beechtom](https://github.com/beechtom))

## [1.1.0](https://github.com/puppetlabs/puppetlabs-zfs_core/tree/1.1.0) (2020-07-09)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-zfs_core/compare/1.0.5...1.1.0)
Expand Down
16 changes: 12 additions & 4 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ 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')
Expand All @@ -25,21 +33,21 @@ group :development do
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-posix-dev-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-module-win-dev-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 "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 3.34')
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'] || '~> 0.15')
gem "beaker-puppet", *location_for(ENV['BEAKER_PUPPET_VERSION'] || '~> 1.0')
gem "pdk", '~> 1.18', platforms: [:ruby]
gem "puppet-blacksmith", '~> 3.4', require: false
end

puppet_version = ENV['PUPPET_GEM_VERSION']
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@

# zfs_core

[![Modules Status](https://github.com/puppetlabs/puppetlabs-zfs_core/workflows/%5BDaily%5D%20Unit%20Tests%20with%20nightly%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-zfs_core/actions)
[![Modules Status](https://github.com/puppetlabs/puppetlabs-zfs_core/workflows/Static%20Code%20Analysis/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-zfs_core/actions)
[![Modules Status](https://github.com/puppetlabs/puppetlabs-zfs_core/workflows/Unit%20Tests%20with%20nightly%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-zfs_core/actions)
[![Modules Status](https://github.com/puppetlabs/puppetlabs-zfs_core/workflows/Unit%20Tests%20with%20released%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-zfs_core/actions)


#### Table of Contents

1. [Description](#description)
Expand Down
25 changes: 25 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,28 @@ EOM
end
end

desc "verify that commit messages match CONTRIBUTING.md requirements"
task(:commits) do
# This rake task looks at the summary from every commit from this branch not
# in the branch targeted for a PR.
commit_range = 'HEAD^..HEAD'
puts "Checking commits #{commit_range}"
%x{git log --no-merges --pretty=%s #{commit_range}}.each_line do |commit_summary|
# This regex tests for the currently supported commit summary tokens.
# The exception tries to explain it in more full.
if /^\((maint|packaging|doc|docs|modules-\d+)\)|revert/i.match(commit_summary).nil?
raise "\n\n\n\tThis commit summary didn't match CONTRIBUTING.md guidelines:\n" \
"\n\t\t#{commit_summary}\n" \
"\tThe commit summary (i.e. the first line of the commit message) should start with one of:\n" \
"\t\t(MODULES-<digits>) # this is most common and should be a ticket at tickets.puppet.com\n" \
"\t\t(docs)\n" \
"\t\t(docs)(DOCUMENT-<digits>)\n" \
"\t\t(packaging)\n"
"\t\t(maint)\n" \
"\n\tThis test for the commit summary is case-insensitive.\n\n\n"
else
puts "#{commit_summary}"
end
puts "...passed"
end
end
Loading