Skip to content

Commit 4f0c67b

Browse files
committed
ci: merge travis matrix, add salt-lint & rubocop to lint job
* Semi-automated using myii/ssf-formula#60
1 parent 49a2c62 commit 4f0c67b

File tree

6 files changed

+139
-86
lines changed

6 files changed

+139
-86
lines changed

.rubocop.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=yaml
3+
---
4+
# General overrides used across formulas in the org
5+
Metrics/LineLength:
6+
# Increase from default of `80`
7+
# Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`)
8+
Max: 88
9+
10+
# Any offenses that should be fixed, e.g. collected via. `rubocop --auto-gen-config`

.salt-lint

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=yaml
3+
---
4+
exclude_paths: []
5+
skip_list:
6+
# Using `salt-lint` for linting other files as well, such as Jinja macros/templates
7+
- 205 # Use ".sls" as a Salt State file extension
8+
# Skipping `207` and `208` because `210` is sufficient, at least for the time-being
9+
# I.e. Allows 3-digit unquoted codes to still be used, such as `644` and `755`
10+
- 207 # File modes should always be encapsulated in quotation marks
11+
- 208 # File modes should always contain a leading zero
12+
tags: []
13+
verbosity: 1

.travis.yml

Lines changed: 99 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,43 @@
11
# -*- coding: utf-8 -*-
22
# vim: ft=yaml
33
---
4+
## Machine config
45
dist: bionic
5-
stages:
6-
- test
7-
- lint
8-
- name: release
9-
if: branch = master AND type != pull_request
10-
116
sudo: required
12-
cache: bundler
13-
language: ruby
14-
157
services:
168
- docker
179

18-
# Make sure the instances listed below match up with
19-
# the `platforms` defined in `kitchen.yml`
20-
env:
21-
matrix:
22-
- INSTANCE: default-debian-10-develop-py3
23-
# - INSTANCE: tables-debian-10-develop-py3
24-
# - INSTANCE: default-ubuntu-1804-develop-py3
25-
# - INSTANCE: tables-ubuntu-1804-develop-py3
26-
# - INSTANCE: default-centos-7-develop-py3
27-
# - INSTANCE: tables-centos-7-develop-py3
28-
# - INSTANCE: default-fedora-30-develop-py3
29-
# - INSTANCE: tables-fedora-30-develop-py3
30-
# - INSTANCE: default-opensuse-leap-15-develop-py3
31-
# - INSTANCE: tables-opensuse-leap-15-develop-py3
32-
# - INSTANCE: default-amazonlinux-2-develop-py2
33-
# - INSTANCE: tables-amazonlinux-2-develop-py2
34-
# - INSTANCE: default-arch-base-latest-develop-py2
35-
# - INSTANCE: tables-arch-base-latest-develop-py2
36-
# - INSTANCE: default-debian-9-2019-2-py3
37-
# - INSTANCE: tables-debian-9-2019-2-py3
38-
- INSTANCE: default-ubuntu-1804-2019-2-py3
39-
# - INSTANCE: tables-ubuntu-1804-2019-2-py3
40-
# - INSTANCE: default-centos-7-2019-2-py3
41-
# - INSTANCE: tables-centos-7-2019-2-py3
42-
# - INSTANCE: default-fedora-30-2019-2-py3
43-
# - INSTANCE: tables-fedora-30-2019-2-py3
44-
# - INSTANCE: default-opensuse-leap-15-2019-2-py3
45-
# - INSTANCE: tables-opensuse-leap-15-2019-2-py3
46-
- INSTANCE: default-amazonlinux-2-2019-2-py2
47-
# - INSTANCE: tables-amazonlinux-2-2019-2-py2
48-
- INSTANCE: default-arch-base-latest-2019-2-py2
49-
# - INSTANCE: tables-arch-base-latest-2019-2-py2
50-
# - INSTANCE: default-debian-9-2018-3-py2
51-
# - INSTANCE: tables-debian-9-2018-3-py2
52-
# - INSTANCE: default-ubuntu-1604-2018-3-py2
53-
# - INSTANCE: tables-ubuntu-1604-2018-3-py2
54-
- INSTANCE: default-centos-7-2018-3-py2
55-
# - INSTANCE: tables-centos-7-2018-3-py2
56-
- INSTANCE: default-fedora-29-2018-3-py2
57-
# - INSTANCE: tables-fedora-29-2018-3-py2
58-
# - INSTANCE: default-opensuse-leap-15-2018-3-py2
59-
# - INSTANCE: tables-opensuse-leap-15-2018-3-py2
60-
# - INSTANCE: default-amazonlinux-2-2018-3-py2
61-
# - INSTANCE: tables-amazonlinux-2-2018-3-py2
62-
# - INSTANCE: default-arch-base-latest-2018-3-py2
63-
# - INSTANCE: tables-arch-base-latest-2018-3-py2
64-
# - INSTANCE: default-debian-8-2017-7-py2
65-
# - INSTANCE: tables-debian-8-2017-7-py2
66-
# - INSTANCE: default-ubuntu-1604-2017-7-py2
67-
# - INSTANCE: tables-ubuntu-1604-2017-7-py2
68-
# - INSTANCE: default-centos-6-2017-7-py2
69-
# - INSTANCE: tables-centos-6-2017-7-py2
70-
# - INSTANCE: default-fedora-29-2017-7-py2
71-
# - INSTANCE: tables-fedora-29-2017-7-py2
72-
# - INSTANCE: default-opensuse-leap-15-2017-7-py2
73-
- INSTANCE: tables-opensuse-leap-15-2017-7-py2
74-
# - INSTANCE: default-amazonlinux-2-2017-7-py2
75-
# - INSTANCE: tables-amazonlinux-2-2017-7-py2
76-
# - INSTANCE: default-arch-base-latest-2017-7-py2
77-
# - INSTANCE: tables-arch-base-latest-2017-7-py2
10+
## Language and cache config
11+
language: ruby
12+
cache: bundler
7813

