我们今天着重讲的是,使用kitchen-docker 这个组件来做自动化测试。 kitchen-docker 是什么? kitchen-docker 是chef 公司出品的kitchen test 的一个开源社区的插件。看完我一开始提到的kitchen test 的getting start guide 后,你就能体会到kitchen test 能做什么了。
通常我们在自己的电脑环境中,用vagrant虚拟机做测试。使用kitchen-docker 后,就是调用docker 镜像和容器来做测试的媒体了。速度上会比vagrant快,尤其是在macbook上,安装了native docker for mac 如何使用 kitchen-docker? 下面是演示: 进入正确的目录 $ git clone https://github.com/BWITS/kitchen-test-demo.git $ cd kitchen-test-demo $ find . -name ".kitchen.yml" ./kitchen-docker-ansible-serverspec/roles/demo/.kitchen.yml ./kitchen-docker-chef/.kitchen.yml ./kitchen-vagrant-ansible-serverspec/roles/demo/.kitchen.yml ./kitchen-vagrant-chef/.kitchen.yml
$ cd kitchen-docker-ansible-serverspec/roles/demo 列出测试实例 $ kitchen list Instance Driver Provisioner Verifier Transport Last Action default-centos-72 Docker AnsiblePlaybook Serverspec Ssh Verified
#创建实例 $ kitchen create -----> Starting Kitchen (v1.10.2) -----> Creating <default-centos-72>... 0.0.0.0:32790 [SSH] Established Finished creating <default-centos-72> (0m0.10s). -----> Kitchen is finished. (0m0.25s) 准备环境 如果测试的是ansible playbook,那么kitchen test 就会运行ansible-playbook安装该角色所有的应用配置 $ kitchen converge -----> Starting Kitchen (v1.10.2) -----> Converging <default-centos-72>... ... Transferring files to <default-centos-72> Using /etc/ansible/ansible.cfg as config file
PLAYBOOK: default.yml ********************************************************** 1 plays in /tmp/kitchen/default.yml ... PLAY RECAP ********************************************************************* localhost : ok=2 changed=0 unreachable=0 failed=0
Finished converging <default-centos-72> (0m6.56s). -----> Kitchen is finished. (0m6.71s) 检测 $ kitchen verify -----> Starting Kitchen (v1.10.2) -----> Setting up <default-centos-72>... ... Installing ruby, bundler and serverspec remotely on server Running Serverspec /usr/local/bin/rspec
Package "httpd" should be installed
Finished in 0.07733 seconds (files took 0.40255 seconds to load) 1 example, 0 failures
Finished verifying <default-centos-72> (0m0.89s). -----> Kitchen is finished. (0m1.41s)
如果想要快速的了解如何添加新的测试代码,请看 serverspec resources 用jenkings/bamboo做自动化测试 代码递交后,我们一般会用jenkins或者bamboo做build和deploy(可以自动触发),在build的过程里,你可以添加新任务做测试: cd kitchen-docker-ansible-serverspec/roles/demo kitchen test