Use kitchen-docker for integration testing

This commit is contained in:
Tim Smith 2015-10-23 16:34:13 -07:00
parent e293ecc585
commit 93629df739
3 changed files with 81 additions and 171 deletions

View File

@ -1,162 +0,0 @@
---
driver_config:
digitalocean_client_id: <%= ENV['DIGITAL_OCEAN_CLIENT_ID'] %>
digitalocean_api_key: <%= ENV['DIGITAL_OCEAN_API_KEY'] %>
google_client_email: <%= ENV['GOOGLE_CLIENT_EMAIL'] %>
google_key_location: <%= ENV['GOOGLE_KEY_LOCATION'] %>
google_project: <%= ENV['GOOGLE_PROJECT'] %>
joyent_username: <%= ENV['SDC_CLI_ACCOUNT'] %>
joyent_keyfile: <%= ENV['SDC_CLI_IDENTITY'] %>
joyent_keyname: <%= ENV['SDC_CLI_KEY_ID'] %>
joyent_url: <%= ENV['SDC_CLI_URL'] %>
aws_access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
aws_secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
aws_ssh_key_id: <%= ENV['AWS_KEYPAIR_NAME'] %>
availability_zone: <%= ENV['AWS_AVAILABILITY_ZONE'] %>
provisioner:
name: chef_zero
require_chef_omnibus: 11.12.8
platforms:
- name: centos-5.8
driver_plugin: digitalocean
driver_config:
image_id: 1601
flavor_id: 63
region_id: 4
ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
- name: centos-6.5
driver_plugin: digitalocean
driver_config:
image_id: 3448641
flavor_id: 63
region_id: 4
ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
- name: amazon-2013.09
driver_plugin: ec2
driver_config:
image_id: ami-3be4bc52
username: ec2-user
ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %>
- name: amazon-2014.03
driver_plugin: ec2
driver_config:
image_id: ami-6b726502
username: ec2-user
ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %>
# - name: fedora-19
# driver_plugin: digitalocean
# driver_config:
# image_id: 3102879
# flavor_id: 63
# region_id: 4
# ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
# ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
- name: debian-7.0
driver_plugin: gce
driver_config:
image_name: debian-7-wheezy-v20131120
zone: <%= ENV['GCE_ZONE'] %>
area: <%= ENV['GCE_AREA'] %>
network: <%= ENV['GCE_NETWORK'] %>
username: <%= ENV['GCE_USERNAME'] %>
public_key_path: <%= ENV['GCE_PUBLIC_KEY_PATH'] %>
ssh_key: <%= ENV['GCE_SSH_KEY_PATH'] %>
run_list:
- recipe[apt]
- name: ubuntu-10.04
driver_plugin: digitalocean
driver_config:
image_id: 14097
flavor_id: 63
region_id: 4
ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
run_list:
- recipe[apt]
- name: ubuntu-12.04
driver_plugin: digitalocean
driver_config:
image_id: 3101045
flavor_id: 63
region_id: 4
ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
run_list:
- recipe[apt]
- name: ubuntu-14.04
driver_plugin: digitalocean
driver_config:
image_id: 3240036
flavor_id: 63
region_id: 4
ssh_key_ids: <%= ENV['DIGITAL_OCEAN_SSH_KEY_IDS'] %>
ssh_key: <%= ENV['DIGITAL_OCEAN_SSH_KEY_PATH'] %>
run_list:
- recipe[apt]
- name: smartos-13.4.0
driver_plugin: joyent
driver_config:
joyent_image_id: ff86eb8a-a069-11e3-ae0e-4f3c8983a91c
joyent_flavor_id: g3-standard-4-smartos
username: root
ssh_key: <%= ENV['SDC_CLI_IDENTITY'] %>
busser:
ruby_bindir: '/opt/local/bin/'
provisioner:
name: chef_zero
sudo: false
chef_omnibus_url: https://raw.github.com/test-kitchen/kitchen-joyent/master/scripts/install-smartos.sh
- name: omnios-151006
driver_plugin: ec2
driver_config:
image_id: ami-35eb835c
flavor_id: m3.medium
username: root
ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %>
provisioner:
name: chef_zero
run_list:
- recipe[ips-omniti]
suites:
- name: default
run_list:
- recipe[postfix]
attributes: {}
- name: aliases
run_list:
- recipe[postfix::aliases]
attributes: {}
- name: client
run_list:
- recipe[postfix::client]
attributes: {}
- name: server
run_list:
- recipe[postfix::server]
attributes: {}
- name: sasl_auth
run_list:
- recipe[postfix::sasl_auth]
attributes:
postfix:
main :
smtp_sasl_auth_enable: "yes"

