Skip to content

Commit

Permalink
Merge pull request #41 from jan-win1993/add-github-actions
Browse files Browse the repository at this point in the history
Add Github Actions & acceptance tests & update pdk
  • Loading branch information
fraenki authored Mar 7, 2023
2 parents 71c35c1 + e0ebc2c commit 5875130
Show file tree
Hide file tree
Showing 8 changed files with 209 additions and 19 deletions.
9 changes: 6 additions & 3 deletions .fixtures.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
fixtures:
forge_modules:
concat: "puppetlabs/concat"
stdlib: "puppetlabs/stdlib"
repositories:
concat: "https://github.com/puppetlabs/puppetlabs-concat.git"
facts: "https://github.com/puppetlabs/puppetlabs-facts.git"
provision: "https://github.com/puppetlabs/provision.git"
puppet_agent: "https://github.com/puppetlabs/puppetlabs-puppet_agent.git"
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
symlinks:
proftpd: "#{source_dir}"
72 changes: 72 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: ci

on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:

jobs:
check:
strategy:
fail-fast: false
matrix:
puppet_version: [6,7]

name: Check / Puppet ${{ matrix.puppet_version }}
runs-on: ubuntu-20.04

steps:
- name: Checkout source
uses: actions/checkout@v2

- name: Run pdk validate
uses: puppets-epic-show-theatre/action-pdk-validate@v1
with:
puppet-version: ${{ matrix.puppet_version }}

- name: Run pdk test unit
uses: puppets-epic-show-theatre/action-pdk-test-unit@v1
with:
puppet-version: ${{ matrix.puppet_version }}

acceptance:
strategy:
fail-fast: false
matrix:
#os: [ 'el7', 'el8', 'el8_stream', 'rocky8', 'alma8', 'el9_stream' 'deb10', 'deb11','ub2004', 'ub2204' ]
os: [ 'el8', 'rocky8' ]
puppet_version: [6,7]

name: Acceptance / ${{ matrix.os }} / Puppet ${{ matrix.puppet_version }}
runs-on: ubuntu-20.04
needs:
- check

steps:
- name: Enable IPv6 on docker
run: |
echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json
sudo service docker restart
- name: Checkout source
uses: actions/checkout@v2

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7"
bundler-cache: true

- name: Run Litmus
env:
DEBUG: true
run: |
bundle exec rake 'litmus:provision_list[gha_${{ matrix.os }}]'
bundle exec rake 'litmus:install_agent[puppet${{ matrix.puppet_version }}]'
bundle exec rake litmus:install_module
bundle exec rake litmus:acceptance:parallel
- name: Cleanup
run: |
bundle exec rake 'litmus:tear_down'
35 changes: 22 additions & 13 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,31 @@ def location_for(place_or_version, fake_version = nil)
end
end

ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.')

group :development do
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 "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 2.8.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "puppet-module-posix-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "voxpupuli-puppet-lint-plugins", '>= 3.0', require: false
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 "voxpupuli-puppet-lint-plugins", '~> 3.1', require: false
gem "facterdb", '~> 1.18', require: false
gem "metadata-json-lint", '>= 2.0.2', '< 4.0.0', require: false
gem "puppetlabs_spec_helper", '>= 3.0.0', '< 5.0.0', require: false
gem "rspec-puppet-facts", '~> 2.0', require: false
gem "codecov", '~> 0.2', require: false
gem "dependency_checker", '~> 0.2', require: false
gem "parallel_tests", '~> 3.4', 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.6.1', require: false
gem "rubocop-performance", '= 1.9.1', require: false
gem "rubocop-rspec", '= 2.0.1', require: false
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
end
group :system_tests do
gem "puppet-module-posix-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-win-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet_litmus", '< 1.0.0', require: false, platforms: [:ruby]
gem "serverspec", '~> 2.41', require: false
end

