2016-08-23 57 views
1

我的当前设置是我在我的VPS中将我的git裸存储库设置为staging在部署Docker之前运行测试的最佳方式是什么?

所以,当我这样做:

git push staging staging 

我重新运行我的安装目录泊坞窗指的是混帐workdirs。

现在,我想在Docker中添加运行测试,如果失败了,请回滚到之前的(工作)提交。 [1]

什么是做[1]

我目前的钩看起来像这样的最佳方式:

$worktree = /my/work/directory 
$gitdir = /my/repo/dir.git 
$containername = mycontainer 
git --work-tree=$worktree --git-dir=$gitdir checkout staging -f 
cd $worktree 
docker stop $containername || true 
docker kill $containername || true 
docker rm $containername || true 
docker run -d -p $port1:$port2 --name $containername -v $worktree:/root/src -it $imagename bash -c $runscript 

回答

2

(可能不会直接回答你的问题,但有不同的方法,你不需要重新发明轮子)

我做了Kitchen test,它可以启动一个新的测试实例,它可以是vmware,ec2实例等,它可以是不同的驱动程序(vagrant,ec2,码头等,当然,你不能在码头测试码头),你可以运行完全相同的代码来自动验证。

这里是Getting started guide

如果一切都正确设置,一个命令kitchen test运行所有部署,测试和直接摧毁实例。

测试用例使用serverspec,您可以方便地测试实例中运行,端口监听等有关的测试案例的细节,请参考serverspec resource types

您也可以手动以下步骤获得故障排除步骤 - 运行通过步骤

kitchen test = kitchen create + kitchen converge + kitchen verify + kitchen destroy