diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e909dfb..4f38024 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,189 +1,204 @@ # The testing matrix considers ruby/puppet versions supported by SIMP and PE: # -# https://puppet.com/docs/pe/2017.3/overview/component_versions_in_recent_pe_releases.html +# https://puppet.com/docs/pe/2018.1/component_versions_in_recent_pe_releases.html # https://puppet.com/misc/puppet-enterprise-lifecycle -# https://puppet.com/docs/pe/2017.3/overview/getting_support_for_pe.html#standard-releases-and-long-term-support-releases +# https://puppet.com/docs/pe/2018.1/overview/getting_support_for_pe.html # ------------------------------------------------------------------------------ -# release pup ruby eol -# PE 2017.2 4.10 2.1.9 2018-02-21 -# PE 2017.3 5.3 2.4.1 2018-07 -# PE 2018.1 5.5 2.4.4 ????-?? (LTS) +# Release Puppet Ruby EOL +# SIMP 6.1 4.10.6 2.1.9 TBD +# SIMP 6.2 4.10.12 2.1.9 TBD +# PE 2016.4.15 4.10.12 2.1.9 2018-12 (LTS) +# PE 2017.3.10 5.3.8 2.4.4 2018-12 (STS) +# SIMP 6.3 5.5.7 2.4.4 TBD*** +# PE 2018.1 5.5.6 2.4.4 2020-05 (LTS)*** +# PE 2019.0 6.0 2.5.1 2019-08-31^^^ +# +# *** = Modules created for SIMP 6.3+ are not required to support Puppet < 5.5 +# ^^^ = SIMP doesn't support 6 yet; tests are info-only and allowed to fail --- -.cache_bundler: &cache_bundler +stages: + - 'sanity' + - 'validation' + - 'acceptance' + - 'compliance' + - 'deployment' + +image: 'ruby:2.4' + +variables: + PUPPET_VERSION: 'UNDEFINED' # <- Matrixed jobs MUST override this (or fail) + BUNDLER_VERSION: '1.16.1' + + # Force dependencies into a path the gitlab-runner user can write to. + # (This avoids some failures on Runners with misconfigured ruby environments.) + GEM_HOME: .vendor/gem_install + BUNDLE_CACHE_PATH: .vendor/bundle + BUNDLE_PATH: .vendor/bundle + BUNDLE_BIN: .vendor/gem_install/bin + BUNDLE_NO_PRUNE: 'true' + + +# bundler dependencies and caching +# +# - Cache bundler gems between pipelines foreach Ruby version +# - Try to use cached and local resources before downloading dependencies +# -------------------------------------- +.setup_bundler_env: &setup_bundler_env cache: untracked: true - # An attempt at caching between runs (ala Travis CI) - key: "${CI_PROJECT_NAMESPACE}__bundler" + key: "${CI_PROJECT_NAMESPACE}_ruby-${MATRIX_RUBY_VERSION}_bundler" paths: - '.vendor' - - 'vendor' - -.setup_bundler_env: &setup_bundler_env before_script: - - 'export GEM_HOME=.vendor/gem_install' - - 'export BUNDLE_CACHE_PATH=.vendor/bundler' - - 'declare GEM_BUNDLER_VER=(-v ''~> ${BUNDLER_VERSION:-1.16.0}'')' - - declare GEM_INSTALL=(gem install --no-document) - - declare BUNDLER_INSTALL=(bundle install --no-binstubs --jobs $(nproc) --path=.vendor "${FLAGS[@]}") - - gem list -ie "${GEM_BUNDLE_VER[@]}" --silent bundler || "${GEM_INSTALL[@]}" --local "${GEM_BUNDLE_VER[@]}" bundler || "${GEM_INSTALL[@]}" "${GEM_BUNDLE_VER[@]}" bundler + - 'ruby -e "puts %(Environment Variables:\n * #{ENV.keys.grep(/PUPPET|SIMP|BEAKER|MATRIX/).map{|v| %(#{v} = #{ENV[v]})}.join(%(\n * ))})"' + - 'declare GEM_BUNDLER_VER=(-v "~> ${BUNDLER_VERSION:-1.16.0}")' + - 'declare GEM_INSTALL_CMD=(gem install --no-document)' + - 'declare BUNDLER_INSTALL_CMD=(bundle install --no-binstubs --jobs $(nproc) "${FLAGS[@]}")' + - 'mkdir -p ${GEM_HOME} ${BUNDLER_BIN}' + - 'gem list -ie "${GEM_BUNDLER_VER[@]}" --silent bundler || "${GEM_INSTALL_CMD[@]}" --local "${GEM_BUNDLER_VER[@]}" bundler || "${GEM_INSTALL_CMD[@]}" "${GEM_BUNDLER_VER[@]}" bundler' - 'rm -rf pkg/ || :' - - bundle check || rm -f Gemfile.lock && ("${BUNDLER_INSTALL[@]}" --local || "${BUNDLER_INSTALL[@]}") - -.validation_checks: &validation_checks - script: - - bundle exec rake syntax - - bundle exec rake check:dot_underscore - - bundle exec rake check:test_file - - bundle exec rake pkg:check_version - - bundle exec rake pkg:compare_latest_tag - - bundle exec rake lint - - bundle exec rake clean - - bundle exec puppet module build - -.spec_tests: &spec_tests - script: - - bundle exec rake spec - -stages: - - validation - - unit - - acceptance - - deploy + - 'bundle check || rm -f Gemfile.lock && ("${BUNDLER_INSTALL_CMD[@]}" --local || "${BUNDLER_INSTALL_CMD[@]}" || bundle pristine || "${BUNDLER_INSTALL_CMD[@]}") || { echo "PIPELINE: Bundler could not install everything (see log output above)" && exit 99 ; }' # To avoid running a prohibitive number of tests every commit, # don't set this env var in your gitlab instance .only_with_SIMP_FULL_MATRIX: &only_with_SIMP_FULL_MATRIX only: variables: - - $SIMP_FULL_MATRIX + - $SIMP_FULL_MATRIX == "yes" -# Puppet 4.10 for PE 2017.2 support (EOL:2018-02-21) -# See: https://puppet.com/misc/puppet-enterprise-lifecycle -# -------------------------------------- -pup4_10-validation: - stage: validation - tags: - - docker - image: ruby:2.1 +# Puppet Versions +#----------------------------------------------------------------------- + +.pup_4: &pup_4 + image: 'ruby:2.4' variables: - PUPPET_VERSION: '~> 4.10.0' - <<: *cache_bundler - <<: *setup_bundler_env - <<: *validation_checks + PUPPET_VERSION: '~> 4.0' + MATRIX_RUBY_VERSION: '2.1' -pup4_10-unit: - stage: unit - tags: - - docker - image: ruby:2.1 +.pup_4_10: &pup_4_10 + image: 'ruby:2.1' variables: - PUPPET_VERSION: '~> 4.10.0' - <<: *cache_bundler - <<: *setup_bundler_env - <<: *spec_tests + PUPPET_VERSION: '~> 4.10.4' + MATRIX_RUBY_VERSION: '2.1' +.pup_5: &pup_5 + image: 'ruby:2.4' + variables: + PUPPET_VERSION: '~> 5.0' + BEAKER_PUPPET_COLLECTION: 'puppet5' + MATRIX_RUBY_VERSION: '2.4' -# Puppet 5.3 for PE 2017.3 support (EOL: 2018-07) -# See: https://puppet.com/misc/puppet-enterprise-lifecycle -# -------------------------------------- -pup5_3-validation: - stage: validation - tags: - - docker - image: ruby:2.4 +.pup_5_3: &pup_5_3 + image: 'ruby:2.4' variables: PUPPET_VERSION: '~> 5.3.0' - <<: *cache_bundler - <<: *setup_bundler_env - <<: *validation_checks - allow_failure: true + BEAKER_PUPPET_COLLECTION: 'puppet5' + MATRIX_RUBY_VERSION: '2.4' -pup5_3-unit: - stage: unit - tags: - - docker - image: ruby:2.4 +.pup_5_5_7: &pup_5_5_7 + image: 'ruby:2.4' variables: - PUPPET_VERSION: '~> 5.3.0' - <<: *cache_bundler - <<: *setup_bundler_env - <<: *spec_tests + PUPPET_VERSION: '5.5.7' + BEAKER_PUPPET_COLLECTION: 'puppet5' + MATRIX_RUBY_VERSION: '2.4' -# Puppet 5.5 for PE 2018.1 support (EOL: 2018-07) -# See: https://puppet.com/misc/puppet-enterprise-lifecycle -# -------------------------------------- -pup5_5-validation: - stage: validation - tags: - - docker - image: ruby:2.4 +.pup_6: &pup_6 + allow_failure: true + image: 'ruby:2.5' variables: - PUPPET_VERSION: '~> 5.5.0' - <<: *cache_bundler + PUPPET_VERSION: '~> 6.0' + BEAKER_PUPPET_COLLECTION: 'puppet6' + MATRIX_RUBY_VERSION: '2.5' + + +# Testing Environments +#----------------------------------------------------------------------- + +.lint_tests: &lint_tests + stage: 'validation' + tags: ['docker'] <<: *setup_bundler_env - <<: *validation_checks -pup5_5-unit: - stage: unit - tags: - - docker - image: ruby:2.4 - variables: - PUPPET_VERSION: '~> 5.5.0' - <<: *cache_bundler + script: + - 'bundle exec rake syntax' + - 'bundle exec rake lint' + - 'bundle exec rake metadata_lint' + +.unit_tests: &unit_tests + stage: 'validation' + tags: ['docker'] <<: *setup_bundler_env - <<: *spec_tests - -# Keep an eye on the latest puppet 5 -# ---------------------------------- -pup5_latest-validation: - stage: validation - tags: - - docker - image: ruby:2.4 - variables: - PUPPET_VERSION: '~> 5.0' - <<: *cache_bundler + script: + - 'bundle exec rake spec' + +.acceptance_base: &acceptance_base + stage: 'acceptance' + tags: ['beaker'] <<: *setup_bundler_env - <<: *validation_checks - allow_failure: true -pup5_latest-unit: - stage: unit - tags: - - docker - image: ruby:2.4 - variables: - PUPPET_VERSION: '~> 5.0' - <<: *cache_bundler +.compliance_base: &compliance_base + stage: 'compliance' + tags: ['beaker'] <<: *setup_bundler_env - <<: *spec_tests - allow_failure: true +# Pipeline / testing matrix +#======================================================================= -## Acceptance tests -## ============================================================================== -#default: -# stage: acceptance -# tags: -# - beaker -# <<: *cache_bundler -# <<: *setup_bundler_env -# variables: -# PUPPET_VERSION: '~> 4.10.0' -# script: -# - bundle exec rake spec_clean -# - bundle exec rake beaker:suites[default] +sanity_checks: + <<: *pup_5 + <<: *setup_bundler_env + stage: 'sanity' + tags: ['docker'] + script: + - 'if `hash apt-get`; then apt-get update; fi' + - 'if `hash apt-get`; then apt-get install -y rpm; fi' + - 'bundle exec rake check:dot_underscore' + - 'bundle exec rake check:test_file' + - 'bundle exec rake pkg:check_version' + - 'bundle exec rake pkg:compare_latest_tag' + - 'bundle exec rake pkg:create_tag_changelog' + - 'bundle exec puppet module build' + +# Linting +#----------------------------------------------------------------------- + +pup4-lint: + <<: *pup_4 + <<: *lint_tests + +pup5-lint: + <<: *pup_5 + <<: *lint_tests + +pup6-lint: + <<: *pup_6 + <<: *lint_tests + +# Unit Tests +#----------------------------------------------------------------------- + +pup5-unit: + <<: *pup_5 + <<: *unit_tests + +pup5.3-unit: + <<: *pup_5_3 + <<: *unit_tests + +pup5.5.7-unit: + <<: *pup_5_5_7 + <<: *unit_tests + +pup4.10-unit: + <<: *pup_4_10 + <<: *unit_tests + +pup6-unit: + <<: *pup_6 + <<: *unit_tests + +# Acceptance tests +# ============================================================================== +# This module does not have acceptance tests yet. # -#default-fips: -# stage: acceptance -# tags: -# - beaker -# <<: *cache_bundler -# <<: *setup_bundler_env -# variables: -# PUPPET_VERSION: '~> 4.10.0' -# BEAKER_fips: 'yes' -# script: -# - bundle exec rake spec_clean -# - bundle exec rake beaker:suites[default] +# See: https://simp-project.atlassian.net/browse/SIMP-5632) diff --git a/.ruby-version b/.ruby-version index b88e500..79a6144 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.1.9 \ No newline at end of file +2.4.4 diff --git a/.travis.yml b/.travis.yml index 817ee3b..6553142 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,31 @@ # The testing matrix considers ruby/puppet versions supported by SIMP and PE: +# +# https://puppet.com/docs/pe/2018.1/component_versions_in_recent_pe_releases.html +# https://puppet.com/misc/puppet-enterprise-lifecycle +# https://puppet.com/docs/pe/2018.1/overview/getting_support_for_pe.html # ------------------------------------------------------------------------------ -# release pup ruby eol -# PE 2017.2 4.10 2.1.9 TBD +# Release Puppet Ruby EOL +# SIMP 6.2 4.10 2.1.9 TBD +# PE 2016.4 4.10 2.1.9 2018-12-31 (LTS) +# PE 2017.3 5.3 2.4.4 2018-12-31 +# SIMP 6.3 5.5 2.4.4 TBD*** +# PE 2018.1 5.5 2.4.4 2020-05 (LTS)*** +# PE 2019.0 6.0 2.5.1 2019-08-31^^^ +# +# *** = Modules created for SIMP 6.3+ are not required to support Puppet < 5.5 +# ^^^ = SIMP doesn't support 6 yet; tests are info-only and allowed to fail + --- language: ruby cache: bundler sudo: false +stages: + - check + - spec + - name: deploy + if: 'fork = false AND tag = true' + bundler_args: --without development system_tests --path .vendor notifications: @@ -20,11 +39,18 @@ addons: before_install: - rm -f Gemfile.lock +global: + - STRICT_VARIABLES=yes + jobs: + allow_failures: + - name: 'Latest Puppet 6.x (allowed to fail)' + include: - stage: check - rvm: 2.4.1 - env: STRICT_VARIABLES=yes TRUSTED_NODE_DATA=yes PUPPET_VERSION="~> 5" + name: 'Syntax, style, and validation checks' + rvm: 2.4.4 + env: PUPPET_VERSION="~> 5" script: - bundle exec rake check:dot_underscore - bundle exec rake check:test_file @@ -36,14 +62,37 @@ jobs: - bundle exec puppet module build - stage: spec - rvm: 2.4.1 - env: STRICT_VARIABLES=yes TRUSTED_NODE_DATA=yes PUPPET_VERSION="~> 5.0" + name: 'Puppet 4.10 (SIMP 6.2, PE 2016.4)' + rvm: 2.1.9 + env: PUPPET_VERSION="~> 4.10.0" script: - bundle exec rake spec - stage: spec - rvm: 2.1.9 - env: STRICT_VARIABLES=yes TRUSTED_NODE_DATA=yes PUPPET_VERSION="~> 4.10.0" + name: 'Puppet 5.3 (PE 2017.3)' + rvm: 2.4.4 + env: PUPPET_VERSION="~> 5.3.0" + script: + - bundle exec rake spec + + - stage: spec + rvm: 2.4.4 + name: 'Puppet 5.5 (SIMP 6.3, PE 2018.1)' + env: PUPPET_VERSION="~> 5.5.0" + script: + - bundle exec rake spec + + - stage: spec + name: 'Latest Puppet 5.x' + rvm: 2.4.4 + env: PUPPET_VERSION="~> 5.0" + script: + - bundle exec rake spec + + - stage: spec + name: 'Latest Puppet 6.x (allowed to fail)' + rvm: 2.5.1 + env: PUPPET_VERSION="~> 6.0" script: - bundle exec rake spec diff --git a/CHANGELOG b/CHANGELOG index 16e7e57..4fb78f5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ - Added Puppet 5 and OEL support - Dropped support for Hiera v4. Dependency auditd has dropped support for Hiera v4, causing Puppet 4.7 tests to fail in this module. +- Update badges and contribution guide URL in README.md * Thu Jun 07 2018 Liz Nemsick - 6.0.2-0 - Advance beyond bad changelog entry diff --git a/Gemfile b/Gemfile index d82f1e9..c308a61 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem_sources.each { |gem_source| source gem_source } group :test do gem 'rake' - gem 'puppet', ENV.fetch('PUPPET_VERSION', '~> 4.0') + gem 'puppet', ENV.fetch('PUPPET_VERSION', '~> 5.5') gem 'rspec' gem 'rspec-puppet' gem 'hiera-puppet-helper' @@ -16,8 +16,8 @@ group :test do gem 'puppet-strings' gem 'puppet-lint-empty_string-check', :require => false gem 'puppet-lint-trailing_comma-check', :require => false - gem 'simp-rspec-puppet-facts', ENV.fetch('SIMP_RSPEC_PUPPET_FACTS_VERSION', '~> 2.0') - gem 'simp-rake-helpers', ENV.fetch('SIMP_RAKE_HELPERS_VERSION', ['>= 5.2', '< 6.0']) + gem 'simp-rspec-puppet-facts', ENV.fetch('SIMP_RSPEC_PUPPET_FACTS_VERSION', '~> 2.2') + gem 'simp-rake-helpers', ENV.fetch('SIMP_RAKE_HELPERS_VERSION', '~> 5.6') end group :development do @@ -28,5 +28,5 @@ end group :system_tests do gem 'beaker' gem 'beaker-rspec' - gem 'simp-beaker-helpers', ENV.fetch('SIMP_BEAKER_HELPERS_VERSION', ['>= 1.10.8', '< 2.0']) + gem 'simp-beaker-helpers', ENV.fetch('SIMP_BEAKER_HELPERS_VERSION', '~> 1.12') end diff --git a/README.md b/README.md index 24fc67a..c5a9d59 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -[![License](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html) [![Build Status](https://travis-ci.org/simp/pupmod-simp-upstart.svg)](https://travis-ci.org/simp/pupmod-simp-upstart) [![SIMP compatibility](https://img.shields.io/badge/SIMP%20compatibility-4.2.*%2F5.1.*-orange.svg)](https://img.shields.io/badge/SIMP%20compatibility-4.2.*%2F5.1.*-orange.svg) +[![License](https://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/73/badge)](https://bestpractices.coreinfrastructure.org/projects/73) +[![Puppet Forge](https://img.shields.io/puppetforge/v/simp/upstart.svg)](https://forge.puppetlabs.com/simp/upstart) +[![Puppet Forge Downloads](https://img.shields.io/puppetforge/dt/simp/upstart.svg)](https://forge.puppetlabs.com/simp/upstart) +[![Build Status](https://travis-ci.org/simp/pupmod-simp-upstart.svg)](https://travis-ci.org/simp/pupmod-simp-upstart) # Module @@ -95,8 +99,7 @@ Linux-compatible distribution. ## Development -Please read our [Contribution Guide](https://simp-project.atlassian.net/wiki/display/SD/Contributing+to+SIMP) -and visit our [Developer Wiki](https://simp-project.atlassian.net/wiki/display/SD/SIMP+Development+Home) +Please read our [Contribution Guide](http://simp-doc.readthedocs.io/en/stable/contributors_guide/index.html). If you find any issues, they can be submitted to our [JIRA](https://simp-project.atlassian.net).