кухня-докер: Как запустить команду оболочки, прежде чем кухня сойдется

При использовании бродячих машин с тестовой кухней pre_create_command позволяет указать команду, которая запускается локально перед созданием бродячей машины. С kitchen-docker похоже, что такой вариант конфигурации не существует, и сгибание chef_omnibus_url как предлагается < href="https://stackoverflow.com/questions/36555280/how-to-run-shell-command-before-kitchen-converge-in-chef">здесь не вариант.

Сценарий, указанный как pre_create_command для тестируемых бродяг, создает локальный пакет данных шеф-повара.

Есть ли решение, которое я упустил из виду?


person trish    schedule 20.12.2016    source источник
comment
Что ты пытаешься сделать ? (То есть: что должна делать эта команда предварительной подготовки?)   -  person Tensibai    schedule 20.12.2016
comment
Просто чтобы повторить то, что сказал Тенсибай, пожалуйста, добавьте, что вы пытаетесь достичь.   -  person coderanger    schedule 20.12.2016


Ответы (3)


Лучшие практики включают Rakefile и Thor.

По сути, вы управляете своими тестами из Rakefile. Например:

rake style

Это запустит все команды в вашей задаче стиля (возможно, lint/syntax/unit и кухонные тесты). Конечно, вы можете изменить свои задачи, чтобы выполнять все, что вам нравится. Вот несколько хороших ресурсов:

https://blog.chef.io/2015/04/21/overview-of-test-driven-infrastructure-with-chef/

См. раздел «Вспомогательные инструменты и зависимости».

Вот пример Rakefile:

https://github.com/chef-cookbooks/chef-server/blob/master/Rakefile

person thun    schedule 20.12.2016
comment
Это не очень связано. - person coderanger; 21.12.2016
comment
Спасибо за ответ, но я не думаю, что ответ подходит для моей проблемы, поскольку я говорю об отдельном кухонном тесте, а не о полной цепочке тестов. - person trish; 21.12.2016
comment
Я не знаю, каков ваш вариант использования, однако, если вы пытаетесь сделать какую-то логику ДО того, как кухня сойдется, запустите Rakefile, и он отлично работает. Вам не нужно запускать «набор» тестов. Это может быть простой вызов сценария оболочки, который вы описали, и вызов кухни сходятся. Так как это просто ruby/rake, он на 100% гибкий. - person thun; 21.12.2016

Я набросал патч для kitchen-docker здесь. Однако, как показывает обсуждение этого пулреквеста, есть аргументы против соответствующей функциональности в kitchen-docker, а именно против того, что такая функциональность (если вообще когда-либо) должна быть в ядре кухни.

Так что пока нам приходится жить с этим несоответствием между докером и бродягой, и именно здесь в игру вступает ответ Туна.

person trish    schedule 22.12.2016

Это можно сделать с помощью

driver_config:
  provision_command: <command>

in kitchen.yml

Подробнее см. здесь

Kr,

Ршад

person Rshad    schedule 11.11.2019