Skip to content

Commit 8e1596a

Browse files
authored
Merge pull request #30 from myii/ci/merge-matrix-and-add-salt-lint-and-rubocop
ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` job
2 parents 0256d3c + 9f4f588 commit 8e1596a

File tree

7 files changed

+116
-63
lines changed

7 files changed

+116
-63
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: 71 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +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: 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+
# 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 {}
6241
# Install and run `yamllint`
6342
# Need at least `v1.17.0` for the `yaml-files` setting
6443
- pip install --user yamllint>=1.17.0
@@ -67,10 +46,56 @@ jobs:
6746
- npm install @commitlint/config-conventional -D
6847
- npm install @commitlint/travis-cli -D
6948
- commitlint-travis
70-
# 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=default-ubuntu-1804-develop-py3
66+
# - env: INSTANCE=default-centos-7-develop-py3
67+
# - env: INSTANCE=default-fedora-30-develop-py3
68+
# - env: INSTANCE=default-opensuse-leap-15-develop-py3
69+
# - env: INSTANCE=default-amazonlinux-2-develop-py2
70+
# - env: INSTANCE=default-arch-base-latest-develop-py2
71+
# - env: INSTANCE=default-debian-9-2019-2-py3
72+
- env: INSTANCE=default-ubuntu-1804-2019-2-py3
73+
# - env: INSTANCE=default-centos-7-2019-2-py3
74+
# - env: INSTANCE=default-fedora-30-2019-2-py3
75+
# - env: INSTANCE=default-opensuse-leap-15-2019-2-py3
76+
- env: INSTANCE=default-amazonlinux-2-2019-2-py2
77+
# - env: INSTANCE=default-arch-base-latest-2019-2-py2
78+
# - env: INSTANCE=default-debian-9-2018-3-py2
79+
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
80+
# - env: INSTANCE=default-centos-7-2018-3-py2
81+
- env: INSTANCE=default-fedora-29-2018-3-py2
82+
- env: INSTANCE=default-opensuse-leap-15-2018-3-py2
83+
# - env: INSTANCE=default-amazonlinux-2-2018-3-py2
84+
# - env: INSTANCE=default-arch-base-latest-2018-3-py2
85+
# - env: INSTANCE=default-debian-8-2017-7-py2
86+
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2
87+
- env: INSTANCE=default-centos-6-2017-7-py2
88+
# - env: INSTANCE=default-fedora-29-2017-7-py2
89+
# - env: INSTANCE=default-opensuse-leap-15-2017-7-py2
90+
# - env: INSTANCE=default-amazonlinux-2-2017-7-py2
91+
# - env: INSTANCE=default-arch-base-latest-2017-7-py2
92+
93+
## Define the release stage that runs `semantic-release`
7194
- stage: release
7295
language: node_js
7396
node_js: lts/*
97+
env: Release
98+
name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA'
7499
before_install: skip
75100
script:
76101
# 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')

influxdb/map.jinja

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{% import_yaml "influxdb/defaults.yaml" as defaults %}
22
{% import_yaml "influxdb/config_defaults.yaml" as config_defaults %}
33

4-
{##
4+
{#-
55
Setup variable using grains['os_family'] based logic, only add key:values here
66
that differ from whats in defaults.yaml
7-
##}
7+
#}
88

99
{% set os_family_map = salt['grains.filter_by']({
1010
'Debian': {},
@@ -15,23 +15,23 @@ that differ from whats in defaults.yaml
1515
merge=salt['pillar.get']('influxdb:lookup'))
1616
%}
1717

18-
{##
18+
{#-
1919
Use configuration defaults appropriate for the version of InfluxDB that is being
2020
installed unless the user explicitly requested to not use any default values in
2121
which case normal pillar merging behaviour will be used.
2222
2323
The formula supports different configuration file formats for each MAJOR.MINOR
2424
version of InfluxDB and will provide the configuration that ships with the
2525
latest release off that branch.
26-
##}
26+
#}
2727

2828
{% if not salt['pillar.get']('influxdb:no_conf_defaults', False) %}
2929
{% set influxdb_version = salt['pillar.get']('influxdb:version') %}
3030
{% set major, minor = influxdb_version.split('.')[:2] %}
3131
{% do defaults.influxdb.conf.update(config_defaults.get(major).get(minor)) %}
3232
{% endif %}
3333

34-
{## Merge the os_family_map into default settings ##}
34+
{#- Merge the os_family_map into default settings #}
3535
{% do defaults.influxdb.update(os_family_map) %}
3636

3737
{# Update settings defaults from pillar data #}

0 commit comments

Comments
 (0)