Ефективний спосіб забезпечити «чисту шиферну систему» ​​для постійної послуги інтеграції


10

Ми хочемо створити послугу безперервної інтеграції (CI) для нашого проекту. Ця служба CI повинна контролювати всі аспекти життя проекту, включаючи розгортання.

Тобто, ми хочемо, щоб агент CI на кожній ітерації брав чисту систему (зокрема Ubuntu Server), розгортав наш проект там і виконував тести.

Ми, мабуть, писали б сервіс CI з нуля, оскільки наша екосистема є досить незвичною. Питання: як ефективно забезпечити систему чистого шиферу для кожної ітерації CI?

Розгортання проекту встановлює декілька пакунків Debian, конфігурує кілька сайтів nginx, а також встановлює деякі пакунки в спеціалізованому для мови впровадження менеджері пакетів (LuaRocks), що використовується для всієї системи. Нічого більш нав'язливого, ніж це (я вважаю). Отже, важливіше вміти швидко встановлювати чистий шифер (протягом хвилини на сучасному обладнанні, швидше - краще), ніж забезпечувати абсолютну ізоляцію та чистоту.

Я бачу два способи зробити те, що нам потрібно:

  • Або встановити в'язницю якогось типу (наприклад, lxc, можливо).
  • Або встановити якусь віртуальну машину, яка може робити знімки, і використовувати їх.

Але на даний момент у мене недостатньо інформації, щоб прийняти рішення.

Що б ви порадили? Будь-які інші варіанти? Якісь конкретні назви інструментів?

Примітка: Служба CI буде запускатися всередині гостя Citrix XenServer. Платні рішення в порядку, якщо ціни розумні. (Зазвичай вони не розумні в цій галузі.) Віддалені рішення CI не в порядку.

Відповіді:


5

Погляньте на шеф-кухаря / бродягу . Не впевнений, чи буде це досить швидко, але на що слід звернути увагу.

Про всяк випадок, коли ви не знайомі з шеф-кухарем, це сервер, призначений для забезпечення простого кодування на сервері. Рекомендую переглянути одну з веб-трансляцій. Веб-трансляція Django Chef

Вагрант, вее, соло-шеф-кухар та соло-нож. Я думаю, що це стосується більшості того, що ви хочете робити.

Повідомлення про блог Vagrant Повідомлення в блозі, що показує швидке налаштування сервера за допомогою Vagrant.


Дякую. Чи хочете Ви надати більше деталей у своїй відповіді?
Олександр Гладиш

Я не використовував цього для цього, тому все, що я можу зробити, це опублікувати кілька посилань, які, на мою думку, повинні допомогти.
Філіп Тінні

13

Погляньте на Дженкінса . У ньому є плагіни, які дозволяють запускати збірки у віртуальних машинах у VMWare або VirtualBox або в хмарі Amazon / ecalyptus . Для віртуальних машин, що працюють в хмарі, ви можете вказати сценарій init, де ви могли б робити кроки, як встановлення пакетів.


Дякую, але Дженкінс - це CI-сервер, і я хотів би знати про способи побудувати його самі.
Олександр Гладиш

2
@AlexanderGladysh Чому ти хочеш винаходити колесо? Збірки Дженкінса можуть запускати все, починаючи з файлів, до звичайних скриптів оболонки, плюс він має надійний інтерфейс, чудову підтримку та безліч плагінів. Навіть якщо ваша збірка дуже складна, це має бути сценарій оболонки, куди можуть запускатись
jenkins

Навіть якщо ви не хочете користуватися Дженкінсом, я думаю, що щось на основі хмар було б для вас. Ви можете налаштувати зображення машини, щоб забезпечити потрібне програмне забезпечення, і лише додати конфігурацію та код для тестування при запуску примірника, щоб скоротити час запуску.
Ларс Коттофф

У будь-якому випадку, Дженкінс чи ні, Дженкінс, що використовувати для швидкого отримання знімків операційної системи OS? (Будь ласка, перестаньте згадувати сторонні хмари - це потрібно запускати на наших власних серверах.)
Олександр Гладиш,

Запустити хмару евкаліпта / OpenStack / ... на власних серверах?
Ларс Коттофф

2

Я б використовував інфраструктуру VM і створював базовий шаблон або використовував хмару, як запропонував @LarsKotthoff. Їх легко розкрутити швидко, і ви можете бути впевнені, з чого почали.

Однак вам в кінцевому підсумку знадобиться щось поза тим, що VM, щоб організувати те, що відбувається (налаштувати машину і розпочати будь-який процес на машині). Я хотів би поглянути на Дженкінса на його здатність збирати вихід сценаріїв для подальшого огляду.

Незважаючи на те, що Дженкінс почав працювати як сервер CI, численні організації, з якими я працював, зараз використовують його набагато більше, ніж це, але це справді інструмент для початку (вручну або за графіком) та отримання результатів, а також перевірки того, що сталося, як очікувалося. І це дуже гнучко.


Дякую, але я хотів би налаштувати речі безпосередньо в екземплярі Xen VM, а не зовні - це набагато простіше організувати в моєму конкретному випадку. Я загляну в Дженкінс, але все ще шукаю більш вузького рішення.
Олександр Гладиш

Також, будь ласка, докладно розкажіть про "використання VM-інфраструктури та створення базового шаблону".
Олександр Гладиш

2

Ми хочемо створити послугу безперервної інтеграції (CI) для нашого проекту. Ця служба CI повинна контролювати всі аспекти життя проекту, включаючи розгортання.

Дженкінс згадується досить багато. Ви можете розібратися з сценаріями, але Дженкінс забезпечить вам таку ж гнучкість і менше накладних витрат.

Тобто, ми хочемо, щоб агент CI на кожній ітерації брав чисту систему (зокрема Ubuntu Server), розгортав наш проект там і виконував тести.

Розгортання проекту встановлює декілька пакунків Debian, конфігурує кілька сайтів nginx, а також встановлює деякі пакунки в спеціалізованому для мови впровадження менеджері пакетів (LuaRocks), що використовується для всієї системи. Нічого більш нав'язливого, ніж це (я вважаю). Отже, важливіше вміти швидко встановлювати чистий шифер (протягом хвилини на сучасному обладнанні, швидше - краще), ніж забезпечувати абсолютну ізоляцію та чистоту.

Ось тут корисні зображення віртуальних машин. Ви можете налаштувати своє чисте зображення і змусити кожну машину запускати виделку. Оригінальне зображення ніколи не змінюється, але тестування не дізнається різниці. Ви, безумовно, повинні мати можливість отримати завантажувальне зображення, яке працює за хвилину.

Платні рішення в порядку, якщо ціни розумні. (Зазвичай вони не розумні в цій галузі.) Віддалені рішення CI не в порядку.

Якщо ви шукаєте запуск декількох машин одночасно, перегляньте Nimbula (мені безсоромно; я працюю на них). Для менших розгортань це безкоштовно і дозволяє вам зібрати вашу власну приватну хмару для тестування ... або що-небудь інше. Між Дженкінсом та файлом оркестрації ви можете розкручувати хост-сервери, тестові клієнти та все інше, щоб автоматично запускати повний спектр тестового коду без будь-якої взаємодії.


Тьфу. Можливо, сьогодні я повільний, але я спробував прокопати сайт Nimbula, але не можу побачити причину маркетингової розмови. Чи хочете ви вказати на здоровий текст, який описує, як робити те, що мені потрібно? (Тобто налаштовуйте шаблон для гостьової машини та, зі скрипту, створюйте копію та вбивайте її для кожного сеансу роботи CI.)
Олександр Гладиш,

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