Skip to content
This repository has been archived by the owner on Sep 28, 2023. It is now read-only.

(SIMP-5585) Test assets support Puppet 5 #32

Merged
merged 2 commits into from
Nov 6, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
317 changes: 166 additions & 151 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.1.9
2.4.4
Loading