Як поєднати Vagrant з Jenkins для ідеального середовища безперервної інтеграції?


85

У вас є проект, який вимагає виконання деяких вимог щодо SW (наприклад: конкретна версія Apache, версія PHP, екземпляр бази даних MySQL та ще кілька програм).

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

Ви також зрозуміли переваги системи безперервної інтеграції, такої як Дженкінс .

Тепер ви хотіли б поєднати ці два світи (Вагрант і Дженкінс), щоб отримати ідеальне середовище безперервної інтеграції. Якщо бути більш точним, ви б не хотіли встановлювати програмне забезпечення, яке вимагає ваш проект, на машині, на якій працює Дженкінс, але ви хотіли б використовувати віртуальне середовище, яке надає Vagrant, для періодичного створення вашого проекту поверх нього. Програмне забезпечення CI (Jenkins) створить для вас коробку Vagrant, а також створить і протестує ваш проект у верхній частині.

Як би ви налаштували своє середовище для досягнення цього?


4
Крім того, ваша установка Jenkins - це панель Vagrant, тому ви можете запускати це середовище CI на кількох платформах, оскільки між ними існує багато відмінностей.
Stephan Eggermont

1
Ви створили таке середовище? Поєднання Docker & Jenkins вже добре відомо, однак для середовищ Windows цього буде недостатньо, і в цьому випадку єдиним хорошим варіантом, IMO, є Vagrant + Jenkins. Є деякі аспекти, які слід врахувати, наприклад, чи насправді нам потрібні раби і в якому контексті, чи ми могли б використовувати один сервер для створення бродячого середовища збірки для кожного проекту на вимогу (у багатьох компаніях постійно будується лише кілька проектів, більшість з них рідко будується), або ми повинні використовувати це поверх системи дедуплікації, щоб зменшити розмір диска.
majkinetor

Відповіді:


35

це хороше рішення для побудови системи, моя пропозиція:

  1. Ваш поточний jenkins працює як головний CI (можливо, його розпочав користувач jenkins)
  2. Створіть іншого користувача на тій самій машині або іншій машині, щоб він працював у режимі рабів jenkins
    • jenkins slave можна викликати від jenkins master, і він може використовувати іншого користувача, як бродяга, який мав дозвіл та середовище для бродяги, тому це не буде заважати оригінальному серверу jenkins master
    • створіть свій базовий бродячий ящик, тоді його можна буде використовувати повторно для пришвидшення розгортання
  3. Більшість інформації про встановлення (пакети) може керуватися маріонетками (або шеф-кухарями), щоб завантажити їх у ваш вікно vm.

Напевно, ви можете поглянути на veewee , який може створити бродягу коробку на льоту.

Ось полегшення CI за допомогою Jenkins CI та Vagrant для мого керівного принципу щодо цієї пропозиції.


1
На жаль, ваше посилання
недійсне

2
Якщо когось цікавить
Gilberto

12

Ви можете спробувати плагін Vagrant для Jenkins, який наразі підтримує Jenkins CD 1.532.3

Демонстрацію цього плагіна ви можете побачити за адресою http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html


7
цей плагін не підтримує Jenkins вище 1,490, тож це велике обмеження :-(
kenyee

також не підтримує бродяг, які бігають на рабів :(
Крістоф Фурманіяк,

1
Так, але тоді вам доведеться обробляти весь життєвий цикл віртуальної машини самостійно (створити, знищити чи ні в кінці завдання, ...). Ідея плагіна полягає в тому, що плагін робить це за вас, і тоді ви можете зосередитися на своїй головній меті: використовувати ВМ як ізольований контейнер.
Christophe Furmaniak

2
Згаданий плагін має проблеми, які досі не вирішені ( issues.jenkins-ci.org/browse/JENKINS-26326 ), і розробку зупинено рік тому. Не рекомендував би.
Росс Іванців

1
Запуск екземпляра бродяги на вимогу для створення збірки здається правильним. Якщо цей плагін все ще не працює?
Atifm

1

Особисто я б запропонував використовувати Hashicorp Packer для побудови ваших ящиків Vagrant для розробників, а потім використовувати його для виведення зображення Docker, AWS або OpenStack, яке можна запустити у вашій системі CI. Vagrant - це чудовий інструмент, але накладні витрати на віртуальні машини можуть бути трохи високими, щоб система ІС постійно обертала їх вгору-вниз, особливо якщо ви хочете отримати дуже швидкий зворотний зв'язок.

У колишнього клієнта ми в основному один раз завантажили машини Vagrant із системою, а потім запустили збірки Docker / virtualenv всередині цих віртуальних машин, і ми періодично знищували їх, коли було серйозне оновлення або проблема з оточенням, яка не поводилась належним чином.

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


Якщо я можу запитати, ви запускали jenkins як окремий користувач ?? Якщо так, то як вам вдалося надати доступ до бродяг ?? Подяка
Jaswanth Manigundan

Поки vagrant встановлено нормально, він розміщується на системному шляху. Самі ящики зазвичай завантажуються до домашнього каталогу поточного користувача, але ви можете замінити бродячий дім змінною середовища. Ми поєднали всі ці плюси, змусивши поле витягнути з певною версією частини процесу збірки, щоб він один раз був кешований, а потім використаний повторно.
dragon788
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.