feat: implementing semantic release

This commit is contained in:
Eric Veiras Galisson 2019-08-09 23:47:49 +02:00 committed by Imran Iqbal
parent 7d6385960f
commit 17b433126b
No known key found for this signature in database
GPG key ID: 6D8629439D2B7819
23 changed files with 542 additions and 213 deletions

18
.gitignore vendored
View file

@ -48,6 +48,7 @@ coverage.xml
.kitchen
.kitchen.local.yml
kitchen.local.yml
junit-*.xml
# Translations
*.mo
@ -102,3 +103,20 @@ ENV/
# mypy
.mypy_cache/
# Bundler
Gemfile.lock
# copied `.md` files used for conversion to `.rst` using `m2r`
docs/*.md
# Vim
*.sw?
## Collected when centralising formulas (check and sort)
# `collectd-formula`
.pytest_cache/
/.idea/
Dockerfile.*_*
ignore/
tmp/

View file

@ -1,21 +1,92 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
stages:
- test
- commitlint
- name: release
if: branch = master AND type != pull_request
sudo: required
cache: bundler
language: ruby
dist: xenial
services:
- docker
before_install:
- bundle install
# 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: deb-debian-9
- INSTANCE: ubu16-ubuntu-1604
- INSTANCE: ubu18-ubuntu-1804
- INSTANCE: rpm-centos-7
- INSTANCE: fed-fedora
- INSTANCE: sus-opensuse-leap-salt-minion
- INSTANCE: default-debian-10-develop-py3
# - INSTANCE: default-ubuntu-1804-develop-py3
# - INSTANCE: default-centos-7-develop-py3
# - INSTANCE: default-fedora-30-develop-py3
# - INSTANCE: default-opensuse-leap-15-develop-py3
# - INSTANCE: default-amazonlinux-2-develop-py2
# - INSTANCE: default-debian-9-2019-2-py3
- INSTANCE: default-ubuntu-1804-2019-2-py3
# - INSTANCE: default-centos-7-2019-2-py3
# - INSTANCE: default-fedora-30-2019-2-py3
# - INSTANCE: default-opensuse-leap-15-2019-2-py3
- INSTANCE: default-amazonlinux-2-2019-2-py2
# - INSTANCE: default-debian-9-2018-3-py2
# - INSTANCE: default-ubuntu-1604-2018-3-py2
# - INSTANCE: default-centos-7-2018-3-py2
- INSTANCE: default-fedora-29-2018-3-py2
- INSTANCE: default-opensuse-leap-15-2018-3-py2
# - INSTANCE: default-amazonlinux-2-2018-3-py2
# - INSTANCE: default-debian-8-2017-7-py2
# - INSTANCE: default-ubuntu-1604-2017-7-py2
- INSTANCE: default-centos-6-2017-7-py2
# - INSTANCE: default-fedora-29-2017-7-py2
# - INSTANCE: default-opensuse-leap-15-2017-7-py2
# - INSTANCE: default-amazonlinux-2-2017-7-py2
script:
- bundle exec kitchen verify ${INSTANCE}
- bin/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

9
FORMULA Normal file
View file

@ -0,0 +1,9 @@
name: packages
os: Debian, Ubuntu, Raspbian, RedHat, Fedora, CentOS, Suse, openSUSE
os_family: Debian, RedHat, Suse
version: 3.2.1
release: 1
minimum_version: 2017.7
summary: packages formula
description: Formula to install packages
top_level_dir: packages

View file

@ -1,7 +1,6 @@
source "https://rubygems.org"
gem "test-kitchen"
gem "kitchen-docker"
gem "kitchen-salt"
gem "kitchen-inspec"
gem 'kitchen-docker', '>= 2.9'
gem 'kitchen-salt', '>= 0.6.0'
gem 'kitchen-inspec', '>= 1.1'

29
bin/kitchen Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
#
# This file was generated by Bundler.
#
# The application 'kitchen' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)
bundle_binstub = File.expand_path("../bundle", __FILE__)
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.")
end
end
require "rubygems"
require "bundler/setup"
load Gem.bin_path("test-kitchen", "kitchen")

3
commitlint.config.js Normal file
View file

@ -0,0 +1,3 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
};

View file

@ -1,11 +1,47 @@
================
.. _readme:
packages-formula
================
A simple 'packages manager' formula, to install/remove packages without further
ado.
|img_travis| |img_sr|
.. |img_travis| image:: https://travis-ci.com/saltstack-formulas/template-formula.svg?branch=master
:alt: Travis CI Build Status
:scale: 100%
:target: https://travis-ci.com/saltstack-formulas/template-formula
.. |img_sr| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
:alt: Semantic Release
:scale: 100%
:target: https://github.com/semantic-release/semantic-release
A simple 'packages manager' formula, to install/remove packages without further
.. contents:: **Table of Contents**
General notes
-------------
See the full `SaltStack Formulas installation and usage instructions
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#writing-formulas>`_.
If you want to use this formula, please pay attention to the ``FORMULA`` file and/or ``git tag``,
which contains the currently released version. This formula is versioned according to `Semantic Versioning <http://semver.org/>`_.
See `Formula Versioning Section <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#versioning>`_ for more details.
Contributing to this repo
-------------------------
**Commit message formatting is significant!!**
Please see :ref:`How to contribute <CONTRIBUTING>` for more details.
Available states
----------------
.. image:: https://travis-ci.org/saltstack-formulas/packages-formula.svg?branch=master
What this formula can do
========================
@ -28,24 +64,18 @@ This formula is not intended to configure packages, nor setup services or daemon
When you need to do that for a package, you should probably be using another
formula.
.. note::
See the full `Salt Formulas installation and usage instructions
<http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
Available states
================
.. contents::
:local:
``packages``
------------
^^^^^^^^^^^^
*Meta-state (This is a state that includes other states)*.
Runs all the other states in the formula.
``packages.pkgs``
-----------------
^^^^^^^^^^^^^^^^^
Allows you to manage system's packages. You can specify:
@ -98,7 +128,7 @@ Allows you to manage system's packages. You can specify:
correct installation.
``packages.pips``
-----------------
^^^^^^^^^^^^^^^^^
You can specify:
@ -113,7 +143,7 @@ You can specify:
correct installation (ie, ``epel`` for RedHat families).
``packages.gems``
-----------------
^^^^^^^^^^^^^^^^^
You can specify:
@ -128,7 +158,7 @@ You can specify:
correct installation (ie, ``epel`` for RedHat families).
``packages.npms``
-----------------
^^^^^^^^^^^^^^^^^
This formula **DOES NOT** install ``nodejs/npm``, as it's outside of its scope:
nodejs/npm that comes with the distros is usually outdated, so it's required to add
@ -150,7 +180,7 @@ You can specify:
correct installation (ie, ``epel`` for RedHat families).
``packages.archives``
-------------------
^^^^^^^^^^^^^^^^^^^
'Archive file` handler for common 'download' and 'checksum' states. All formats recognized by `salt.states.archive.extracted` (tar, rar, zip, etc) will be extracted. Alternatively `raw` formats are supported (`raw`, `bin`,) for standard and binary executable files.
@ -160,7 +190,7 @@ You can specify:
``packages.snaps``
-----------------
^^^^^^^^^^^^^^^^^^
You can specify:
@ -187,7 +217,7 @@ You can specify:
``packages.remote_pkgs``
------------------------
^^^^^^^^^^^^^^^^^^^^^^^^
You can specify a dictionary of remote system packages (deb/rpm) that you want
to install, in the format:
@ -195,18 +225,47 @@ to install, in the format:
``name: url``
Testing
=======
-------
Testing is done with `Test Kitchen <http://kitchen.ci/>`_
for machine setup and `inspec <https://www.inspec.io/docs/>`_
for integration tests.
Linux testing is done with ``kitchen-salt``.
Tested on
Requirements
^^^^^^^^^^^^
* Ruby
* Docker
.. code-block:: bash
$ gem install bundler
$ bundle install
$ bin/kitchen test [platform]
Where ``[platform]`` is the platform name defined in ``kitchen.yml``,
e.g. ``debian-9-2019-2-py3``.
``bin/kitchen converge``
^^^^^^^^^^^^^^^^^^^^^^^^
Creates the docker instance and runs the ``template`` main state, ready for testing.
``bin/kitchen verify``
^^^^^^^^^^^^^^^^^^^^^^
Runs the ``inspec`` tests on the actual instance.
``bin/kitchen destroy``
^^^^^^^^^^^^^^^^^^^^^^^
Removes the docker instance.
``bin/kitchen test``
^^^^^^^^^^^^^^^^^^^^
Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``.
``bin/kitchen login``
^^^^^^^^^^^^^^^^^^^^^
Gives you SSH access to the instance for manual testing.
* Debian/9
* Debian/8 (with backports)
* Centos/7
* Fedora/27
* Ubuntu/16.04
* Ubuntu/18.04
* Opensuse/leap

View file

@ -4,207 +4,148 @@
# For help on this file's format, see https://kitchen.ci/
driver:
name: docker
driver_config:
use_sudo: false
privileged: true
provision_command: mkdir -p /run/sshd
run_command: /lib/systemd/systemd
# Make sure the platforms listed below match up with
# the `env.matrix` instances defined in `.travis.yml`
platforms:
# The `run_command` used for each platform is required to
# test `systemd` services in docker
- name: debian-9
driver_config:
image: debian:9
run_command: /lib/systemd/systemd
## SALT `develop`
- name: debian-10-develop-py3
driver:
image: netmanagers/salt-develop-py3:debian-10
provision_command:
- apt-get update && apt-get install -y udev locales git
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: ubuntu-18.04
driver_config:
image: ubuntu:18.04
run_command: /lib/systemd/systemd
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python3 git develop
- name: ubuntu-1804-develop-py3
driver:
image: netmanagers/salt-develop-py3:ubuntu-18.04
provision_command:
- apt-get update && apt-get install -y udev locales git
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: ubuntu-16.04
driver_config:
image: ubuntu:16.04
run_command: /lib/systemd/systemd
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python3 git develop
- name: centos-7-develop-py3
driver:
image: netmanagers/salt-develop-py3:centos-7
provision_command:
- apt-get update && apt-get install -y udev locales git
- locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8
- echo 'export PATH=${PATH}:/usr/local/go/bin' >/etc/default/golang.sh
- export PATH="${PATH}:/usr/local/go/bin"
- name: centos-7
driver_config:
image: centos:7
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python3 git develop
- name: fedora-30-develop-py3
driver:
image: netmanagers/salt-develop-py3:fedora-30
provision_command:
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python3 git develop
- name: opensuse-leap-15-develop-py3
driver:
image: netmanagers/salt-develop-py3:opensuse-leap-15
provision_command:
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python3 git develop
run_command: /usr/lib/systemd/systemd
- name: amazonlinux-2-develop-py2
driver:
image: netmanagers/salt-develop-py2:amazonlinux-2
provision_command:
- yum -y update && yum -y install udev git
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
- name: fedora
driver_config:
image: fedora
- curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
- sh bootstrap-salt.sh -XdPbfrq -x python2 git develop
## SALT `2019.2`
- 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
- name: centos-7-2019-2-py3
driver:
image: netmanagers/salt-2019.2-py3:centos-7
- name: fedora-30-2019-2-py3
driver:
image: netmanagers/salt-2019.2-py3:fedora-30
- name: opensuse-leap-15-2019-2-py3
driver:
image: netmanagers/salt-2019.2-py3:opensuse-leap-15
run_command: /usr/lib/systemd/systemd
provision_command:
- yum -y update && yum -y install udev git
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
# As of February 2019, there have been problems getting `opensuse` to work:
# * `opensuse` is deprecated
# * `opensuse/leap` grabs `15.x`, which doesn't run the `inspec` tests
# * `opensuse/tumbleweed` doesn't install `salt-minion`
# * `opensuse/leap:42.3` does work
# * `opensuse/salt-minion` uses `42.3` with `salt-minion` pre-installed
- name: opensuse-leap-salt-minion
driver_config:
image: opensuse/salt-minion
- name: amazonlinux-2-2019-2-py2
driver:
image: netmanagers/salt-2019.2-py2:amazonlinux-2
## SALT `2018.3`
- name: debian-9-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:debian-9
- name: ubuntu-1604-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:ubuntu-16.04
- name: centos-7-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:centos-7
- name: fedora-29-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:fedora-29
- name: opensuse-leap-15-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:opensuse-leap-15
run_command: /usr/lib/systemd/systemd
provision_command:
- zypper refresh && zypper install -y udev git glibc-locale
- systemctl enable sshd.service
- cat /etc/os-release
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
- name: amazonlinux-2-2018-3-py2
driver:
image: netmanagers/salt-2018.3-py2:amazonlinux-2
## SALT `2017.7`
- name: debian-8-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:debian-8
- name: ubuntu-1604-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:ubuntu-16.04
- name: centos-6-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:centos-6
run_command: /sbin/init
- name: fedora-29-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:fedora-29
- name: opensuse-leap-15-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:opensuse-leap-15
run_command: /usr/lib/systemd/systemd
- name: amazonlinux-2-2017-7-py2
driver:
image: netmanagers/salt-2017.7-py2:amazonlinux-2
provisioner:
name: salt_solo
log_level: info
salt_install: none
require_chef: false
salt_version: latest
formula: packages
salt_copy_filter:
- .kitchen
- .git
pillars_from_files:
packages.sls: pillar.example
pillars:
top.sls:
base:
'*':
- packages
state_top:
base:
'*':
- packages
verifier:
# https://www.inspec.io/
name: inspec
sudo: true
# cli, documentation, html, progress, json, json-min, json-rspec, junit
reporter:
- cli
inspec_tests:
- path: test/integration/default
suites:
- name: deb
excludes:
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- fedora
- opensuse-leap-salt-minion
- name: default
provisioner:
dependencies:
- name: node
repo: git
source: https://github.com/saltstack-formulas/node-formula.git
state_top:
base:
'*':
- node
- packages
pillars:
top.sls:
base:
'*':
- packages
pillars_from_files:
packages.sls: pillar.example
pillars:
top.sls:
base:
'*':
- node
- packages
node.sls:
node:
version: 11.11.0-1nodesource1
install_from_ppa: True
ppa:
repository_url: https://deb.nodesource.com/node_11.x
- name: ubu18
excludes:
- debian-9
- ubuntu-16.04
- centos-7
- fedora
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.ubuntu.1804
- name: ubu16
excludes:
- debian-9
- ubuntu-18.04
- centos-7
- fedora
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.ubuntu.1604
- name: fed
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.fedora
- name: sus
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- fedora
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.opensuse
- name: rpm
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- fedora
- opensuse-leap-salt-minion
provisioner:
dependencies:
- name: epel
repo: git
source: https://github.com/saltstack-formulas/epel-formula.git
state_top:
base:
'*':
- epel
- packages
pillars_from_files:
packages.sls: test/integration/default/pillar.example.redhat
pillars:
top.sls:
base:
'*':
- epel
- packages
epel.sls:
disabled: false
verifier:
inspec_tests:
- path: test/integration/default

30
pre-commit_semantic-release.sh Executable file
View file

@ -0,0 +1,30 @@
#!/bin/sh
###############################################################################
# (A) Update `FORMULA` with `${nextRelease.version}`
###############################################################################
sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA
###############################################################################
# (B) Use `m2r` to convert automatically produced `.md` docs to `.rst`
###############################################################################
# Install `m2r`
sudo -H pip install m2r
# Copy and then convert the `.md` docs
cp *.md docs/
cd docs/
m2r --overwrite *.md
# Change excess `H1` headings to `H2` in converted `CHANGELOG.rst`
sed -i -e '/^=.*$/s/=/-/g' CHANGELOG.rst
sed -i -e '1,4s/-/=/g' CHANGELOG.rst
# Use for debugging output, when required
# cat AUTHORS.rst
# cat CHANGELOG.rst
# Return back to the main directory
cd ..

106
release.config.js Normal file
View file

@ -0,0 +1,106 @@
module.exports = {
branch: 'master',
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
releaseRules: './release-rules.js',
}],
'@semantic-release/release-notes-generator',
['@semantic-release/changelog', {
changelogFile: 'CHANGELOG.md',
changelogTitle: '# Changelog',
}],
['@semantic-release/exec', {
prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}',
}],
['@semantic-release/git', {
assets: ['*.md', 'docs/*.rst', 'FORMULA'],
}],
'@semantic-release/github',
],
generateNotes: {
preset: 'angular',
writerOpts: {
// Required due to upstream bug preventing all types being displayed.
// Bug: https://github.com/conventional-changelog/conventional-changelog/issues/317
// Fix: https://github.com/conventional-changelog/conventional-changelog/pull/410
transform: (commit, context) => {
const issues = []
commit.notes.forEach(note => {
note.title = `BREAKING CHANGES`
})
// NOTE: Any changes here must be reflected in `CONTRIBUTING.md`.
if (commit.type === `feat`) {
commit.type = `Features`
} else if (commit.type === `fix`) {
commit.type = `Bug Fixes`
} else if (commit.type === `perf`) {
commit.type = `Performance Improvements`
} else if (commit.type === `revert`) {
commit.type = `Reverts`
} else if (commit.type === `docs`) {
commit.type = `Documentation`
} else if (commit.type === `style`) {
commit.type = `Styles`
} else if (commit.type === `refactor`) {
commit.type = `Code Refactoring`
} else if (commit.type === `test`) {
commit.type = `Tests`
} else if (commit.type === `build`) {
commit.type = `Build System`
// } else if (commit.type === `chore`) {
// commit.type = `Maintenance`
} else if (commit.type === `ci`) {
commit.type = `Continuous Integration`
} else {
return
}
if (commit.scope === `*`) {
commit.scope = ``
}
if (typeof commit.hash === `string`) {
commit.hash = commit.hash.substring(0, 7)
}
if (typeof commit.subject === `string`) {
let url = context.repository
? `${context.host}/${context.owner}/${context.repository}`
: context.repoUrl
if (url) {
url = `${url}/issues/`
// Issue URLs.
commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => {
issues.push(issue)
return `[#${issue}](${url}${issue})`
})
}
if (context.host) {
// User URLs.
commit.subject = commit.subject.replace(/\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => {
if (username.includes('/')) {
return `@${username}`
}
return `[@${username}](${context.host}/${username})`
})
}
}
// remove references that already appear in the subject
commit.references = commit.references.filter(reference => {
if (issues.indexOf(reference.issue) === -1) {
return true
}
return false
})
return commit
},
},
},
};

View file

@ -0,0 +1,50 @@
# InSpec Profile: `default`
This shows the implementation of the `default` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
## Verify a profile
InSpec ships with built-in features to verify a profile structure.
```bash
$ inspec check default
Summary
-------
Location: default
Profile: profile
Controls: 4
Timestamp: 2019-06-24T23:09:01+00:00
Valid: true
Errors
------
Warnings
--------
```
## Execute a profile
To run all **supported** controls on a local machine use `inspec exec /path/to/profile`.
```bash
$ inspec exec default
..
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
8 examples, 0 failures
```
## Execute a specific control from a profile
To run one control from the profile use `inspec exec /path/to/profile --controls name`.
```bash
$ inspec exec default --controls package
.
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
1 examples, 0 failures
```
See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb).

View file

@ -0,0 +1,14 @@
name: default
title: packages formula
maintainer: SaltStack Formulas
license: Apache-2.0
summary: Verify that the packages formula is setup and configured correctly
supports:
- platform-name: debian
- platform-name: ubuntu
- platform-name: centos
- platform-name: fedora
- platform-name: opensuse
- platform-name: suse
- platform-name: freebsd
- platform-name: amazon