puppet_version = ENV['PUPPET_GEM_VERSION']
Expand Down
6 changes: 3 additions & 3 deletions metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,13 @@
}
],
"description": "Puppet module to manage ProFTPD on FreeBSD and Linux with very flexible, hiera-friendly configuration",
"pdk-version": "2.5.0",
"pdk-version": "2.6.1",
"tags": [
"proftpd",
"proftp",
"ftp",
"ftps"
],
"template-url": "pdk-default#2.5.0",
"template-ref": "tags/2.5.0-0-g369d483"
"template-url": "pdk-default#2.7.1",
"template-ref": "tags/2.7.1-0-g9a16c87"
}
67 changes: 67 additions & 0 deletions provision.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
default:
provisioner: docker_exp
images: ['waffleimage/centos7']
vagrant:
provisioner: vagrant
images: ['centos/7', 'generic/ubuntu2004']

deb_all:
provisioner: docker
images: ['litmusimage/debian:10', 'litmusimage/debian:11']
el_all:
provisioner: docker
images: ['litmusimage/centos:7', 'litmusimage/centos:8']
# The most reliable workaround for the docker/systemd incompatibility.
# see https://github.com/docker/for-linux/issues/835
# see https://github.com/moby/moby/issues/38749
vars: '{docker_run_opts: ["-v /sys/fs/cgroup:/sys/fs/cgroup:ro"]}'
ub_all:
provisioner: docker
images: ['litmusimage/ubuntu:20.04', 'litmusimage/ubuntu:20.04', 'litmusimage/ubuntu:22.04']

gha_deb10:
provisioner: docker
images: ['litmusimage/debian:10']
gha_deb11:
provisioner: docker
images: ['litmusimage/debian:11']
gha_el7:
provisioner: docker
images: ['litmusimage/centos:7']
# The most reliable workaround for the docker/systemd incompatibility.
# see https://github.com/docker/for-linux/issues/835
# see https://github.com/moby/moby/issues/38749
vars: '{docker_run_opts: ["-v /sys/fs/cgroup:/sys/fs/cgroup:ro"]}'
gha_el8:
provisioner: docker
images: ['litmusimage/centos:8']
# The most reliable workaround for the docker/systemd incompatibility.
# see https://github.com/docker/for-linux/issues/835
# see https://github.com/moby/moby/issues/38749
#vars: '{docker_run_opts: ["-v /sys/fs/cgroup:/sys/fs/cgroup:ro"]}'
gha_el8_stream:
provisioner: docker
images: ['litmusimage/centos:stream8']
gha_el9_stream:
provisioner: docker
images: ['litmusimage/centos:stream9']
gha_rocky8:
provisioner: docker
images: ['litmusimage/rockylinux:8']
gha_alma8:
provisioner: docker
images: ['litmusimage/almalinux:8']
# The most reliable workaround for the docker/systemd incompatibility.
# see https://github.com/docker/for-linux/issues/835
# see https://github.com/moby/moby/issues/38749
#vars: '{docker_run_opts: ["-v /sys/fs/cgroup:/sys/fs/cgroup:ro"]}'
gha_ub1804:
provisioner: docker
images: ['litmusimage/ubuntu:18.04']
gha_ub2004:
provisioner: docker
images: ['litmusimage/ubuntu:20.04']
gha_ub2204:
provisioner: docker
images: ['litmusimage/ubuntu:22.04']
16 changes: 16 additions & 0 deletions spec/acceptance/proftpd_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require 'spec_helper_acceptance'

describe 'proftpd class' do
context 'default parameters' do
it 'is expected to work idempotently with no errors' do
pp = <<-EOS
if $facts['os']['family'] == 'RedHat' {
include epel
}
class { 'proftpd': }
EOS
# Run it twice and test for idempotency
idempotent_apply(pp)
end
end
end
6 changes: 6 additions & 0 deletions spec/spec_helper_acceptance.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

require 'puppet_litmus'
require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))

PuppetLitmus.configure!
17 changes: 17 additions & 0 deletions spec/spec_helper_acceptance_local.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# frozen_string_literal: true

require 'puppet_litmus'
require 'singleton'

class LitmusHelper
include Singleton
include PuppetLitmus
end

RSpec.configure do |c|
c.before :suite do
puts 'Running acceptance test with Puppet module puppet-epel installed'
# Install soft dependencies.
LitmusHelper.instance.run_shell('puppet module install puppet/epel')
end
end

0 comments on commit 5875130

Please sign in to comment.