CI/CD
Непрерывная интеграция (CI, англ. Continuous Integration) — практика разработки программного обеспечения, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки (до нескольких раз в день) и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счёт наиболее раннего обнаружения и устранения ошибок и противоречий, но основным преимуществом является сокращение стоимости исправления дефекта, за счёт раннего его выявления.
Зачем автоматизировать процесс разработки?
Все повторяющие действия необходимо автоматизировать. Бессмысленно тратить время на то, что может выполняться автоматически.
В общем случае автоматизация затрагивает любую разработку, независимо от платформы, языка программирования, фреймворка и размера команды разработчиков.
Основные преимущества:
экономия времени и как следствие человеко-часов
уверенность в своем коде
наличие актуального билда каждый день (daily / night build)
быстрое обнаружение ошибок и моментальный фикс, а не фикс при релизе
автоматическое оповещение всех членов команды о состоянии проекта
независимость от пользовательского интерфейса программы
отделение процесса разработки от сборки (вы не блокируете собственную работу, когда идет сборка)
сосредоточенность именно на написании кода, а не на инфраструктуре
наличие статистики: время сборки, тестовое покрытие и т.д.
Модельная утрированная ситуация:
Вы разрабатываете кроссплатформенный, многопользовательский проект под Win, Linux и допустим IOS. И также у вас собственная, кастомная версия движка. Два раза в день вам необходимо иметь стабильную сборку под каждую платформу, что в общем случае означает:
компиляция исходников UE
компиляция под все платформы клиентов
компиляция сервера
запуск тестов
деплой (загрузка) сервера в облако
возможно деплой на подключенные IOS девайсы (последние три модели iPhone и iPad, например)
оповещение всех мануальных тестеров и разработчиков, что билд готов (slack, почта) и отправка ссылок на все созданные билды
Теперь представьте, что это все делает вручную человек через пользовательский интерфейс и сколько это займет времени. А если он ошибется в "скрипте" сборки?
На рынке имеется достаточно много решений для настройки пайплайнов CI/CD. В учебных курсах я использую бесплатный сервер непрерывной интеграции Jenkins.
Подробная информация имеется в курсе по тестированию.
Ссылки
Last updated
Was this helpful?