Skip to content

Commit 609006a

Browse files
authored
Merge pull request #45 from myii/ci/merge-matrix-and-add-salt-lint-and-rubocop
ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` job
2 parents 869c344 + 4f0c67b commit 609006a

File tree

8 files changed

+158
-105
lines changed

8 files changed

+158
-105
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')

iptables/init.sls

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ iptables_packages:
2222
pkg.installed:
2323
- pkgs:
2424
{%- for pkg in packages %}
25-
- {{pkg}}
25+
- {{ pkg }}
2626
{%- endfor %}
2727
{%- endif %}
2828
2929
{%- if strict_mode %}
3030
# If the firewall is set to strict mode, we'll need to allow some
3131
# that always need access to anything
3232
{%- for protocol in protocols %}
33-
iptables_allow_localhost{{suffixes[protocol]}}:
33+
iptables_allow_localhost{{ suffixes[protocol] }}:
3434
iptables.append:
3535
- table: filter
3636
- chain: INPUT
@@ -44,7 +44,7 @@ iptables_allow_localhost{{suffixes[protocol]}}:
4444
- save: True
4545
4646
# Allow related/established sessions
47-
iptables_allow_established{{suffixes[protocol]}}:
47+
iptables_allow_established{{ suffixes[protocol] }}:
4848
iptables.append:
4949
- table: filter
5050
- chain: INPUT
@@ -57,7 +57,7 @@ iptables_allow_established{{suffixes[protocol]}}:
5757
- save: True
5858
5959
# Set the policy to deny everything unless defined
60-
enable_reject_policy{{suffixes[protocol]}}:
60+
enable_reject_policy{{ suffixes[protocol] }}:
6161
iptables.set_policy:
6262
- table: filter
6363
- chain: INPUT
@@ -66,8 +66,8 @@ enable_reject_policy{{suffixes[protocol]}}:
6666
- family: ipv6
6767
{%- endif %}
6868
- require:
69-
- iptables: iptables_allow_localhost{{suffixes[protocol]}}
70-
- iptables: iptables_allow_established{{suffixes[protocol]}}
69+
- iptables: iptables_allow_localhost{{ suffixes[protocol] }}
70+
- iptables: iptables_allow_established{{ suffixes[protocol] }}
7171
{%- endfor %}
7272
{%- endif %}
7373
@@ -88,7 +88,7 @@ enable_reject_policy{{suffixes[protocol]}}:
8888
{%- for ip in service_details.get('ips_allow', ['0.0.0.0/0']) %}
8989
{%- if interfaces == '' %}
9090
{%- for proto in protos %}
91-
iptables_{{service_name}}_allow_{{ip}}_{{proto}}{{suffixes[protocol]}}:
91+
iptables_{{ service_name }}_allow_{{ ip }}_{{ proto }}{{ suffixes[protocol] }}:
9292
iptables.insert:
9393
- position: 1
9494
- table: filter
@@ -106,7 +106,7 @@ iptables_{{service_name}}_allow_{{ip}}_{{proto}}{{suffixes[protocol]}}:
106106
{%- else %}
107107
{%- for interface in interfaces %}
108108
{%- for proto in protos %}
109-
iptables_{{service_name}}_allow_{{ip}}_{{proto}}_{{interface}}{{suffixes[protocol]}}:
109+
iptables_{{ service_name }}_allow_{{ ip }}_{{ proto }}_{{ interface }}{{ suffixes[protocol] }}:
110110
iptables.insert:
111111
- position: 1
112112
- table: filter
@@ -130,7 +130,7 @@ iptables_{{service_name}}_allow_{{ip}}_{{proto}}_{{interface}}{{suffixes[protoco
130130
# If strict mode is disabled we may want to block anything else
131131
{%- if interfaces == '' %}
132132
{%- for proto in protos %}
133-
iptables_{{service_name}}_deny_other_{{proto}}{{suffixes[protocol]}}:
133+
iptables_{{ service_name }}_deny_other_{{ proto }}{{ suffixes[protocol] }}:
134134
iptables.append:
135135
- position: last
136136
- table: filter
@@ -147,7 +147,7 @@ iptables_{{service_name}}_deny_other_{{proto}}{{suffixes[protocol]}}:
147147
{%- else %}
148148
{%- for interface in interfaces %}
149149
{%- for proto in protos %}
150-
iptables_{{service_name}}_deny_other_{{proto}}_{{interface}}{{suffixes[protocol]}}:
150+
iptables_{{ service_name }}_deny_other_{{ proto }}_{{ interface }}{{ suffixes[protocol] }}:
151151
iptables.append:
152152
- position: last
153153
- table: filter
@@ -172,7 +172,7 @@ iptables_{{service_name}}_deny_other_{{proto}}_{{interface}}{{suffixes[protocol]
172172
{%- for service_name, service_details in firewall.get('nat', {}).items() %}
173173
{%- for ip_s, ip_ds in service_details.get('rules', {}).items() %}
174174
{%- for ip_d in ip_ds %}
175-
iptables_{{service_name}}_allow_{{ip_s}}_{{ip_d}}:
175+
iptables_{{ service_name }}_allow_{{ ip_s }}_{{ ip_d }}:
176176
iptables.append:
177177
- table: nat
178178
- chain: POSTROUTING
@@ -189,7 +189,7 @@ iptables_{{service_name}}_allow_{{ip_s}}_{{ip_d}}:
189189
{%- for protocol in protocols %}
190190
{%- for service_name, service_details in firewall.get('whitelist' + suffixes[protocol], {}).items() %}
191191
{%- for ip in service_details.get('ips_allow', []) %}
192-
iptables_{{service_name}}_allow_{{ip}}{{suffixes[protocol]}}:
192+
iptables_{{ service_name }}_allow_{{ ip }}{{ suffixes[protocol] }}:
193193
iptables.append:
194194
- table: filter
195195
- chain: INPUT

0 commit comments

Comments
 (0)