Идея доклада — рассказать об использовании Jenkins как не типичного инструмента для построения распределенной сборки продукта, зарабатывающего миллионы долларов. Мы поделимся секретами его адаптации под сборку билдов сложных систем/продуктов с многими компонентами и ускорения в разы этой задачи.
Наша проблема: линейная сборка продукта занимает 8 часов. А Jenkins «из коробки» не умеет собирать сложные иерархии. При этом писать код самостоятельно не хочется. В итоге мы придумали, как использовать существующий инструмент, пройдясь по нему напильником.
Кому будет интересно: Эти знания могут помочь людям, которые хотят построить эффективный CI, но не хотят тратить много времени на исследования.
Мы выложим наш код и материалы на GitHub. Это будет довольно практично.
Лайфхаки:
Используем Build Flow + Groovy скрипты чтобы оркестрировать сложную иерархию с параллельными ветвями и собирать результаты
Правильное использование префиксов в названиях job-ов помогают автоматизировать группировку по бранчам
Переиспользуем окружения сборки много раз, не удаляя их
Предыдущий пункт в итоге оставляет за собой кучу мусора, которую мы периодически очищаем при помощи системных Groovy скриптов по job префиксу
Группировка большого количества job-ов в проекты и бранчи с использованием Nested View
Дамп и разворачивание job-ов из системы контроля версий по шаблону
Ну и взгляд в будущее: автоматический анализ билд проблем.
http://2014.404fest.ru/reports/jenkins/
17. очень просто:
• Около 1000 плагинов, на любой вкус
• Можно быстро начать (важно!)
• Подходит даже для не-инженеров
• Качественное внутреннее устройство
26. разворачивание из git
• Поймите, из каких частей состоит проект
• Идентифицируйте общие параметры
• Сделайте простой шаблонизатор
• Воспользуйтесь Jenkins API
27. придумайте структуру
• Jenkins бывает чересчур гибким
• Без правил ваш проект превратится в кашу
• Пример — именование билд задач
28. Используйте BuildFlow
• Это такой плагин для Jenkins
• Сделан для управления группой задач
• Позволяет собирать части проекта параллельно
30. релиз менеджмент
• Напишите себе скрипты для создания релизов
• И запускайте их из Jenkins, по “кнопке”
• Используете Artifactory? У нас есть готовый код!
31. скрипты очистки
• Не пренебрегайте “системными скриптами”!
• На Groovy можно “подкостылить” без плагина
• Например, очистку диска из-под сложных проектов
35. попробуйте Vagrant
• Мало кто знает, но его можно “звать” из Jenkins
• Мы так тестируем свой сайт
36. делитесь опытом
• По Jenkins почти не пишут книг
• Ваша лучшая ставка — сообщество
• Пишите нам :)
• Ну или читайте советы гуру. Например, Rackspace