14+
## Script to run for the test stage
7915
script:
80-
- bin/kitchen verify ${INSTANCE}
16+
- bin/kitchen verify "${INSTANCE}"
8117

18+
## Stages and jobs matrix
19+
stages:
20+
- test
21+
- name: release
22+
if: branch = master AND type != pull_request
8223
jobs:
24+
allow_failures:
25+
- env: Lint_rubocop
26+
fast_finish: true
8327
include:
84-
# Define the `lint` stage (runs `yamllint` and `commitlint`)
85-
- stage: lint
86-
language: node_js
28+
## Define the test stage that runs the linters (and testing matrix, if applicable)
29+
30+
# Run all of the linters in a single job (except `rubocop`)
31+
- language: node_js
8732
node_js: lts/*
33+
env: Lint
34+
name: 'Lint: salt-lint, yamllint & commitlint'
8835
before_install: skip
8936
script:
37+
# Install and run `salt-lint`
38+
- pip install --user salt-lint
39+
- git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$'
40+
| xargs -I {} salt-lint {}
9041
# Install and run `yamllint`
9142
# Need at least `v1.17.0` for the `yaml-files` setting
9243
- pip install --user yamllint>=1.17.0
@@ -95,10 +46,84 @@ jobs:
9546
- npm install @commitlint/config-conventional -D
9647
- npm install @commitlint/travis-cli -D
9748
- commitlint-travis
98-
# Define the release stage that runs `semantic-release`
49+
# Run the `rubocop` linter in a separate job that is allowed to fail
50+
# Once these lint errors are fixed, this can be merged into a single job
51+
- language: node_js
52+
node_js: lts/*
53+
env: Lint_rubocop
54+
name: 'Lint: rubocop'
55+
before_install: skip
56+
script:
57+
# Install and run `rubocop`
58+
- gem install rubocop
59+
- rubocop -d
60+
61+
## Define the rest of the matrix based on Kitchen testing
62+
# Make sure the instances listed below match up with
63+
# the `platforms` defined in `kitchen.yml`
64+
- env: INSTANCE=default-debian-10-develop-py3
65+
# - env: INSTANCE=tables-debian-10-develop-py3
66+
# - env: INSTANCE=default-ubuntu-1804-develop-py3
67+
# - env: INSTANCE=tables-ubuntu-1804-develop-py3
68+
# - env: INSTANCE=default-centos-7-develop-py3
69+
# - env: INSTANCE=tables-centos-7-develop-py3
70+
# - env: INSTANCE=default-fedora-30-develop-py3
71+
# - env: INSTANCE=tables-fedora-30-develop-py3
72+
# - env: INSTANCE=default-opensuse-leap-15-develop-py3
73+
# - env: INSTANCE=tables-opensuse-leap-15-develop-py3
74+
# - env: INSTANCE=default-amazonlinux-2-develop-py2
75+
# - env: INSTANCE=tables-amazonlinux-2-develop-py2
76+
# - env: INSTANCE=default-arch-base-latest-develop-py2
77+
# - env: INSTANCE=tables-arch-base-latest-develop-py2
78+
# - env: INSTANCE=default-debian-9-2019-2-py3
79+
# - env: INSTANCE=tables-debian-9-2019-2-py3
80+
- env: INSTANCE=default-ubuntu-1804-2019-2-py3
81+
# - env: INSTANCE=tables-ubuntu-1804-2019-2-py3
82+
# - env: INSTANCE=default-centos-7-2019-2-py3
83+
# - env: INSTANCE=tables-centos-7-2019-2-py3
84+
# - env: INSTANCE=default-fedora-30-2019-2-py3
85+
# - env: INSTANCE=tables-fedora-30-2019-2-py3
86+
# - env: INSTANCE=default-opensuse-leap-15-2019-2-py3
87+
# - env: INSTANCE=tables-opensuse-leap-15-2019-2-py3
88+
- env: INSTANCE=default-amazonlinux-2-2019-2-py2
89+
# - env: INSTANCE=tables-amazonlinux-2-2019-2-py2
90+
- env: INSTANCE=default-arch-base-latest-2019-2-py2
91+
# - env: INSTANCE=tables-arch-base-latest-2019-2-py2
92+
# - env: INSTANCE=default-debian-9-2018-3-py2
93+
# - env: INSTANCE=tables-debian-9-2018-3-py2
94+
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
95+
# - env: INSTANCE=tables-ubuntu-1604-2018-3-py2
96+
- env: INSTANCE=default-centos-7-2018-3-py2
97+
# - env: INSTANCE=tables-centos-7-2018-3-py2
98+
- env: INSTANCE=default-fedora-29-2018-3-py2
99+
# - env: INSTANCE=tables-fedora-29-2018-3-py2
100+
# - env: INSTANCE=default-opensuse-leap-15-2018-3-py2
101+
# - env: INSTANCE=tables-opensuse-leap-15-2018-3-py2
102+
# - env: INSTANCE=default-amazonlinux-2-2018-3-py2
103+
# - env: INSTANCE=tables-amazonlinux-2-2018-3-py2
104+
# - env: INSTANCE=default-arch-base-latest-2018-3-py2
105+
# - env: INSTANCE=tables-arch-base-latest-2018-3-py2
106+
# - env: INSTANCE=default-debian-8-2017-7-py2
107+
# - env: INSTANCE=tables-debian-8-2017-7-py2
108+
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2
109+
# - env: INSTANCE=tables-ubuntu-1604-2017-7-py2
110+
# - env: INSTANCE=default-centos-6-2017-7-py2
111+
# - env: INSTANCE=tables-centos-6-2017-7-py2
112+
# - env: INSTANCE=default-fedora-29-2017-7-py2
113+
# - env: INSTANCE=tables-fedora-29-2017-7-py2
114+
# - env: INSTANCE=default-opensuse-leap-15-2017-7-py2
115+
- env: INSTANCE=tables-opensuse-leap-15-2017-7-py2
116+
# - env: INSTANCE=default-amazonlinux-2-2017-7-py2
117+
# - env: INSTANCE=tables-amazonlinux-2-2017-7-py2
118+
# - env: INSTANCE=default-arch-base-latest-2017-7-py2
119+
# - env: INSTANCE=tables-arch-base-latest-2017-7-py2
120+
121+
## Define the release stage that runs `semantic-release`
99122
- stage: release
100123
language: node_js
101124
node_js: lts/*
125+
env: Release
126+
name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA'
102127
before_install: skip
103128
script:
104129
# Update `AUTHORS.md`

.yamllint

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ yaml-files:
1717
# Default settings
1818
- '*.yaml'
1919
- '*.yml'
20+
- .salt-lint
2021
- .yamllint
2122
# SaltStack Formulas additional settings
2223
- '*.example'

Gemfile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
source "https://rubygems.org"
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
24

35
gem 'kitchen-docker', '>= 2.9'
4-
gem 'kitchen-salt', '>= 0.6.0'
56
gem 'kitchen-inspec', '>= 1.1'
6-
7+
gem 'kitchen-salt', '>= 0.6.0'

bin/kitchen

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,25 @@
88
# this file is here to facilitate running it.
99
#
1010

11-
require "pathname"
12-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13-
Pathname.new(__FILE__).realpath)
11+
require 'pathname'
12+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13+
Pathname.new(__FILE__).realpath)
1414

15-
bundle_binstub = File.expand_path("../bundle", __FILE__)
15+
bundle_binstub = File.expand_path('bundle', __dir__)
1616

1717
if File.file?(bundle_binstub)
1818
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
1919
load(bundle_binstub)
2020
else
21-
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22-
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21+
abort(
22+
'Your `bin/bundle` was not generated by Bundler, '\
23+
'so this binstub cannot run. Replace `bin/bundle` by running '\
24+
'`bundle binstubs bundler --force`, then run this command again.'
25+
)
2326
end
2427
end
2528

26-
require "rubygems"
27-
require "bundler/setup"
29+
require 'rubygems'
30+
require 'bundler/setup'
2831

29-
load Gem.bin_path("test-kitchen", "kitchen")
32+
load Gem.bin_path('test-kitchen', 'kitchen')

0 commit comments

Comments
 (0)