Налаштування CI/CD конвеєра в Bamboo з Atlassian стеком

Ручні релізи з'їдають час команди й перетворюють випуск на лотерею: збірка залежить від того, хто її запускав. Ми налаштовуємо Bamboo під ключ — конвеєр збірки, перевірок і розгортання, який скорочує підготовку релізу в рази. Обговоримо ваше завдання й повернемося з планом та оцінкою.
Часті запитання

Чому ручна збірка ламає релізи: коли потрібне налаштування Bamboo

Ручна збірка релізів тримається на пам'яті та домовленостях. Поки випуск один на два тижні, інженер збирає гілку, проганяє тести локально і копіює артефакт на стенд.

Як тільки релізів стає більше або в команду приходить другий розробник, крок «зібрати як минулого разу» перетворюється на лотерею: у кожного своя версія залежностей, свої змінні та свій порядок команд.

Невідтворювана збірка — головне джерело тихих дефектів. Артефакт з машини розробника та артефакт з промислового контуру відрізняються складом залежностей і параметрами збірки, тому баг «відтворюється тільки на проді» — не містика, а наслідок різних вхідних умов.

Розсинхронізація оточень додає другу половину: конфігурації тестового та бойового контурів правляться руками і розходяться за лічені тижні.

Окремий ризик — релізи, які тримаються на одній людині. Доступи, скрипти розгортання та порядок відкату живуть в його голові та локальній папці, а не в репозиторії.

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

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

Тоді й потрібне налаштування Bamboo в зв'язці з рештою екосистеми Atlassian: збірка, перевірки та викладка описуються декларативно і виконуються однаково на будь-якому стенді. Розбираємо, як це закривається.

Що дає конвеєр збірки: відтворюваність, швидкість, менше збоїв

Єдиний конвеєр збірки прибирає головну причину розбіжностей — різні оточення у розробника, на складальному агенті та на сервері. Залежності фіксуються файлом-манифестом, кроки описані кодом, агенти піднімаються в ізольованому оточенні та після прогону знищуються.

Один і той самий коміт дає один і той самий артефакт незалежно від того, хто і коли запустив збірку — «у мене локально працює» перестає бути аргументом.

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

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

Частка відкатів релізу падає за рахунок того, що йде цілий клас помилок — забуті міграції, розбіжності конфігурацій, кроки, які робилися руками і «зазвичай працювали».

Простій через збій збірки перестає бути сюрпризом: конвеєр падає на коміті з зрозумілою причиною, а не в робочому контурі вночі, і відкат на попередній артефакт залишається доступним в один крок.

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

Варіанти запуску збірок: виділені агенти, хмара, контейнери

Режим роботи агентів задає, де виконується збірка і наскільки відтворюваний результат. У Bamboo це описується вимогами завдання та можливостями вузла: планувальник віддає збірку лише тому агенту, чий набір збігається. Звідси чотири схеми, між якими реально обирають.

Варіант Коли підходить Обмеження
Виділені агенти збірки на власних потужностях Рівний потік збірок, доступ до внутрішньої мережі та закритих репозиторіїв Простій між завданнями, оновлення та масштабування вручну, вузол стає точкою відмови
Агенти на вимогу в хмарі Рване навантаження, паралельні гілки, рідкісні важкі перевірки Довгий старт вузла, кеш залежностей прогрівається заново кожну збірку
Ізольовані оточення збірки в контейнерах Результат має збігатися на машині розробника та на агенті Образ під кожну технологію, кеші переносяться окремо, частина операцій вимагає розширених прав
Гібридний режим релізу Перевірки йдуть паралельно, а випуск — за ручним підтвердженням з довіреного вузла Випуск довший, права та секрети синхронізуються між режимами

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

Етапи налаштування Bamboo: від аудиту репозиторіїв до передачі

