我們今天著重講的是,使用kitchen-docker 這個組件來做自動化測試。 kitchen-docker 是什么? kitchen-docker 是chef 公司出品的kitchen test 的一個開源社區(qū)的插件??赐晡乙婚_始提到的kitchen test 的getting start guide 后,你就能體會到kitchen test 能做什么了。
通常我們在自己的電腦環(huán)境中,用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
#創(chuàng)建實例 $ 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) 準備環(huán)境 如果測試的是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(可以自動觸發(fā)),在build的過程里,你可以添加新任務做測試: cd kitchen-docker-ansible-serverspec/roles/demo kitchen test