We are using Jenkins to spin a kitchen instances in Docker or OpenStack environment.
If you would like to repeat, then you may use .kitchen.<backend>.yml
configuration yaml in the main directory
to override .kitchen.yml
at some points.
Usage: KITCHEN_LOCAL_YAML=.kitchen.<driver>.yml kitchen verify server-ubuntu-1404 -t tests/integration
.
Example: KITCHEN_LOCAL_YAML=.kitchen.docker.yml kitchen verify server-ubuntu-1404 -t tests/integration
.
Be aware of fundamental differences of backends. The formula verification scripts are primarily tested with Vagrant driver.
CI uses a tuned make kitchen target defined in Makefile to perform following (Kitchen Test) actions:
- create, provision an test instance (VM, container)
- converge, run a provisioner (shell script, kitchen-salt)
- verify, run a verification (inspec, other may be added)
- destroy
To install Test Kitchen is as simple as:
# install kitchen
gem install test-kitchen
# install required plugins
gem install kitchen-vagrant kitchen-docker kitchen-salt
# install additional plugins & tools
gem install kitchen-openstack kitchen-inspec busser-serverspec
kitchen list
kitchen test
of course you have to have installed Ruby and it's package manager gem first.
One may be satisfied installing it system-wide right from OS package manager which is preferred installation method. For advanced users or the sake of complex environments you may use rbenv for user side ruby installation.
An example steps then might be:
# get rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
# configure
cd ~/.rbenv && src/configure && make -C src # don't worry if it fails
echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bash_profile
# Ubuntu Desktop note: Modify your ~/.bashrc instead of ~/.bash_profile.
cd ~/.rbenv; git fetch
# install ruby-build, which provides the rbenv install command
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# list all available versions:
rbenv install -l
# install a Ruby version
# maybe you will need additional packages: libssl-dev, libreadline-dev, zlib1g-dev
rbenv install 2.0.0-p648
# activate
rbenv local 2.0.0-p648
# install test kitchen
gem install test-kitchen
An optional Gemfile
in the main directory may contain Ruby dependencies to be required for Test Kitchen workflow.
To install them you have to install first gem install bundler
and then run bundler install
.
The Busser Verifier goes with test-kitchen by default. It is used to setup and run tests implemented in <repo>/test/integration. It guess and installs the particular driver to tested instance. By default InSpec is expected.
You may avoid to install busser framework if you configure specific verifier in .kitchen.yml and install it kitchen plugin locally:
- verifier:
- name: serverspec
If you would to write another verification scripts than InSpec store them in <repo>/tests/integration/<suite>/<busser>/*
.
Busser <https://github.com/test-kitchen/busser>
is a test setup and execution framework under test kitchen.
Implement integration tests under <repo>/tests/integration/<suite>/<busser>/*
directory with _spec.rb
filename
suffix.
Docs: