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

时间:2016-08-23 02:05:35

标签: git unit-testing docker test-kitchen

我当前的设置是我在我的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>

1 个答案:

答案 0 :(得分:2)

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

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

这是Getting started guide

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

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

您也可以手动运行以下步骤,逐步进行问题排查

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