1

В настоящее время наши разработчики используют клон виртуальной виртуальной виртуальной машины, настроенной с определенным набором программ, и мы хотели бы включить непрерывную интеграцию в наш стек разработки.Можно ли запустить тестовый комплект в бродячем боксе, начатом с Дженкинса?

Мы смотрим на использование Дженкинс, и предпочтительно мы хотели бы, чтобы настроить его сделать следующее:

  1. клон базы VM мы все используем для развития (как он обновляется часто)
  2. запустить экземпляр этого VM
  3. копирования/скачать скрипт на экземпляр
  4. выполнить сценарий, который установит наш Dev среду и запустить тесты
  5. собирает результаты теста
  6. отчет о был ли тест успешным или нет

Я уверен, что мы можем получить 1-4 работу, это шаги 5 и 6 мы обеспокоены.

Возможно ли это? И если да, то как?

ответ

1

Это, безусловно, возможно, у нас очень схожая установка.

Сбор результатов

Для того, чтобы собрать тест результаты, которые вы можете воспользоваться Vagrant's synced folders, т.е. запускать тесты на ВМ в каталоге, который синхронизируется с хост-машине (где Дженкинс работает в этом дело).

Отчетность была ли проверка успешной или нет

Я уверен, что вы знаете, процесс Дженкинс просто нужно ненулевым, чтобы потерпеть неудачу. То, как мы получили наши тесты настройки выглядит следующим образом:

vagrant ssh -c 'cd /synced-folder/ && grunt test-report --force && npm test' 

Во-первых, мы собираем результаты с помощью Grunt. Мы просто сгенерировали XML-отчеты xunit (которые затем публикуем как действие после сборки). Обратите внимание, что это --force так, чтобы мы собирали результаты, даже если у нас были неудачные тесты. Затем мы запускаем тесты, используя npm test. Код выхода процесса npm test будет тем, что используется для задания Jenkins, поэтому, если это не удастся, так будет и работа Jenkins.

0

Есть куча плагинов Дженкинса, разработанная именно для этого сценария.

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

Вот соответствующая точка входа в документации:

https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds

Смежные вопросы