diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..bdae9aa --- /dev/null +++ b/.rubocop.yml @@ -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` diff --git a/.salt-lint b/.salt-lint new file mode 100644 index 0000000..5bfd547 --- /dev/null +++ b/.salt-lint @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +exclude_paths: + # Save time spent checking files by avoiding the deprecated `ng/` directory + - php/ng/ +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 diff --git a/.travis.yml b/.travis.yml index 19db874..7c5c249 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,60 +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: debian-debian-10-develop-py3 - # - INSTANCE: ubuntu-ubuntu-1804-develop-py3 - # - INSTANCE: redhat-centos-7-develop-py3 - # - INSTANCE: redhat-fedora-30-develop-py3 - # - INSTANCE: suse-opensuse-leap-15-develop-py3 - # - INSTANCE: redhat-amazonlinux-2-develop-py2 - # - INSTANCE: debian-debian-9-2019-2-py3 - - INSTANCE: ubuntu-ubuntu-1804-2019-2-py3 - # - INSTANCE: redhat-centos-7-2019-2-py3 - # - INSTANCE: redhat-fedora-30-2019-2-py3 - # - INSTANCE: suse-opensuse-leap-15-2019-2-py3 - - INSTANCE: redhat-amazonlinux-2-2019-2-py2 - # - INSTANCE: debian-debian-9-2018-3-py2 - # - INSTANCE: ubuntu-ubuntu-1604-2018-3-py2 - # - INSTANCE: redhat-centos-7-2018-3-py2 - - INSTANCE: redhat-fedora-29-2018-3-py2 - - INSTANCE: suse-opensuse-leap-15-2018-3-py2 - # - INSTANCE: redhat-amazonlinux-2-2018-3-py2 - # - INSTANCE: debian-debian-8-2017-7-py2 - # - INSTANCE: ubuntu-ubuntu-1604-2017-7-py2 - - INSTANCE: redhat-centos-6-2017-7-py2 - # - INSTANCE: redhat-fedora-29-2017-7-py2 - # - INSTANCE: suse-opensuse-leap-15-2017-7-py2 - # - INSTANCE: redhat-amazonlinux-2-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 @@ -63,10 +46,52 @@ 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=debian-debian-10-develop-py3 + # - env: INSTANCE=ubuntu-ubuntu-1804-develop-py3 + # - env: INSTANCE=redhat-centos-7-develop-py3 + # - env: INSTANCE=redhat-fedora-30-develop-py3 + # - env: INSTANCE=suse-opensuse-leap-15-develop-py3 + # - env: INSTANCE=redhat-amazonlinux-2-develop-py2 + # - env: INSTANCE=debian-debian-9-2019-2-py3 + - env: INSTANCE=ubuntu-ubuntu-1804-2019-2-py3 + # - env: INSTANCE=redhat-centos-7-2019-2-py3 + # - env: INSTANCE=redhat-fedora-30-2019-2-py3 + # - env: INSTANCE=suse-opensuse-leap-15-2019-2-py3 + - env: INSTANCE=redhat-amazonlinux-2-2019-2-py2 + # - env: INSTANCE=debian-debian-9-2018-3-py2 + # - env: INSTANCE=ubuntu-ubuntu-1604-2018-3-py2 + # - env: INSTANCE=redhat-centos-7-2018-3-py2 + - env: INSTANCE=redhat-fedora-29-2018-3-py2 + - env: INSTANCE=suse-opensuse-leap-15-2018-3-py2 + # - env: INSTANCE=redhat-amazonlinux-2-2018-3-py2 + # - env: INSTANCE=debian-debian-8-2017-7-py2 + # - env: INSTANCE=ubuntu-ubuntu-1604-2017-7-py2 + - env: INSTANCE=redhat-centos-6-2017-7-py2 + # - env: INSTANCE=redhat-fedora-29-2017-7-py2 + # - env: INSTANCE=suse-opensuse-leap-15-2017-7-py2 + # - env: INSTANCE=redhat-amazonlinux-2-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` diff --git a/.yamllint b/.yamllint index c16f39b..740beca 100644 --- a/.yamllint +++ b/.yamllint @@ -17,6 +17,7 @@ yaml-files: # Default settings - '*.yaml' - '*.yml' + - .salt-lint - .yamllint # SaltStack Formulas additional settings - '*.example' diff --git a/Gemfile b/Gemfile index 3b36de3..5a232b6 100644 --- a/Gemfile +++ b/Gemfile @@ -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' diff --git a/bin/kitchen b/bin/kitchen index 1cd44f3..dcfdb4c 100755 --- a/bin/kitchen +++ b/bin/kitchen @@ -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') diff --git a/php/composer.sls b/php/composer.sls index 2b61c6f..9640537 100644 --- a/php/composer.sls +++ b/php/composer.sls @@ -24,7 +24,7 @@ include: get-composer: file.managed: - name: {{ php.lookup.pkgs.temp_dir }}/installer - - mode: 0755 + - mode: '0755' - unless: test -f {{ install_file }} - source: https://getcomposer.org/installer - source_hash: https://composer.github.io/installer.sig diff --git a/php/hhvm/repo.sls b/php/hhvm/repo.sls index 84c2b61..bea7f7f 100644 --- a/php/hhvm/repo.sls +++ b/php/hhvm/repo.sls @@ -9,7 +9,7 @@ include: hhvm_repo: pkgrepo.managed: - - name: deb http://dl.hhvm.com/{{ salt['grains.get']('os')|lower }} {{ salt['grains.get']('oscodename')}} main + - name: deb http://dl.hhvm.com/{{ salt['grains.get']('os')|lower }} {{ salt['grains.get']('oscodename') }} main - file: /etc/apt/sources.list.d/hhvm.list - keyid: 0x5a16e7281be7a449 - keyserver: keyserver.ubuntu.com diff --git a/php/map.jinja b/php/map.jinja index 0b4cb18..fa5a068 100644 --- a/php/map.jinja +++ b/php/map.jinja @@ -22,7 +22,17 @@ 'apc': 'php-apcu', 'apcu': 'php-apcu-bc', 'bcmath': 'php' + php_version + '-bcmath', - 'build_pkgs': ['libssl-dev', 'libcurl4-openssl-dev', 'pkg-config', 'libsslcommon2-dev', 'gcc', 'make', 'autoconf', 'libc-dev', 'pkg-config'], + 'build_pkgs': [ + 'libssl-dev', + 'libcurl4-openssl-dev', + 'pkg-config', + 'libsslcommon2-dev', + 'gcc', + 'make', + 'autoconf', + 'libc-dev', + 'pkg-config', + ], 'bz2': 'php' + php_version + '-bz2', 'cache-lite': 'php-cache-lite', 'cgi': 'php' + php_version + '-cgi', @@ -188,9 +198,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -517,9 +546,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -893,9 +941,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -1267,9 +1334,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -1641,9 +1727,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -2032,9 +2137,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off', @@ -2203,7 +2327,17 @@ 'apcu': 'php-apcu-bc', 'bcmath': 'php' + php_version + '-bcmath', 'bz2': 'php' + php_version + '-bz2', - 'build_pkgs': ['libssl-dev', 'libcurl4-openssl-dev', 'pkg-config', 'libsslcommon2-dev', 'gcc', 'make', 'autoconf', 'libc-dev', 'pkg-config'], + 'build_pkgs': [ + 'libssl-dev', + 'libcurl4-openssl-dev', + 'pkg-config', + 'libsslcommon2-dev', + 'gcc', + 'make', + 'autoconf', + 'libc-dev', + 'pkg-config', + ], 'cache-lite': 'php-cache-lite', 'cgi': 'php' + php_version + '-cgi', 'cli': 'php' + php_version + '-cli', @@ -2372,9 +2506,28 @@ 'auto_globals_jit': 'On', 'default_mimetype': '"text/html"', 'default_socket_timeout': 60, - 'disable_functions': ['pcntl_alarm','pcntl_fork','pcntl_waitpid','pcntl_wait','pcntl_wifexited','pcntl_wifstopped','pcntl_wifsignaled', - 'pcntl_wexitstatus','pcntl_wtermsig','pcntl_wstopsig','pcntl_signal','pcntl_signal_dispatch','pcntl_get_last_error','pcntl_strerror', - 'pcntl_sigprocmask','pcntl_sigwaitinfo','pcntl_sigtimedwait','pcntl_exec','pcntl_getpriority','pcntl_setpriority'], + 'disable_functions': [ + 'pcntl_alarm', + 'pcntl_fork', + 'pcntl_waitpid', + 'pcntl_wait', + 'pcntl_wifexited', + 'pcntl_wifstopped', + 'pcntl_wifsignaled', + 'pcntl_wexitstatus', + 'pcntl_wtermsig', + 'pcntl_wstopsig', + 'pcntl_signal', + 'pcntl_signal_dispatch', + 'pcntl_get_last_error', + 'pcntl_strerror', + 'pcntl_sigprocmask', + 'pcntl_sigwaitinfo', + 'pcntl_sigtimedwait', + 'pcntl_exec', + 'pcntl_getpriority', + 'pcntl_setpriority', + ], 'display_errors': 'Off', 'display_startup_errors': 'Off', 'enable_dl': 'Off',