moscow atlassian meetup. «Как мы растили-растили, и наконец...

12
Как мы растили-растили, и наконец вырастили бамбуковую ферму Стас Дашковский Engineer, DevOps Tooling, Align Technology

Upload: mailru-group

Post on 21-Jan-2017

611 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Какмырастили-растили,инаконецвырастилибамбуковуюферму

СтасДашковскийEngineer, DevOps Tooling, AlignTechnology

Page 2: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Несколькословонашейкомпании• Компанияпредоставляетинновационныйспособисправленияприкуса• Многоспецифических(внутриполостныесканеры,моделированиеортодонтических операций,ПОстанков)инеспецифических(CRM,биллинг,промо-сайты)продуктов• Многоразличных:• проектов• технологий(C++,C#,Java,Ruby,iOS)• Тестов

• Многоwindows• Специфическиетребованияотгосрегуляторов (FDA идругие),втомчислекQAи CI

Page 3: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

КраткооBambooдлятех,ктонезнает• Bamboo– этосерверCI,оркестраторбилд-серверов• Кголовномусерверуподключаютсямашины,накоторыхивыполняютсязадачи(компиляция,сборка,тесты)- агенты• Единицасборки– план.Планописываетсборкуодногопродукта(илиегочасти)• Плансостоитизстадий(stages),выполняемыхпоследовательно• Стадиисостоятизработ(jobs),выполняемыхвнутристадиипараллельно.Каждаяработа– насвоемагенте.• Работа– наборпоследовательныхопераций(выкачатьисходники,запуститьскрипт,скачатьфайлит.п)

Page 4: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Общаяконфигурация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

Количествосборочных агентов

Page 5: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Маленькиепроблемыбольшойbamboo

• ssh-proxy– непролезаютбольшиерепозитории (5Gb+)• Использованиесобственныхскриптов

• Ограниченнаяфункциональностьпосборкеизветок• Параметризациявнутрисборочныхскриптов

• Сложностьвзаимодействиявнутрисборкимеждуработами• Использованиефайловиартефактов,стороннихсервисовключ-значение

• ОграниченныйAPI• Лезьтепрямовбазу• Ставьтеплагины

Page 6: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Большиепроблемыбольшойфермы

• >40параллельныхбилдов,>70remoteагентов– странныеэффекты (пословамразработчиковbamboo– виноватаActiveMQ)• Пропажалоговиартефактов• Неконсистентность билдов• Недоступностьагентов

• Растуттребованияксерверу• Cложноадминистрироватьcapability

Page 7: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Неповторяйтенашихошибок

• Большиелоги складыватьвфайлы,аневыводитьвконсоль• Использоватьменеджментартефактовнабазеотдельныхрешений• УправлятьфермойагентовприпомощиCM-системы(chef,ansible,etc)дажедлянебольшойфермы.Иначеониоченьбыстровыходятиз-подконтроля

• Процедурусборки— вкод,иверсионировать вместескодом• Правадоступаинотификацииназначатьчерезгруппы

Page 8: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Атеперьпарочкаисторийпронашиподелки,которыекажутсянаминтересными.

Page 9: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Интеграцияс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взаданныйстатус

Page 10: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

ТестынаbambooСамовосстанавливающиесятестовыесреды

Stage1:ПоисквыключеннойVMизсписка

ОткаткзаданномуснапшотуВключениеВМ

VSphere

Stage2:Можетзапуститьсятольконамашинеиз

спискаЗапускаеттесты

ВыключаетмашинуеслиОК

ТестоваяVM

Page 11: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Тестынаbamboo:Callbackизтестовойсистемы

ЗапусктестовФормируетсяjson сзаданием,исходяизпараметровзапуска,втомчислеurl manualstage

КластертестовойсистемыЗапускаеттесты

Поокончанииpost-запросксерверуbambooдлязапускаmanualstage

“ManualStage”:Сборданныхотестах,

визуализация,нотификация

Page 12: Moscow Atlassian Meetup. «Как мы растили-растили, и наконец вырастили бамбуковую ферму» Стас Дашковский, Engineer,

Спасибо!Задавайтевашивопросы[email protected] - пишитемнеwww.invisalign.com - сайтнашейкомпании