Типовая сборка и деплой продуктов
в Positive Technologies
Александров Владислав
CI-инженер
План
• Проблемы в построении CI-процессов в компании
• Структура типовой сборки
• Пример реализации типовой сборки
• Плюсы и минусы от использования типовой сборки
Инструменты и сервисы
Сервисы DevOps в Positive Technologies
Сервисы DevOps для организации CI
Сообщество DevOpsHQ:github.com/devopshq
Continuous Integration всем и сразу
Проблемы
• Нет типового шаблона для создания сборочных, деплойныхи тестовых конфигураций
• Медленное создание типовых проектов в ContinuousIntegration системах
• Отсутствие механизмов масштабируемости проектов
Решения
• Создать структуру будущих сборок, позволяющую быстро расширять и изменять их
• Создать базовые шаблоны и метараннеры в TeamCity
• Создать автоматический генератор для TeamCityсборок в DevOps tools
Типовой проект в TeamCity
Что такое TeamCity и с чем его едят
Релизная схема сборок с продвижениями в TeamCity
Обобщенная трехуровневая иерархия проектов в TeamCity
Типовой интерфейс проектов в TeamCity
Метараннеры в TeamCity
Структура сборочного процесса в TeamCity
Автоматическая генерация конфигураций
Root meta-runners
Основные root meta-runners
• Deploy DevOps-tools — доставляет на сборочные агенты DevOps скрипты
• Build prepare — подготавливает окружение перед запуском сборочных метараннеров
• Linux build — запускает сборку с определенным компилятором под nix системы
• Windows build — запускает сборку с определенным компилятором под win системы
Build prepare: основные шаги
• Определение версии (major, minor, patch)
• Подготовка переменных для сборочных метараннеров
• Обновление информации о сборке в UI TeamCity
• Обновление build-счетчика
• Создание файлов с чувствительной информацией
• Перемещение исходников в рабочую директорию
Windows/Linux build: основные шаги
• Подготовка переменных окружения
• Запуск сборочного скрипта (build-on-server)
• Создание архива для выкладки
• Выкладка финального архива и/или дополнительных компонентов
Скрипты автоматической сборки
Скрипт сборки (build-on-server)
TeamCity агенты
Windows
• Администрирование командой DevOps
• Изменение окружения только командой DevOps
• Выделенные пулы для команд
Linux
• Администрирование командой DevOps
• Запуск сборок в Dockerконтейнерах
• Docker контейнеры поддерживаются разработчиками
• Единый Linux пул
Что получилось
Плюсы
• Типизированный процесс сборок
• Узловые метараннеры и шаблоны
• Структура всех компонент в коде
• Новый проект? Легко!
Минусы
• Ограниченная гибкость изменений конфигураций
• Сборочные шаги контролируются только DevOps
• Изменения окружения практически не обратимы
• Одна сборочная конфигурация для всех веток подпроекта
Что дальше
Дальше — больше
• Передать управление шагами сборки в команды
• Версионирование Docker образов
• Создать единый Windows пул
• Автоматизация и еще раз автоматизация