如何通过摇动来跟踪“运行时”依赖项?

时间:2019-04-30 05:44:08

标签: shake-build-system

我想将基于震动的构建系统扩展为包括运行集成测试,但是运行这些测试需要启动一些docker容器,这些容器依赖于该容器,并且这些容器可能会或可能不会在构建过程中进行重建。

简而言之,我需要跟踪“实时”进程,并在其基础映像已更改的情况下终止/重新启动它们。我怎样才能做到这一点?

1 个答案:

答案 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}}。