Порядок робіт у Bamboo однаковий для будь-якого репозиторію — змінюється обсяг, а не послідовність. Починаємо з аудиту: без нього автоматизація просто переносить усередину конвеєра ті самі приховані припущення, що живуть у ручних збірках на машинах розробників.

  1. Аудит репозиторіїв і поточних складальних сценаріїв. Дивимося, що збирається вручну і чому, де лежать залежності та секрети, які гілки дійсно живі, скільки часу займає збірка зараз.
  2. Проєктування схеми конвеєра збірки. Розбиваємо процес на кроки: компіляція, тести, статичний аналіз, публікація артефакту, викладка на оточення. Фіксуємо, що запускається на кожен коміт, а що лише за тегом версії.
  3. Налаштування агентів і планів збірки. Розгортаємо агенти під потрібні платформи та обмежуємо паралелізм, щоб важка збірка не витісняла інші завдання. Спільні кроки виносимо в шаблони — новий сервіс підключається правкою змінних, а не копіюванням скриптів.
  4. Перевірка на пілотній гілці релізу. Проганяємо весь конвеєр на одному сервісі: заміряємо час збірки, частку успішних запусків, поведінку при падінні тестів. Окремо перевіряємо відкат на попередній артефакт.
  5. Навчання команди. Показуємо розробникам, де дивитися логи, як додати крок у план і як перезапустити лише частину, що впала, замість усієї збірки.
  6. Передача документації. Схема конвеєра, опис змінних і доступів, інструкція з правки планів, порядок дій при збої збірки.

Пакет передачі: конфігурації планів, схеми оточень, регламенти

Після налаштування Bamboo у команди залишається не набір налаштувань у листуванні і не один інженер, який «знає, де натиснути», а версіонований комплект артефактів.

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

  • Конфігурація планів збірки — опис планів і зв'язків між ними у файлах репозиторію: кроки, умови запуску, залежності. Значення, що різняться між середовищами, винесені у змінні, секрети — у зовнішнє сховище, а не в текст конфігурації.
  • Матриця агентів та їхніх потужностей — який клас завдань іде на спільних виконавцях, який на виділених, як розставлені мітки. Це знімає конкуренцію між збіркою та викладкою: реліз не чекає, поки звільниться агент під важкі тести.
  • Схема оточень і потоків релізу — ланцюжок від середовища розробки до продуктивного, тригери переходу та ручні точки підтвердження. Зібраний артефакт просувається між середовищами без перезбірки, тому в продуктив іде рівно те, що пройшло перевірки.
  • Правила розмежування доступів — ролі: кому доступний запуск, кому правка конфігурації плану, хто підтверджує викладку в продуктив. Узгоджуються з правами в репозиторіях і системі завдань, щоб не залишилося обхідного шляху в обхід процесу.
  • Регламент відкату релізу — який артефакт береться для повернення, хто приймає рішення, за скільки хвилин середовище повертається в робочий стан. Відкат змін схеми даних розписаний окремим сценарієм, бо він не зводиться до повернення попередньої збірки.
  • Інструкції для чергового інженера — типові збої: недоступний агент, впали перевірки, викладка зависла в очікуванні. На кожен — порядок дій, спосіб діагностики та точка ескалації.
  • Регламент супроводу — термін життя артефактів і історії збірок, періодичне оновлення базових оточень агентів і перегляд планів при зміні складу сервісів.

Кейс: перехід з ручних релізів на конвеєр — метрики до і після

Як було до

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

На випуск йшло 3–4 години в нічному вікні, а причина збою з'ясовувалася вже після того, як помилку побачили користувачі.

Що змінили і що отримали

Зібрали конвеєр у Atlassian Bamboo: збірка, тести, публікація артефактів версіонованим номером, розгортання за оточеннями — однією послідовністю пов'язаних завдань. Гілка розробки перевіряється на кожній зміні, а в прод іде лише збірка, що пройшла перевірки повністю.

Відкат зробили таким самим кроком конвеєра: повернення на попередній артефакт і відкат схеми бази однією командою, без ручних правок на серверах. Якщо перевірки після розгортання не проходять, конвеєр зупиняє випуск сам і повертає попередній стан.

Час збірки релізної версії скоротився з 3–4 годин до 20–25 хвилин. Кількість відкатів впала з чотирьох на десять випусків до одиниці на двадцять — більшість дефектів ловиться на перевірках, до потрапляння на прод.

