Skip to content

Latest commit

 

History

History
114 lines (70 loc) · 3.67 KB

INTEGRATION.rst

File metadata and controls

114 lines (70 loc) · 3.67 KB

Continuous Integration

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:

  1. create, provision an test instance (VM, container)
  2. converge, run a provisioner (shell script, kitchen-salt)
  3. verify, run a verification (inspec, other may be added)
  4. destroy

Test Kitchen

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.

Verifier

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.

InSpec

Implement integration tests under <repo>/tests/integration/<suite>/<busser>/* directory with _spec.rb filename suffix.

Docs: