Git 部署前在docker中运行测试的最佳方法是什么

Git 部署前在docker中运行测试的最佳方法是什么,git,unit-testing,docker,test-kitchen,Git,Unit Testing,Docker,Test Kitchen,我当前的设置是,我已经在我的VPS中设置了我的git裸机存储库,称之为staging 因此,当我这样做时: git push staging staging 我使用挂载目录重新运行docker,并参考git workdirs 现在,我还想在docker中添加运行测试,如果某个测试失败,则将其回滚到上一个(工作)提交。[1] 最好的方法是什么 我当前的挂钩如下所示: $worktree = /my/work/directory $gitdir = /my/repo/dir.git $conta

我当前的设置是,我已经在我的VPS中设置了我的git裸机存储库,称之为
staging

因此,当我这样做时:

git push staging staging
我使用挂载目录重新运行docker,并参考git workdirs

现在,我还想在docker中添加运行测试,如果某个测试失败,则将其回滚到上一个(工作)提交。[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
(可能不会直接回答您的问题,但采用不同的方法,您无需重新发明车轮)

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

这是

如果一切都设置正确,只需一个命令
kitchen test
,即可直接运行所有部署、测试和销毁实例

测试用例正在使用,您可以轻松地测试实例的运行、端口侦听等。有关测试用例的详细信息,请参阅

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

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