我当前的设置是我在我的VPS中设置了我的git裸存储库,称之为git push staging staging
。
所以,当我这样做时:
$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
我使用挂载目录重新运行我的docker,请参阅git-workdirs。
现在,我还要添加在该docker中运行测试,如果出现故障,请将其回滚到之前的(工作)提交。 [1]
[1]
的最佳方式是什么?我目前的钩子看起来像这样:
<script>
val = 0;
function toggle(){
val = val ^ 1; // XOR 0^1 => 1, 1^1 => 0
if(val == 0){
//do something
}else{
//do something else
}
}
</script>
答案 0 :(得分:2)
(可能不会直接回答你的问题,但采用不同的方法,你不需要重新发明轮子)
我用Kitchen test做了,它可以启动一个新的测试实例,它可以是vmware,ec2实例等,它可以是不同的驱动程序(vagrant,ec2,docker等,当然,你可以在docker中测试docker并且你可以在其上运行完全相同的代码来自动验证。
如果一切设置正确,一个命令kitchen test
可以运行所有部署,直接测试和销毁实例。
测试用例使用serverspec,您可以轻松测试实例运行,端口侦听等。有关测试用例的详细信息,请参阅serverspec resource types
您也可以手动运行以下步骤,逐步进行问题排查
kitchen test = kitchen create + kitchen converge + kitchen verify + kitchen destroy