Как объединить Vagrant с Jenkins для идеальной среды непрерывной интеграции? - PullRequest
82 голосов
/ 04 августа 2011

У вас есть проект, требующий выполнения некоторых требований к программному обеспечению (например, определенная версия Apache, версия PHP, экземпляр базы данных MySQL и пара других программ).

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

Вы также поняли преимущества системы непрерывной интеграции, такой как Jenkins .

Теперь вы хотели быобъедините эти два мира (Vagrant и Jenkins), чтобы получить идеальную среду непрерывной интеграции.Если быть более точным, вы не хотели бы устанавливать программное обеспечение, требуемое для вашего проекта, на машину, на которой работает Jenkins, но вы хотели бы использовать виртуальную среду, предоставляемую Vagrant, для периодической сборки вашего проекта поверх него.Программное обеспечение CI (Jenkins) создаст для вас коробку Vagrant и построит и протестирует ваш проект поверх него.

Как бы вы настроили свою среду для достижения этой цели?

Ответы [ 3 ]

32 голосов
/ 20 октября 2011

это хорошее решение для сборки системы, мое предложение:

  1. Ваш текущий Дженкинс работает как главный CI (вероятно, начатый пользователем jenkins)
  2. Создайте другого пользователя на той же машине или на другой машине, чтобы работать в качестве подчиненного режима jenkins.
    • ведомого jenkins можно вызвать из мастера jenkins, и он может использовать другого пользователя, например vagrant, у которого было разрешение и среда для vagrant, поэтому он не будет мешать исходному главному серверу jenkins
    • создайте свой базовый бродячий ящик, затем его можно будет использовать для ускорения развертывания
  3. Большая часть информации об установке (пакетов) может управляться puppet (или chef) для загрузки в вашу виртуальную машину.

Вероятно, вы можете взглянуть на veewee , который может создать бродячую коробку на лету.

Вот Упростите КИ с помощью Jenkins CI и Vagrant для моего руководства по этому предложению.

12 голосов
/ 09 апреля 2012

Вы можете попробовать Vagrant Plugin для Jenkins , который в настоящее время поддерживает Jenkins CD 1.532.3

Вы можете увидеть демо этого плагина на http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html

1 голос
/ 21 декабря 2016

Лично я бы предложил использовать Hashicorp Packer для создания ваших Vagrant-боксов для разработчиков, а затем использовать его для вывода образа Docker, AWS или OpenStack, который вы можете запустить в своей системе CI. Vagrant - потрясающий инструмент, но издержки виртуальных машин могут быть немного высокими для системы CI, чтобы постоянно вращать их вверх и вниз, особенно если вы хотите действительно быструю обратную связь.

На прежнем клиенте мы в основном загрузили машины Vagrant один раз с системой, а затем запустили сборки Docker / virtualenv внутри этих виртуальных машин, и мы периодически уничтожали их, когда происходило серьезное обновление или проблема, связанная с неправильным поведением среды.

https://www.packer.io/docs/builders/openstack.html

...