Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ci: merge travis matrix, add salt-lint & rubocop to lint job #58

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# -*- 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`
Metrics/BlockLength:
Max: 55
13 changes: 13 additions & 0 deletions .salt-lint
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
exclude_paths: []
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
66 changes: 40 additions & 26 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,56 +1,70 @@
# -*- 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: repositories-debian-10-develop-py3
# - INSTANCE: preferences-debian-10-develop-py3
# - INSTANCE: repositories-ubuntu-1804-develop-py3
# - INSTANCE: preferences-ubuntu-1804-develop-py3
- INSTANCE: repositories-debian-9-2019-2-py3
- INSTANCE: preferences-debian-9-2019-2-py3
- INSTANCE: repositories-ubuntu-1804-2019-2-py3
- INSTANCE: preferences-ubuntu-1804-2019-2-py3
## 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:
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
- language: node_js
node_js: lts/*
env: Lint
name: 'Lint: salt-lint, yamllint, rubocop & 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
- yamllint -s .
# Install and run `rubocop`
- gem install rubocop
- rubocop -d
# Install and run `commitlint`
- npm install @commitlint/config-conventional -D
- npm install @commitlint/travis-cli -D
- commitlint-travis
# Define the release stage that runs `semantic-release`

## 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=repositories-debian-10-develop-py3
# - env: INSTANCE=preferences-debian-10-develop-py3
# - env: INSTANCE=repositories-ubuntu-1804-develop-py3
# - env: INSTANCE=preferences-ubuntu-1804-develop-py3
- env: INSTANCE=repositories-debian-9-2019-2-py3
- env: INSTANCE=preferences-debian-9-2019-2-py3
- env: INSTANCE=repositories-ubuntu-1804-2019-2-py3
- env: INSTANCE=preferences-ubuntu-1804-2019-2-py3

## 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`
Expand Down
1 change: 1 addition & 0 deletions .yamllint
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ yaml-files:
# Default settings
- '*.yaml'
- '*.yml'
- .salt-lint
- .yamllint
# SaltStack Formulas additional settings
- '*.example'
Expand Down
7 changes: 4 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -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'
21 changes: 12 additions & 9 deletions bin/kitchen
Original file line number Diff line number Diff line change
Expand Up @@ -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')
26 changes: 22 additions & 4 deletions test/integration/preferences/controls/preferences_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

control 'Apt preferences' do
title 'should be configured'

Expand All @@ -18,30 +20,46 @@
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match("Package: rspamd\nPin: origin rspamd.com\nPin-Priority: 650\n") }
its(:content) do
should match(
"Package: rspamd\nPin: origin rspamd.com\nPin-Priority: 650\n"
)
end
end

describe file('/etc/apt/preferences.d/01-all') do
it { should exist }
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match("Package: *\nPin: release stable\nPin-Priority: 610\n") }
its(:content) do
should match(
"Package: *\nPin: release stable\nPin-Priority: 610\n"
)
end
end

describe file('/etc/apt/preferences.d/02-all') do
it { should exist }
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match("Package: *\nPin: release testing\nPin-Priority: 600\n") }
its(:content) do
should match(
"Package: *\nPin: release testing\nPin-Priority: 600\n"
)
end
end

describe file('/etc/apt/preferences.d/03-all') do
it { should exist }
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match("Package: *\nPin: release unstable\nPin-Priority: 50\n") }
its(:content) do
should match(
"Package: *\nPin: release unstable\nPin-Priority: 50\n"
)
end
end
end
24 changes: 17 additions & 7 deletions test/integration/repositories/controls/repositories_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# frozen_string_literal: true

control 'Apt repositories' do
title 'should be configured'

if os[:name] == 'ubuntu'
keyring_package = 'ubuntu-keyring'
else
keyring_package = 'debian-archive-keyring'
end
keyring_package = if os[:name] == 'ubuntu'
'ubuntu-keyring'
else
'debian-archive-keyring'
end

describe package(keyring_package) do
it { should be_installed }
Expand All @@ -28,14 +30,22 @@
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match(%r{deb \[arch=amd64\] http://repository.spotify.com stable non-free}) }
its(:content) do
should match(
%r{deb \[arch=amd64\] http://repository.spotify.com stable non-free}
)
end
end

describe file('/etc/apt/sources.list.d/heroku-binary.list') do
it { should exist }
it { should be_owned_by 'root' }
it { should be_grouped_into 'root' }
its('mode') { should cmp '0644' }
its(:content) { should match(%r{deb \[arch=amd64\] https://cli-assets.heroku.com/apt ./}) }
its(:content) do
should match(
%r{deb \[arch=amd64\] https://cli-assets.heroku.com/apt ./}
)
end
end
end