Page cover image

CI/CD

Непрерывная интеграция (CI, англ. Continuous Integration) — практика разработки программного обеспечения, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки (до нескольких раз в день) и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счёт наиболее раннего обнаружения и устранения ошибок и противоречий, но основным преимуществом является сокращение стоимости исправления дефекта, за счёт раннего его выявления.

Зачем автоматизировать процесс разработки?

Все повторяющие действия необходимо автоматизировать. Бессмысленно тратить время на то, что может выполняться автоматически.

В общем случае автоматизация затрагивает любую разработку, независимо от платформы, языка программирования, фреймворка и размера команды разработчиков.

Основные преимущества:

  • экономия времени и как следствие человеко-часов

  • уверенность в своем коде

  • наличие актуального билда каждый день (daily / night build)

  • быстрое обнаружение ошибок и моментальный фикс, а не фикс при релизе

  • автоматическое оповещение всех членов команды о состоянии проекта

  • независимость от пользовательского интерфейса программы

  • отделение процесса разработки от сборки (вы не блокируете собственную работу, когда идет сборка)

  • сосредоточенность именно на написании кода, а не на инфраструктуре

  • наличие статистики: время сборки, тестовое покрытие и т.д.

Модельная утрированная ситуация:

Вы разрабатываете кроссплатформенный, многопользовательский проект под Win, Linux и допустим IOS. И также у вас собственная, кастомная версия движка. Два раза в день вам необходимо иметь стабильную сборку под каждую платформу, что в общем случае означает:

  • компиляция исходников UE

  • компиляция под все платформы клиентов

  • компиляция сервера

  • запуск тестов

  • деплой (загрузка) сервера в облако

  • возможно деплой на подключенные IOS девайсы (последние три модели iPhone и iPad, например)

  • оповещение всех мануальных тестеров и разработчиков, что билд готов (slack, почта) и отправка ссылок на все созданные билды

Теперь представьте, что это все делает вручную человек через пользовательский интерфейс и сколько это займет времени. А если он ошибется в "скрипте" сборки?

На рынке имеется достаточно много решений для настройки пайплайнов CI/CD. В учебных курсах я использую бесплатный сервер непрерывной интеграции Jenkins.

Подробная информация имеется в курсе по тестированию.

Ссылки

Last updated

Was this helpful?