* Use latest pre-salted images * Move from serverspec to inspec * Fix failing teststags/v0.8.1
--- | |||||
driver: | |||||
name: vagrant | |||||
platforms: | |||||
- name: debian-jessie64 | |||||
driver_config: | |||||
box: ssplatt/salt-deb-8 | |||||
provisioner: | |||||
name: salt_solo | |||||
salt_version: 2015.8.8 | |||||
data_path: test/shared | |||||
is_file_root: true | |||||
pillars-from-files: | |||||
apt.sls: pillar.example | |||||
pillars: | |||||
top.sls: | |||||
base: | |||||
'*': | |||||
- apt | |||||
grains: | |||||
os_family: Debian | |||||
suites: | |||||
- name: repositories | |||||
provisioner: | |||||
state_top: | |||||
base: | |||||
'*': | |||||
- apt.repositories | |||||
- apt.update | |||||
- name: preferences | |||||
provisioner: | |||||
state_top: | |||||
base: | |||||
'*': | |||||
- apt.preferences |
stages: | |||||
- test | |||||
- commitlint | |||||
- 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` | |||||
# NOTE: Please try to select up to six instances that add some meaningful | |||||
# testing of the formula's behaviour. If possible, try to refrain from | |||||
# the classical "chosing all the instances because I want to test on | |||||
# another/all distro/s" trap: it will just add time to the testing (see | |||||
# the discussion on #121). As an example, the set chosen below covers | |||||
# the most used distros families, systemd and non-systemd and the latest | |||||
# three supported Saltstack versions with python2 and 3." | |||||
# As for `kitchen.yml`, that should still contain all of the platforms, | |||||
# to allow for comprehensive local testing | |||||
# Ref: https://github.com/saltstack-formulas/template-formula/issues/118 | |||||
# Ref: https://github.com/saltstack-formulas/template-formula/issues/121 | |||||
env: | |||||
matrix: | |||||
- INSTANCE: repositories-debian-9-2019-2-py3 | |||||
- INSTANCE: repositories-ubuntu-1804-2019-2-py3 | |||||
- INSTANCE: preferences-debian-9-2019-2-py3 | |||||
- INSTANCE: preferences-ubuntu-1804-2019-2-py3 | |||||
script: | |||||
- bundle exec kitchen verify ${INSTANCE} | |||||
jobs: | |||||
include: | |||||
# Define the commitlint stage | |||||
- stage: commitlint | |||||
language: node_js | |||||
node_js: lts/* | |||||
before_install: skip | |||||
script: | |||||
- npm install @commitlint/config-conventional -D | |||||
- npm install @commitlint/travis-cli -D | |||||
- commitlint-travis | |||||
# Define the release stage that runs semantic-release | |||||
- stage: release | |||||
language: node_js | |||||
node_js: lts/* | |||||
before_install: skip | |||||
script: | |||||
# Update `AUTHORS.md` | |||||
- export MAINTAINER_TOKEN=${GH_TOKEN} | |||||
- go get github.com/myii/maintainer | |||||
- maintainer contributor | |||||
# Install all dependencies required for `semantic-release` | |||||
- npm install @semantic-release/changelog@3 -D | |||||
- npm install @semantic-release/exec@3 -D | |||||
- npm install @semantic-release/git@7 -D | |||||
deploy: | |||||
provider: script | |||||
skip_cleanup: true | |||||
script: | |||||
# Run `semantic-release` | |||||
- npx semantic-release@15 |
source "https://rubygems.org" | |||||
gem 'kitchen-docker', '>= 2.9' | |||||
gem 'kitchen-salt', '>= 0.6.0' | |||||
gem 'kitchen-inspec', '>= 1.1' | |||||
# -*- coding: utf-8 -*- | |||||
# vim: ft=yaml | |||||
--- | |||||
# For help on this file's format, see https://kitchen.ci/ | |||||
driver: | |||||
name: docker | |||||
use_sudo: false | |||||
privileged: true | |||||
run_command: /lib/systemd/systemd | |||||
# Make sure the platforms listed below match up with | |||||
# the `env.matrix` instances defined in `.travis.yml` | |||||
platforms: | |||||
- name: debian-9-2019-2-py3 | |||||
driver: | |||||
image: netmanagers/salt-2019.2-py3:debian-9 | |||||
- name: ubuntu-1804-2019-2-py3 | |||||
driver: | |||||
image: netmanagers/salt-2019.2-py3:ubuntu-18.04 | |||||
provisioner: | |||||
name: salt_solo | |||||
log_level: info | |||||
salt_install: none | |||||
require_chef: false | |||||
formula: apt | |||||
salt_copy_filter: | |||||
- .kitchen | |||||
- .git | |||||
pillars: | |||||
top.sls: | |||||
base: | |||||
'*': | |||||
- apt | |||||
verifier: | |||||
# https://www.inspec.io/ | |||||
name: inspec | |||||
sudo: true | |||||
# cli, documentation, html, progress, json, json-min, json-rspec, junit | |||||
reporter: | |||||
- cli | |||||
suites: | |||||
- name: repositories | |||||
provisioner: | |||||
state_top: | |||||
base: | |||||
'*': | |||||
- apt.repositories | |||||
- apt.update | |||||
pillars_from_files: | |||||
apt.sls: test/salt/pillar/repositories.pillar.sls | |||||
verifier: | |||||
inspec_tests: | |||||
- path: test/integration/repositories | |||||
- name: preferences | |||||
provisioner: | |||||
state_top: | |||||
base: | |||||
'*': | |||||
- apt.preferences | |||||
pillars_from_files: | |||||
apt.sls: test/salt/pillar/preferences.pillar.sls | |||||
verifier: | |||||
inspec_tests: | |||||
- path: test/integration/preferences |
require_relative '../../../kitchen/data/spec_helper' | |||||
describe 'apt.preferences' do | |||||
control 'Apt preferences' do | |||||
title 'should be configured' | |||||
describe file('/etc/apt/preferences') do | describe file('/etc/apt/preferences') do | ||||
it { should_not exist } | |||||
it { should exist } | |||||
its(:size) { should eq 0 } | |||||
end | end | ||||
describe file('/etc/apt/preferences.d') do | describe file('/etc/apt/preferences.d') do | ||||
it { should be_directory } | it { should be_directory } | ||||
it { should be_mode 755 } | |||||
it { should be_owned_by 'root' } | it { should be_owned_by 'root' } | ||||
it { should be_grouped_into 'root' } | it { should be_grouped_into 'root' } | ||||
its('mode') { should cmp '0755' } | |||||
end | end | ||||
describe file('/etc/apt/preferences.d/00-rspamd') do | describe file('/etc/apt/preferences.d/00-rspamd') do | ||||
it { should exist } | it { should exist } | ||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | it { should be_owned_by 'root' } | ||||
it { should be_grouped_into '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) { should match("Package: rspamd\nPin: origin rspamd.com\nPin-Priority: 650\n") } | ||||
end | end | ||||
describe file('/etc/apt/preferences.d/01-all') do | describe file('/etc/apt/preferences.d/01-all') do | ||||
it { should exist } | it { should exist } | ||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | it { should be_owned_by 'root' } | ||||
it { should be_grouped_into '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) { should match("Package: *\nPin: release stable\nPin-Priority: 610\n") } | ||||
end | end | ||||
describe file('/etc/apt/preferences.d/02-all') do | describe file('/etc/apt/preferences.d/02-all') do | ||||
it { should exist } | it { should exist } | ||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | it { should be_owned_by 'root' } | ||||
it { should be_grouped_into '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) { should match("Package: *\nPin: release testing\nPin-Priority: 600\n") } | ||||
end | end | ||||
describe file('/etc/apt/preferences.d/03-all') do | describe file('/etc/apt/preferences.d/03-all') do | ||||
it { should exist } | it { should exist } | ||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | it { should be_owned_by 'root' } | ||||
it { should be_grouped_into '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) { should match("Package: *\nPin: release unstable\nPin-Priority: 50\n") } | ||||
end | end | ||||
end | end |
name: preferences | |||||
title: Apt Formula | |||||
maintainer: Saltstack-formulas org | |||||
license: Apache-2.0 | |||||
summary: Verify that the apt preferences are configured correctly | |||||
supports: | |||||
- os-name: debian | |||||
- os-name: ubuntu |
control 'Apt repositories' do | |||||
title 'should be configured' | |||||
if os[:name] == 'ubuntu' | |||||
keyring_package = 'ubuntu-keyring' | |||||
else | |||||
keyring_package = 'debian-archive-keyring' | |||||
end | |||||
describe package(keyring_package) do | |||||
it { should be_installed } | |||||
end | |||||
describe file('/etc/apt/sources.list') do | |||||
it { should exist } | |||||
its(:size) { should eq 0 } | |||||
end | |||||
describe file('/etc/apt/sources.list.d') do | |||||
it { should be_directory } | |||||
it { should be_owned_by 'root' } | |||||
it { should be_grouped_into 'root' } | |||||
its('mode') { should cmp '0755' } | |||||
end | |||||
describe file('/etc/apt/sources.list.d/spotify-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\] http://repository.spotify.com stable non-free}) } | |||||
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 ./}) } | |||||
end | |||||
end |
name: repositories | |||||
title: Apt Formula | |||||
maintainer: Saltstack-formulas org | |||||
license: Apache-2.0 | |||||
summary: Verify that the apt repositories are configured correctly | |||||
supports: | |||||
- os-name: debian | |||||
- os-name: ubuntu |
require_relative '../../../kitchen/data/spec_helper' | |||||
describe 'apt.repositories' do | |||||
describe package('debian-archive-keyring') do | |||||
it { should be_installed } | |||||
end | |||||
describe file('/etc/apt/sources.list') do | |||||
it { should exist } | |||||
its(:size) { should eq 0 } | |||||
end | |||||
describe file('/etc/apt/sources.list.d') do | |||||
it { should be_directory } | |||||
it { should be_mode 755 } | |||||
it { should be_owned_by 'root' } | |||||
it { should be_grouped_into 'root' } | |||||
end | |||||
describe file('/etc/apt/sources.list.d/debian-jessie-source.list') do | |||||
it { should exist } | |||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | |||||
it { should be_grouped_into 'root' } | |||||
its(:content) { should match('deb-src http://httpredir.debian.org/debian jessie contrib non-free main') } | |||||
end | |||||
describe file('/etc/apt/sources.list.d/dropbox-binary.list') do | |||||
it { should exist } | |||||
it { should be_mode 644 } | |||||
it { should be_owned_by 'root' } | |||||
it { should be_grouped_into 'root' } | |||||
its(:content) { should match(%r{deb \[arch=i386,amd64\] http://linux.dropbox.com/debian jessie main}) } | |||||
end | |||||
end |
apt: | |||||
remove_preferences: true | |||||
clean_preferences_d: true | |||||
preferences: | |||||
00-rspamd: | |||||
package: rspamd | |||||
pin: origin rspamd.com | |||||
priority: 650 | |||||
01-all: | |||||
pin: release stable | |||||
priority: 610 | |||||
02-all: | |||||
pin: release testing | |||||
priority: 600 | |||||
03-all: | |||||
pin: release unstable | |||||
priority: 50 |
apt: | |||||
remove_sources_list: true | |||||
clean_sources_list_d: true | |||||
repositories: | |||||
spotify: | |||||
distro: stable | |||||
url: http://repository.spotify.com | |||||
arch: [amd64] | |||||
comps: [non-free] | |||||
keyid: 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90 | |||||
keyserver: keyserver.ubuntu.com | |||||
heroku: | |||||
distro: ./ | |||||
url: https://cli-assets.heroku.com/apt | |||||
arch: [amd64] | |||||
comps: [] | |||||
key_url: https://cli-assets.heroku.com/apt/release.key | |||||
require "serverspec" | |||||
require "pathname" | |||||
# Set backend type | |||||
set :backend, :exec | |||||
RSpec.configure do |c| | |||||
c.path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |||||
end |