Поваренная книга шеф-повара постоянного развертывания

Я пытаюсь интегрировать мой рабочий процесс шеф-повара в мои обычные рабочие процессы непрерывной интеграции / развертывания.

Мне уже удалось выполнить задачу Дженкинса, которая проверяет репозиторий 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 на отдельной машине, которая только что загрузила нож.

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

Другие вопросы по тегам