ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` jobtags/v2.3.1
@@ -0,0 +1,10 @@ | |||
# -*- coding: utf-8 -*- | |||
# vim: ft=yaml | |||
--- | |||
# General overrides used across formulas in the org | |||
Metrics/LineLength: | |||
# Increase from default of `80` | |||
# Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) | |||
Max: 88 | |||
# Any offenses that should be fixed, e.g. collected via. `rubocop --auto-gen-config` |
@@ -0,0 +1,13 @@ | |||
# -*- coding: utf-8 -*- | |||
# vim: ft=yaml | |||
--- | |||
exclude_paths: [] | |||
skip_list: | |||
# Using `salt-lint` for linting other files as well, such as Jinja macros/templates | |||
- 205 # Use ".sls" as a Salt State file extension | |||
# Skipping `207` and `208` because `210` is sufficient, at least for the time-being | |||
# I.e. Allows 3-digit unquoted codes to still be used, such as `644` and `755` | |||
- 207 # File modes should always be encapsulated in quotation marks | |||
- 208 # File modes should always contain a leading zero | |||
tags: [] | |||
verbosity: 1 |
@@ -1,64 +1,43 @@ | |||
# -*- coding: utf-8 -*- | |||
# vim: ft=yaml | |||
--- | |||
## Machine config | |||
dist: bionic | |||
stages: | |||
- test | |||
- lint | |||
- name: release | |||
if: branch = master AND type != pull_request | |||
sudo: required | |||
cache: bundler | |||
language: ruby | |||
services: | |||
- docker | |||
# Make sure the instances listed below match up with | |||
# the `platforms` defined in `kitchen.yml` | |||
env: | |||
matrix: | |||
- INSTANCE: default-debian-10-develop-py3 | |||
# - INSTANCE: default-ubuntu-1804-develop-py3 | |||
# - INSTANCE: default-centos-7-develop-py3 | |||
# - INSTANCE: default-fedora-30-develop-py3 | |||
# - INSTANCE: default-opensuse-leap-15-develop-py3 | |||
# - INSTANCE: default-amazonlinux-2-develop-py2 | |||
# - INSTANCE: default-arch-base-latest-develop-py2 | |||
# - INSTANCE: default-debian-9-2019-2-py3 | |||
- INSTANCE: default-ubuntu-1804-2019-2-py3 | |||
- INSTANCE: default-centos-7-2019-2-py3 | |||
# - INSTANCE: default-fedora-30-2019-2-py3 | |||
# - INSTANCE: default-opensuse-leap-15-2019-2-py3 | |||
# - INSTANCE: default-amazonlinux-2-2019-2-py2 | |||
- INSTANCE: default-arch-base-latest-2019-2-py2 | |||
# - INSTANCE: default-debian-9-2018-3-py2 | |||
# - INSTANCE: default-ubuntu-1604-2018-3-py2 | |||
# - INSTANCE: default-centos-7-2018-3-py2 | |||
- INSTANCE: default-fedora-29-2018-3-py2 | |||
- INSTANCE: default-opensuse-leap-15-2018-3-py2 | |||
# - INSTANCE: default-amazonlinux-2-2018-3-py2 | |||
# - INSTANCE: default-arch-base-latest-2018-3-py2 | |||
# - INSTANCE: default-debian-8-2017-7-py2 | |||
# - INSTANCE: default-ubuntu-1604-2017-7-py2 | |||
- INSTANCE: default-centos-6-2017-7-py2 | |||
# - INSTANCE: default-fedora-29-2017-7-py2 | |||
# - INSTANCE: default-opensuse-leap-15-2017-7-py2 | |||
# - INSTANCE: default-amazonlinux-2-2017-7-py2 | |||
# - INSTANCE: default-arch-base-latest-2017-7-py2 | |||
## Language and cache config | |||
language: ruby | |||
cache: bundler | |||
## Script to run for the test stage | |||
script: | |||
- bin/kitchen verify ${INSTANCE} | |||
- bin/kitchen verify "${INSTANCE}" | |||
## Stages and jobs matrix | |||
stages: | |||
- test | |||
- name: release | |||
if: branch = master AND type != pull_request | |||
jobs: | |||
allow_failures: | |||
- env: Lint_rubocop | |||
fast_finish: true | |||
include: | |||
# Define the `lint` stage (runs `yamllint` and `commitlint`) | |||
- stage: lint | |||
language: node_js | |||
## Define the test stage that runs the linters (and testing matrix, if applicable) | |||
# Run all of the linters in a single job (except `rubocop`) | |||
- language: node_js | |||
node_js: lts/* | |||
env: Lint | |||
name: 'Lint: salt-lint, yamllint & commitlint' | |||
before_install: skip | |||
script: | |||
# Install and run `salt-lint` | |||
- pip install --user salt-lint | |||
- git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$' | |||
| xargs -I {} salt-lint {} | |||
# Install and run `yamllint` | |||
# Need at least `v1.17.0` for the `yaml-files` setting | |||
- pip install --user yamllint>=1.17.0 | |||
@@ -67,10 +46,56 @@ jobs: | |||
- npm install @commitlint/config-conventional -D | |||
- npm install @commitlint/travis-cli -D | |||
- commitlint-travis | |||
# Define the release stage that runs `semantic-release` | |||
# Run the `rubocop` linter in a separate job that is allowed to fail | |||
# Once these lint errors are fixed, this can be merged into a single job | |||
- language: node_js | |||
node_js: lts/* | |||
env: Lint_rubocop | |||
name: 'Lint: rubocop' | |||
before_install: skip | |||
script: | |||
# Install and run `rubocop` | |||
- gem install rubocop | |||
- rubocop -d | |||
## Define the rest of the matrix based on Kitchen testing | |||
# Make sure the instances listed below match up with | |||
# the `platforms` defined in `kitchen.yml` | |||
- env: INSTANCE=default-debian-10-develop-py3 | |||
# - env: INSTANCE=default-ubuntu-1804-develop-py3 | |||
# - env: INSTANCE=default-centos-7-develop-py3 | |||
# - env: INSTANCE=default-fedora-30-develop-py3 | |||
# - env: INSTANCE=default-opensuse-leap-15-develop-py3 | |||
# - env: INSTANCE=default-amazonlinux-2-develop-py2 | |||
# - env: INSTANCE=default-arch-base-latest-develop-py2 | |||
# - env: INSTANCE=default-debian-9-2019-2-py3 | |||
- env: INSTANCE=default-ubuntu-1804-2019-2-py3 | |||
- env: INSTANCE=default-centos-7-2019-2-py3 | |||
# - env: INSTANCE=default-fedora-30-2019-2-py3 | |||
# - env: INSTANCE=default-opensuse-leap-15-2019-2-py3 | |||
# - env: INSTANCE=default-amazonlinux-2-2019-2-py2 | |||
- env: INSTANCE=default-arch-base-latest-2019-2-py2 | |||
# - env: INSTANCE=default-debian-9-2018-3-py2 | |||
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2 | |||
# - env: INSTANCE=default-centos-7-2018-3-py2 | |||
- env: INSTANCE=default-fedora-29-2018-3-py2 | |||
- env: INSTANCE=default-opensuse-leap-15-2018-3-py2 | |||
# - env: INSTANCE=default-amazonlinux-2-2018-3-py2 | |||
# - env: INSTANCE=default-arch-base-latest-2018-3-py2 | |||
# - env: INSTANCE=default-debian-8-2017-7-py2 | |||
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2 | |||
- env: INSTANCE=default-centos-6-2017-7-py2 | |||
# - env: INSTANCE=default-fedora-29-2017-7-py2 | |||
# - env: INSTANCE=default-opensuse-leap-15-2017-7-py2 | |||
# - env: INSTANCE=default-amazonlinux-2-2017-7-py2 | |||
# - env: INSTANCE=default-arch-base-latest-2017-7-py2 | |||
## Define the release stage that runs `semantic-release` | |||
- stage: release | |||
language: node_js | |||
node_js: lts/* | |||
env: Release | |||
name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA' | |||
before_install: skip | |||
script: | |||
# Update `AUTHORS.md` |
@@ -17,6 +17,7 @@ yaml-files: | |||
# Default settings | |||
- '*.yaml' | |||
- '*.yml' | |||
- .salt-lint | |||
- .yamllint | |||
# SaltStack Formulas additional settings | |||
- '*.example' |
@@ -1,6 +1,7 @@ | |||
source "https://rubygems.org" | |||
# frozen_string_literal: true | |||
source 'https://rubygems.org' | |||
gem 'kitchen-docker', '>= 2.9' | |||
gem 'kitchen-salt', '>= 0.6.0' | |||
gem 'kitchen-inspec', '>= 1.1' | |||
gem 'kitchen-salt', '>= 0.6.0' |
@@ -8,22 +8,25 @@ | |||
# this file is here to facilitate running it. | |||
# | |||
require "pathname" | |||
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", | |||
Pathname.new(__FILE__).realpath) | |||
require 'pathname' | |||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', | |||
Pathname.new(__FILE__).realpath) | |||
bundle_binstub = File.expand_path("../bundle", __FILE__) | |||
bundle_binstub = File.expand_path('bundle', __dir__) | |||
if File.file?(bundle_binstub) | |||
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ | |||
load(bundle_binstub) | |||
else | |||
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. | |||
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") | |||
abort( | |||
'Your `bin/bundle` was not generated by Bundler, '\ | |||
'so this binstub cannot run. Replace `bin/bundle` by running '\ | |||
'`bundle binstubs bundler --force`, then run this command again.' | |||
) | |||
end | |||
end | |||
require "rubygems" | |||
require "bundler/setup" | |||
require 'rubygems' | |||
require 'bundler/setup' | |||
load Gem.bin_path("test-kitchen", "kitchen") | |||
load Gem.bin_path('test-kitchen', 'kitchen') |
@@ -37,21 +37,21 @@ nginx_{{ domain }}_ssl_certificate: | |||
- name: {{ certificates_path }}/{{ domain }}.crt | |||
- makedirs: True | |||
{% if salt['pillar.get']("nginx:certificates:{}:public_cert_pillar".format(domain)) %} | |||
- contents_pillar: {{salt['pillar.get']('nginx:certificates:{}:public_cert_pillar'.format(domain))}} | |||
- contents_pillar: {{ salt['pillar.get']('nginx:certificates:{}:public_cert_pillar'.format(domain)) }} | |||
{% else %} | |||
- contents_pillar: nginx:certificates:{{ domain }}:public_cert | |||
{% endif %} | |||
- watch_in: | |||
- service: nginx_service | |||
{% if salt['pillar.get']("nginx:certificates:{}:private_key".format(domain)) or salt['pillar.get']("nginx:certificates:{}:private_key_pillar".format(domain))%} | |||
{% if salt['pillar.get']("nginx:certificates:{}:private_key".format(domain)) or salt['pillar.get']("nginx:certificates:{}:private_key_pillar".format(domain)) %} | |||
nginx_{{ domain }}_ssl_key: | |||
file.managed: | |||
- name: {{ certificates_path }}/{{ domain }}.key | |||
- mode: 600 | |||
- makedirs: True | |||
{% if salt['pillar.get']("nginx:certificates:{}:private_key_pillar".format(domain)) %} | |||
- contents_pillar: {{salt['pillar.get']('nginx:certificates:{}:private_key_pillar'.format(domain))}} | |||
- contents_pillar: {{ salt['pillar.get']('nginx:certificates:{}:private_key_pillar'.format(domain)) }} | |||
{% else %} | |||
- contents_pillar: nginx:certificates:{{ domain }}:private_key | |||
{% endif %} |
@@ -172,26 +172,26 @@ | |||
{% if 'user' not in nginx.server.config %} | |||
{% do nginx.server.config.update({ | |||
'user': nginx.lookup.webuser, | |||
})%} | |||
}) %} | |||
{% endif %} | |||
{% if 'pid' not in nginx.server.config and 'pid_file' in nginx.lookup %} | |||
{% do nginx.server.config.update({ | |||
'pid': nginx.lookup.pid_file, | |||
})%} | |||
}) %} | |||
{% endif %} | |||
{% if salt['grains.get']('os_family') == 'RedHat' %} | |||
{% do nginx.passenger.update({ | |||
'passenger_root': '/usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini', | |||
'passenger_instance_registry_dir': '/var/run/passenger-instreg', | |||
})%} | |||
}) %} | |||
{% if 'osfinger' in grains and salt['grains.get']('osfinger') == 'CentOS-6' %} | |||
{% do nginx.server.config.update({ | |||
'pid': '/var/run/nginx.pid', | |||
})%} | |||
}) %} | |||
{% do nginx.passenger.update({ | |||
'passenger_root': '/usr/lib/ruby/1.8/phusion_passenger/locations.ini', | |||
})%} | |||
}) %} | |||
{% endif %} | |||
{% endif %} |
@@ -146,7 +146,7 @@ nginx_phusionpassenger_yum_repo: | |||
- humanname: nginx phusionpassenger repo | |||
- baseurl: 'https://oss-binaries.phusionpassenger.com/yum/passenger/el/$releasever/$basearch' | |||
- repo_gpgcheck: 1 | |||
- gpgcheck: 0 | |||
- gpgcheck: 0 | |||
- gpgkey: 'https://packagecloud.io/gpg.key' | |||
- enabled: True | |||
- sslverify: 1 |