Как отслеживать "динамические" зависимости с помощью Shake? - PullRequest
0 голосов
/ 30 апреля 2019

Я хотел бы расширить нашу систему сборки на основе Shake, чтобы включить в нее запуск интеграционных тестов, однако для запуска этих тестов требуется запуск некоторых док-контейнеров, от которых зависят тесты, которые могут или не могут быть перестроены как часть процесса сборки.

Короче говоря, мне нужно было бы отслеживать «живые» процессы и убивать / перезапускать их, если изменилось их основное изображение.Как я могу добиться этого с помощью Shake?

1 Ответ

1 голос
/ 01 мая 2019

Я собираюсь предположить, что мы хотим запустить 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определить оракула, который обнаруживает запущенные в данный момент образы докера, и зависит от него в runner.

...