首页 > 解决方案 > 如何使用抖动跟踪“运行时”依赖项?

问题描述

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

简而言之,我需要跟踪“实时”进程,如果它们的底层图像发生变化,则杀死/重新启动它们。我怎么能用摇晃来实现呢?

标签: shake-build-system

解决方案


我将假设我们想要在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,并依赖于runner.


推荐阅读