Час відновлення після збою знизився з двох-трьох годин до 10–15 хвилин: відкат перестав бути аварійною операцією під тиском.

Окремий ефект — передбачуваність: реліз більше не залежить від однієї людини і від нічного вікна, а журнал збірки зберігає, хто і що змінив. Нові кроки — перевірки безпеки, сповіщення — додавали без переписування процесу.

Що робити, якщо частина збірок вже налаштована в іншому інструменті?

Частина проєктів вже збирається в іншому інструменті — це робоча ситуація, а не проблема. Переписувати все одразу ризиковано: релізи йдуть своїм ходом, і зупинка складальної лінії одразу б'є по строках. Тому ми не переносимо все відразу, а спочатку вибудовуємо співіснування двох контурів.

Починаємо з інвентаризації: які завдання та тригери є у кожного проєкту, звідки беруться артефакти, хто і як отримує сповіщення про збірку.

За цією картиною видно, які сценарії переносяться один в один, а які потребують переробки — найчастіше розбіжності в змінних оточення та кроках публікації артефактів.

Поки один проєкт живе в старому інструменті, другий уже збирається в Bamboo: обидва пишуть артефакти в один реєстр і запускаються за подіями в системі контролю версій.

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

Єдина точка випуску збирається поступово: версії, журнали збірок, права та оповіщення дивимося в одному місці, навіть якщо виконання йде в двох системах. Замовник бачить один список випусків і один статус по кожному сервісу замість двох неузгоджених картин. Це ж знімає питання, хто і коли вносив правку в складальний сценарій.

Поетапна міграція конвеєра йде за ризиком: спочатку некритичні сервіси та нічні збірки, потім релізні гілки, в кінці — те, що пов'язано з бойовим контуром. Кожен крок оборотний: попередній сценарій залишається робочим, поки новий не відпрацює кілька релізів підряд. Налаштування Bamboo в такому режимі не вимагає зупинки поточних релізів.

Часті технічні питання: агенти, доступи, міграція збірок

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

План прив'язується до потрібного пулу через вимоги, тому чужа збірка не займе агент, що звільнився, і не побачить змінні сусідньої команди.

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

Збірки різних команд на спільних агентах не заважають одна одній?

Розводимо агентів за пулами та вимогами: платформна і продуктова команди працюють на своїх наборах можливостей, паралельні завдання не витісняють одне одного.

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

Як видаються доступи до оточень?

Права на розгортання прив'язані до оточення та ролі: розробник збирає артефакт, але викладку в продуктив виконує узгоджене коло. Ротація облікових даних не потребує правки планів — змінюється значення в сховищі.

Що робити з існуючими планами збірки?

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

Хто супроводжує конвеєр після передачі?

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

Обговоримо задачу: подивимося ваші збірки і повернемося з планом

Щоб оцінка спиралася на факти, а не на припущення, починаємо з розбору поточного процесу. Дивимося, як влаштовані плани збірки в Bamboo, скільки агентів задіяно, як репозиторії пов'язані з трекером завдань і в який момент код потрапляє в цільове оточення.

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

На розборі уточнюємо те, що неможливо побачити з конфігурацій:

  • які гілки і як потрапляють у збірку, де зараз рветься конвеєр і чому;
  • скільки кроків автоматизації не вистачає — від перевірок до викладки;
  • які оточення є і чим відрізняються, де потрібні ручні підтвердження;
  • як влаштовані доступи, ролі та зберігання секретів, хто і що може змінювати;
  • як формуються артефакти, нумеруються версії і виконується відкат;
  • які обмеження задає інфраструктура — мережа, агенти, ліміти зовнішніх систем;
  • що вже налаштовано і перевикористовується, а що доведеться будувати з нуля.

За підсумками розбору повертаємося з планом впровадження конвеєра: етапи, порядок робіт, зони відповідальності та оцінка трудовитрат з автоматизації. План узгоджуємо до старту — ви заздалегідь бачите, що зміниться на кожному етапі і як це вплине на поточні релізи. Опишіть задачу і надішліть доступи до конфігурацій — повернемося з оцінкою та схемою робіт.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139