在部署前运行dockertesting的最佳方式是什么?

我目前的设置是,我已经在我的VPS调用中设置了我的git裸仓库。

所以,当我这样做:

 git push staging staging 

我重新运行我的docker安装目录引用git-workdirs。

现在,我还想添加在Docker中运行testing,如果失败了,请回滚到之前的(工作)提交。 [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 

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

我做了厨房testing ,它可以启动一个新的testing实例,它可以是vmware,ec2实例等,它可以是不同的驱动程序(stream浪者,EC2,docker等,当然,你不能testingdocker),你可以运行完全相同的代码来自动validation。

这是入门指南

如果一切正常,一个命令kitchen test运行所有部署,直接testing和销毁实例。

testing用例使用了serverspec ,你可以很容易地testing运行的实例,端口侦听等等。关于testing用例的细节,请参考serverspec资源types

您也可以手动运行以下步骤以逐步进行故障排除

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