Поваренная книга шеф-повара постоянного развертывания
Я пытаюсь интегрировать мой рабочий процесс шеф-повара в мои обычные рабочие процессы непрерывной интеграции / развертывания.
Мне уже удалось выполнить задачу Дженкинса, которая проверяет репозиторий git и запускает foodcritic, но я не могу понять последний шаг: отправить кулинарную книгу на сервер шеф-повара.
некоторые идеи, о которых я подумал:
- использовать нож: проблема в том, что на узлах сборки моего jenkins-сервера нож не установлен, а ножу AFAIK требуется каталог поваренной книги, из которого он будет выдвигать поваренную книгу. С другой стороны, я не считаю хорошей практикой позволять пользователю jenkins выполнять все команды ножа.
- используйте нож ruby-gem и напишите некоторый ruby-скрипт, который будет использовать jenkins: может сработать, но я не хотел экспериментировать с этим, потому что я не думаю, что это лучший вариант в любом случае
- сделать несколько вызовов REST-API с помощью cURL или любой другой подобной библиотеки. После прочтения документации по API я не думаю, что стоит реализовывать это.
Мой сборочный узел будет доступен как OSX и Debian - если это важно для моего возможного инструмента выбора.
Так что любой опыт будет оценен!
2 ответа
Если вы хотите отправить поваренную книгу на сервер chef только для целей тестирования, возможно, вам лучше использовать chef-zero, который является "быстрым запуском в памяти сервера Chef для тестирования и в одиночку".
Или, если вы просто пытаетесь проверить поваренные книги, вы можете запустить весь тест без сервера chef, используя test-kitchen + minitest-chef-handler. Я бы посоветовал вам не использовать " летучие мыши ", а вместо этого следовать примерам тестов minitest-chef-handler
Serverfault Note: Я все еще не могу опубликовать более двух ссылок для того, чтобы стать новым пользователем, поэтому попробуйте перейти по ним ниже:
minitest-chef-handler
github: calavera/minitest-chef-handler
bats
github: test-kitchen/test-kitchen/wiki/Getting-Started
test cases examples
github: calavera/minitest-chef-handler#test-cases
Просто комментарий: Foodcritic не является достаточным испытанием для перехода к производству ИМХО. Лично я хотел бы провести тестирование Vagrant на виртуальной машине перед автоматическим переходом к производству.
Тем не менее, это ваш звонок не мой.
В конечном счете, вам нужно выполнить команду ножа где-нибудь. Либо это в Дженкинсе, либо в процессе вне Дженкинса.
Если вы не можете / не хотите запускать нож в Jenkins, то я бы предложил использовать Jenkins для перемещения кода между ветками git. (то есть Jenkins отслеживает ветку тестов, и когда код проходит тесты, вы используете доступ git для перемещения его в производственную ветвь.)
Затем вам потребуется создать процесс вне Jenkins, который более или менее выполняет то, что делает Jenkins (отслеживает хранилище и предпринимает действия, когда обнаруживает изменения). Jenkins очень прост в настройке, поэтому, если есть проблемы с использованием основного сервера, вы можете запустить "автономные" jenkins на отдельной машине, которая только что загрузила нож.
Вы не одиноки в этой лодке, все немного борются с тем, как именно создать рабочий процесс шеф-повара, который работает для их организации.