Skip to content

Commit 51fc6de

Browse files
authored
Merge pull request #18 from myii/ci/merge-matrix-and-add-salt-lint-and-rubocop
ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` job
2 parents 6c112af + 7b1b3c9 commit 51fc6de

10 files changed

Lines changed: 135 additions & 80 deletions

File tree

.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: 74 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,103 @@
11
# -*- coding: utf-8 -*-
22
# vim: ft=yaml
33
---
4+
## Machine config
45
dist: trusty
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: default-ubuntu-1804-develop-py3
24-
# - INSTANCE: default-centos-7-develop-py3
25-
# - INSTANCE: default-fedora-30-develop-py3
26-
# - INSTANCE: default-opensuse-leap-15-develop-py3
27-
# - INSTANCE: default-amazonlinux-2-develop-py2
28-
# - INSTANCE: default-arch-base-latest-develop-py2
29-
- INSTANCE: default-debian-9-2019-2-py3
30-
# - INSTANCE: default-ubuntu-1804-2019-2-py3
31-
- INSTANCE: default-centos-7-2019-2-py3
32-
# - INSTANCE: default-fedora-30-2019-2-py3
33-
# - INSTANCE: default-opensuse-leap-15-2019-2-py3
34-
# - INSTANCE: default-amazonlinux-2-2019-2-py2
35-
# - INSTANCE: default-arch-base-latest-2019-2-py2
36-
# - INSTANCE: default-debian-9-2018-3-py2
37-
# - INSTANCE: default-ubuntu-1604-2018-3-py2
38-
# - INSTANCE: default-centos-7-2018-3-py2
39-
- INSTANCE: default-fedora-29-2018-3-py2
40-
- INSTANCE: default-opensuse-leap-15-2018-3-py2
41-
# - INSTANCE: default-amazonlinux-2-2018-3-py2
42-
- INSTANCE: default-arch-base-latest-2018-3-py2
43-
# - INSTANCE: default-debian-8-2017-7-py2
44-
- INSTANCE: default-ubuntu-1604-2017-7-py2
45-
# - INSTANCE: default-centos-6-2017-7-py2
46-
# - INSTANCE: default-fedora-29-2017-7-py2
47-
# - INSTANCE: default-opensuse-leap-15-2017-7-py2
48-
# - INSTANCE: default-amazonlinux-2-2017-7-py2
49-
# - INSTANCE: default-arch-base-latest-2017-7-py2
10+
## Language and cache config
11+
language: ruby
12+
cache: bundler
5013

14+
## Script to run for the test stage
5115
script:
52-
- bin/kitchen verify ${INSTANCE}
16+
- bin/kitchen verify "${INSTANCE}"
5317

18+
## Stages and jobs matrix
19+
stages:
20+
- test
21+
- name: release
22+
if: branch = master AND type != pull_request
5423
jobs:
24+
allow_failures:
25+
- env: Lint_rubocop
26+
fast_finish: true
5527
include:
56-
# Define the `lint` stage (runs `yamllint` and `commitlint`)
57-
- stage: lint
58-
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
5932
node_js: lts/*
33+
env: Lint
34+
name: 'Lint: salt-lint, yamllint & commitlint'
6035
before_install: skip
6136
script:
37+
# Need to use `pip3` due to using `trusty` on Travis
38+
- sudo apt-get install python3-pip python3-setuptools python3-wheel -y
39+
# Install and run `salt-lint`
40+
- pip3 install --user salt-lint PyYAML==4.2b4
41+
- git ls-files | grep '\.sls$\|\.jinja$\|\.j2$\|\.tmpl$'
42+
| xargs -I {} salt-lint {}
6243
# Install and run `yamllint`
6344
# Need at least `v1.17.0` for the `yaml-files` setting
64-
- pip install --user yamllint>=1.17.0
45+
- pip3 install --user yamllint>=1.17.0
6546
- yamllint -s .
6647
# Install and run `commitlint`
6748
- npm install @commitlint/config-conventional -D
6849
- npm install @commitlint/travis-cli -D
6950
- commitlint-travis
70-
# Define the release stage that runs `semantic-release`
51+
# Run the `rubocop` linter in a separate job that is allowed to fail
52+
# Once these lint errors are fixed, this can be merged into a single job
53+
- language: node_js
54+
node_js: lts/*
55+
env: Lint_rubocop
56+
name: 'Lint: rubocop'
57+
before_install: skip
58+
script:
59+
# Install and run `rubocop`
60+
- gem install rubocop
61+
- rubocop -d
62+
63+
## Define the rest of the matrix based on Kitchen testing
64+
# Make sure the instances listed below match up with
65+
# the `platforms` defined in `kitchen.yml`
66+
# - env: INSTANCE=default-debian-10-develop-py3
67+
- env: INSTANCE=default-ubuntu-1804-develop-py3
68+
# - env: INSTANCE=default-centos-7-develop-py3
69+
# - env: INSTANCE=default-fedora-30-develop-py3
70+
# - env: INSTANCE=default-opensuse-leap-15-develop-py3
71+
# - env: INSTANCE=default-amazonlinux-2-develop-py2
72+
# - env: INSTANCE=default-arch-base-latest-develop-py2
73+
- env: INSTANCE=default-debian-9-2019-2-py3
74+
# - env: INSTANCE=default-ubuntu-1804-2019-2-py3
75+
- env: INSTANCE=default-centos-7-2019-2-py3
76+
# - env: INSTANCE=default-fedora-30-2019-2-py3
77+
# - env: INSTANCE=default-opensuse-leap-15-2019-2-py3
78+
# - env: INSTANCE=default-amazonlinux-2-2019-2-py2
79+
# - env: INSTANCE=default-arch-base-latest-2019-2-py2
80+
# - env: INSTANCE=default-debian-9-2018-3-py2
81+
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
82+
# - env: INSTANCE=default-centos-7-2018-3-py2
83+
- env: INSTANCE=default-fedora-29-2018-3-py2
84+
- env: INSTANCE=default-opensuse-leap-15-2018-3-py2
85+
# - env: INSTANCE=default-amazonlinux-2-2018-3-py2
86+
- env: INSTANCE=default-arch-base-latest-2018-3-py2
87+
# - env: INSTANCE=default-debian-8-2017-7-py2
88+
- env: INSTANCE=default-ubuntu-1604-2017-7-py2
89+
# - env: INSTANCE=default-centos-6-2017-7-py2
90+
# - env: INSTANCE=default-fedora-29-2017-7-py2
91+
# - env: INSTANCE=default-opensuse-leap-15-2017-7-py2
92+
# - env: INSTANCE=default-amazonlinux-2-2017-7-py2
93+
# - env: INSTANCE=default-arch-base-latest-2017-7-py2
94+
95+
## Define the release stage that runs `semantic-release`
7196
- stage: release
7297
language: node_js
7398
node_js: lts/*
99+
env: Release
100+
name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA'
74101
before_install: skip
75102
script:
76103
# 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')

ufw/config/applications.sls

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,22 @@ include:
2727
{%- set comment = app_details.get('comment', None) %}
2828
2929
{%- if from_addr is not none %}
30-
ufw-app-{{method}}-{{app_name}}-{{from_addr}}:
30+
ufw-app-{{ method }}-{{ app_name }}-{{ from_addr }}:
3131
{%- else %}
32-
ufw-app-{{method}}-{{app_name}}:
32+
ufw-app-{{ method }}-{{ app_name }}:
3333
{%- endif %}
34-
ufw.{{method}}:
35-
- app: '"{{app_name}}"'
34+
ufw.{{ method }}:
35+
- app: '"{{ app_name }}"'
3636
{%- if from_addr is not none %}
37-
- from_addr: {{from_addr}}
37+
- from_addr: {{ from_addr }}
3838
{%- endif %}
3939
{%- if to_addr is not none %}
40-
- to_addr: {{to_addr}}
40+
- to_addr: {{ to_addr }}
4141
{%- endif %}
4242
# Debian Jessie doesn't implement the **comment** directive
4343
# CentOS-6 throws an UTF-8 error
4444
{%- if comment is not none and salt['grains.get']('osfinger') != 'Debian-8' and salt['grains.get']('osfinger') != 'CentOS-6' %}
45-
- comment: '"{{comment}}"'
45+
- comment: '"{{ comment }}"'
4646
{%- endif %}
4747
- listen_in:
4848
- cmd: reload-ufw

ufw/config/interfaces.sls

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ include:
1717
{%- for interface_name, interface_details in ufw.get('interfaces', {}).items() %}
1818
{%- set comment = interface_details.get('comment', None) %}
1919
20-
ufw-interface-{{interface_name}}:
20+
ufw-interface-{{ interface_name }}:
2121
ufw.allowed:
22-
- interface: {{interface_name}}
22+
- interface: {{ interface_name }}
2323
{%- if comment is not none %}
24-
- comment: '"{{comment}}"'
24+
- comment: '"{{ comment }}"'
2525
{%- endif %}
2626
- listen_in:
2727
- cmd: reload-ufw

ufw/config/open.sls

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ include:
1717
{%- for open_addr, open_details in ufw.get('open', {}).items() %}
1818
{%- set comment = open_details.get('comment', None) %}
1919
20-
ufw-open-{{open_addr}}:
20+
ufw-open-{{ open_addr }}:
2121
ufw.allowed:
22-
- from_addr: {{open_addr}}
22+
- from_addr: {{ open_addr }}
2323
{%- if comment is not none %}
24-
- comment: '"{{comment}}"'
24+
- comment: '"{{ comment }}"'
2525
{%- endif %}
2626
- listen_in:
2727
- cmd: reload-ufw

ufw/config/services.sls

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,26 @@ include:
2929
{%- set to_port = service_details.get('to_port', service_name) %}
3030
{%- set comment = service_details.get('comment', None) %}
3131
32-
ufw-svc-{{method}}-{{service_name}}-{{from_addr}}:
33-
ufw.{{method}}:
32+
ufw-svc-{{ method }}-{{ service_name }}-{{ from_addr }}:
33+
ufw.{{ method }}:
3434
{%- if protocol is not none %}
35-
- protocol: {{protocol}}
35+
- protocol: {{ protocol }}
3636
{%- endif %}
3737
{%- if from_addr is not none %}
38-
- from_addr: {{from_addr}}
38+
- from_addr: {{ from_addr }}
3939
{%- endif %}
4040
{%- if from_port is not none %}
41-
- from_port: "{{from_port}}"
41+
- from_port: "{{ from_port }}"
4242
{%- endif %}
4343
{%- if to_addr is not none %}
44-
- to_addr: {{to_addr}}
44+
- to_addr: {{ to_addr }}
4545
{%- endif %}
4646
# Debian Jessie doesn't implement the **comment** directive
4747
# CentOS-6 throws an UTF-8 error
4848
{%- if comment is not none and salt['grains.get']('osfinger') != 'Debian-8' and salt['grains.get']('osfinger') != 'CentOS-6' %}
49-
- comment: '"{{comment}}"'
49+
- comment: '"{{ comment }}"'
5050
{%- endif %}
51-
- to_port: "{{to_port}}"
51+
- to_port: "{{ to_port }}"
5252
- listen_in:
5353
- cmd: reload-ufw
5454

0 commit comments

Comments
 (0)