moscow atlassian meetup. «Как мы растили-растили, и наконец...
TRANSCRIPT
Какмырастили-растили,инаконецвырастилибамбуковуюферму
СтасДашковскийEngineer, DevOps Tooling, AlignTechnology
Несколькословонашейкомпании• Компанияпредоставляетинновационныйспособисправленияприкуса• Многоспецифических(внутриполостныесканеры,моделированиеортодонтических операций,ПОстанков)инеспецифических(CRM,биллинг,промо-сайты)продуктов• Многоразличных:• проектов• технологий(C++,C#,Java,Ruby,iOS)• Тестов
• Многоwindows• Специфическиетребованияотгосрегуляторов (FDA идругие),втомчислекQAи CI
КраткооBambooдлятех,ктонезнает• Bamboo– этосерверCI,оркестраторбилд-серверов• Кголовномусерверуподключаютсямашины,накоторыхивыполняютсязадачи(компиляция,сборка,тесты)- агенты• Единицасборки– план.Планописываетсборкуодногопродукта(илиегочасти)• Плансостоитизстадий(stages),выполняемыхпоследовательно• Стадиисостоятизработ(jobs),выполняемыхвнутристадиипараллельно.Каждаяработа– насвоемагенте.• Работа– наборпоследовательныхопераций(выкачатьисходники,запуститьскрипт,скачатьфайлит.п)
ОбщаяконфигурацияBamboo• Используемужеболее4хлет• Выбралииз-заинтеграциисJIRAиFisheye• 90+агентов• ПоловинаагентоввКалифорнии,половинавМоскве• АртефактыхранятсяпрямонасервереBamboo• БазанаMySQL• Используемдлясборки,деплоя,запускатестов,сборастатистики• Учимсянасвоихошибках
СтатистикасборокзаIIIквартал2015
Упавших(втомчислетесты) 16674
Успешных 25785
Зависло 1178
Активных планов 673
0
10
20
30
40
50
60
70
80
90
100
2012 2013 2014 2015
Количествосборочных агентов
Маленькиепроблемыбольшойbamboo
• ssh-proxy– непролезаютбольшиерепозитории (5Gb+)• Использованиесобственныхскриптов
• Ограниченнаяфункциональностьпосборкеизветок• Параметризациявнутрисборочныхскриптов
• Сложностьвзаимодействиявнутрисборкимеждуработами• Использованиефайловиартефактов,стороннихсервисовключ-значение
• ОграниченныйAPI• Лезьтепрямовбазу• Ставьтеплагины
Большиепроблемыбольшойфермы
• >40параллельныхбилдов,>70remoteагентов– странныеэффекты (пословамразработчиковbamboo– виноватаActiveMQ)• Пропажалоговиартефактов• Неконсистентность билдов• Недоступностьагентов
• Растуттребованияксерверу• Cложноадминистрироватьcapability
Неповторяйтенашихошибок
• Большиелоги складыватьвфайлы,аневыводитьвконсоль• Использоватьменеджментартефактовнабазеотдельныхрешений• УправлятьфермойагентовприпомощиCM-системы(chef,ansible,etc)дажедлянебольшойфермы.Иначеониоченьбыстровыходятиз-подконтроля
• Процедурусборки— вкод,иверсионировать вместескодом• Правадоступаинотификацииназначатьчерезгруппы
Атеперьпарочкаисторийпронашиподелки,которыекажутсянаминтересными.
ИнтеграциясJIRA«Обратный»релизверсии– избилда вJIRAРазработчикпереводиттикет взаданныйстатуссверсией1.0.0.next_build.1. Билд успешнопрошел,запускаемнашскриптпоследнимшагом2. Ищемверсию“nextbuild”вJIRA-проекте,например1.0.0.next_build3. Переименовываемеевнеобходимую(например1.0.0.2).Втикетах она
тожепереименуется.4. Еслинадо,торелизим илиархивируемпредыдущую(1.0.0.1)5. Создаемновуюверсию1.0.0.next_build6. Смотримтикеты,которыебылипереведенывстатусужепосленачала
билда,ипроставляемимтолькочтосозданнуюверсию1.0.0.next_build7. Переводимтикеты сверсией1.0.0.2взаданныйстатус
ТестынаbambooСамовосстанавливающиесятестовыесреды
Stage1:ПоисквыключеннойVMизсписка
ОткаткзаданномуснапшотуВключениеВМ
VSphere
Stage2:Можетзапуститьсятольконамашинеиз
спискаЗапускаеттесты
ВыключаетмашинуеслиОК
ТестоваяVM
Тестынаbamboo:Callbackизтестовойсистемы
ЗапусктестовФормируетсяjson сзаданием,исходяизпараметровзапуска,втомчислеurl manualstage
КластертестовойсистемыЗапускаеттесты
Поокончанииpost-запросксерверуbambooдлязапускаmanualstage
“ManualStage”:Сборданныхотестах,
визуализация,нотификация
Спасибо!Задавайтевашивопросы[email protected] - пишитемнеwww.invisalign.com - сайтнашейкомпании