63
.kitchen.docker.yml Normal file
View File

@ -0,0 +1,63 @@
settings:
parallel: true
driver:
name: docker
# privileged is required otherwise the container doesn't boot right
privileged: true
platforms:
- name: centos-7.1
driver:
image: centos:7
platform: rhel
run_command: /usr/lib/systemd/systemd
provision_command:
- /bin/yum install -y initscripts net-tools wget
- name: ubuntu-12.04
driver:
image: ubuntu-upstart:12.04
platform: ubuntu
disable_upstart: false
run_command: /sbin/init
provision_command:
- /usr/bin/apt-get update
- /usr/bin/apt-get install apt-transport-https net-tools -y
- name: ubuntu-14.04
driver:
image: ubuntu-upstart:14.04
platform: ubuntu
disable_upstart: false
run_command: /sbin/init
provision_command:
- /usr/bin/apt-get update
- /usr/bin/apt-get install apt-transport-https net-tools -y
suites:
- name: default
run_list:
- recipe[postfix]
- name: aliases
run_list:
- recipe[postfix::aliases]
- name: client
run_list:
- recipe[postfix::client]
- name: server
run_list:
- recipe[postfix::server]
- name: sasl_auth
run_list:
- recipe[postfix::sasl_auth]
attributes:
postfix:
main:
relayhost: "localhost"
smtp_sasl_auth_enable: "yes"
sasl:
smtp_sasl_user_name: "kitchenuser"
smtp_sasl_passwd: "not-a-real-thing"

View File

@ -1,5 +1,8 @@
# Use Travis's cointainer based infrastructure
sudo: false
rvm: 2.2
sudo: required
# install the pre-release chef-dk. Use chef-stable-precise to install the stable release
addons:
apt:
sources:
@ -7,22 +10,28 @@ addons:
packages:
- chefdk
services: docker
env:
matrix:
- INSTANCE=default-ubuntu-1404
- INSTANCE=default-ubuntu-1204
- INSTANCE=default-centos-71
# Don't `bundle install`
install: echo "skip bundle install"
branches:
only:
- master
# Ensure we make ChefDK's Ruby the default
before_script:
# https://github.com/zuazo/kitchen-in-travis-native/issues/1#issuecomment-142230889
- sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
- eval "$(/opt/chefdk/bin/chef shell-init bash)"
# We have to install chef-sugar for ChefSpec
- /opt/chefdk/embedded/bin/chef gem install chef-sugar
- /opt/chefdk/embedded/bin/chef gem install kitchen-docker
script:
- /opt/chefdk/embedded/bin/chef --version
- /opt/chefdk/embedded/bin/rubocop --version
- /opt/chefdk/embedded/bin/rubocop
- /opt/chefdk/embedded/bin/foodcritic --version
- /opt/chefdk/embedded/bin/foodcritic . --exclude spec
- /opt/chefdk/embedded/bin/rspec spec
- /opt/chefdk/embedded/bin/rspec
- KITCHEN_LOCAL_YAML=.kitchen.docker.yml /opt/chefdk/embedded/bin/kitchen verify ${INSTANCE}