我想将基于震动的构建系统扩展为包括运行集成测试,但是运行这些测试需要启动一些docker容器,这些容器依赖于该容器,并且这些容器可能会或可能不会在构建过程中进行重建。
简而言之,我需要跟踪“实时”进程,并在其基础映像已更改的情况下终止/重新启动它们。我怎样才能做到这一点?
答案 0 :(得分:1)
我将假设我们要运行docker image
并在image
更改时进行更改(将其通用化并不难,但是会分散重要的内容)。
想象一下,该服务始终在运行,永不中断,并且完全在Shake的控制之下。我们可以这样写:
"runner" %> \out -> do
need ["image"]
cmd_ "docker kill"
cmd_ "docker start image"
writeFile' out ""
在这里,我们有一条规则产生runner
,并且副作用取决于image
并开始/停止docker
。使用跑步者进行的任何测试均应在开始前进行need ["runner"]
。如果它们还取决于图像的内容,则应执行need ["runner","image"]
。
如果图像不在Shake的控制之下,并且其他人正在推动它们,您可能想要addOracle
定义一个可检测当前正在运行的docker图像的oracle,并依赖于{{ 1}}。