Что такое непрерывная интеграция?
Непрерывная интеграция – это практика разработки программного обеспечения DevOps, при которой разработчики регулярно объединяют изменения программного кода в центральном депозитарии, после чего автоматически выполняется сборка и тестирование. Непрерывная интеграция чаще всего относится к этапу сборки или интеграции в процессе выпуска программного обеспечения и подразумевает как компонент автоматизации (например, CI или сервис сборки), так и культурный компонент (например, обучение частой интеграции). Главная задача непрерывной интеграции – быстрее находить и исправлять ошибки, улучшать качество ПО и сокращать временные затраты на проверку и выпуск обновлений ПО.
Зачем нужна непрерывная интеграция?
Раньше разработчики одной команды могли в течение долгого времени работать изолированно и объединяли свои изменения с основной частью проекта только по завершении собственной работы. Это делало слияние кода сложной и трудоемкой задачей, к тому же ошибки накапливались и не исправлялись в течение долгого времени. Такие факторы затрудняли быструю доставку обновлений пользователям.
Как работает непрерывная интеграция?
При непрерывной интеграции разработчики часто подтверждают записи в совместно используемый репозиторий, используя систему контроля версий, например Git. Перед каждым подтверждением записи разработчики могут запускать локальные модульные тесты программного кода в качестве дополнительного уровня проверки перед интеграцией. Сервис непрерывной интеграции автоматически выполняет сборку и запуск модульных тестов для изменений кода, что позволяет моментально выявлять ошибки.

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

«IT-специалист с нуля» наш лучший курс для старта в IT
Принципы CI/CD
Концепция непрерывной интеграции и развертывания относится к agile-методологиям разработки программного обеспечения. Ее основная цель — уделение достаточного внимания бизнес-требованиям, безопасности и качеству кода конечного продукта. В рамках подхода решаются следующие задачи:
- автоматизация последовательной сборки, упаковки и тестирования программных продуктов;
- автоматизация развертывания приложения в различных окружениях;
- минимизация ошибок и уязвимостей программного продукта.
Разработка по методике CI/CD соответствует таким основным принципам:
- Распределение ответственности. Задачи и этапы разработки разделяются между членами команды или ее подгруппами (при работе над большим проектом). Рабочий процесс организуется с учетом бизнес-логистики, внедрения сквозных функций, проведения тестов, безопасности хранения данных и т.д.
- Сокращение рисков. Каждый разработчик или подгруппа разработчиков должны стремиться минимизировать уязвимости и ошибки на всех этапах разработки. Для этого постоянно контролируется бизнес-логистика, проводится пользовательское тестирование продукта, оптимизируется хранение, обработка данных и т.д.
- Оптимизация обратной связи. Успех проекта зависит от того, как работают друг с другом разработчики, клиенты и пользователи. Это влияет на скорость внесения в приложение корректировок и обновлений. Если сборку и тестирование можно автоматизировать, то во многих других операциях требуется участие человека. Чтобы взаимодействие происходило конструктивнее, уменьшается количество посредников между заказчиком, исполнителями и пользователями.
- Создание рабочей среды. Для удобства совместной работы у разработчиков должно быть общее рабочее пространство. Помимо основной ветки процесса в нем должна быть побочная – в ней удобнее проводить тестирование, вносить корректировки, отслеживать отказоустойчивость и т.д.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

СI/CD представляет собой современную аналогию конвейерного производства. Их объединяют четкое распределение труда, непрерывный, потоковый характер рабочего процесса, параллельное выполнение сразу нескольких задач (например, кодинга и тестирования). Сегодня эта концепция является доминирующей в DevOps.
Читайте также Как выбрать IT-специальность в новых реалиях?
Этапы CI/CD
Написание кода. Каждый разработчик создает код отведенного ему модуля и тестирует его в ручном режиме. Затем разработанный и проверенный программный блок интегрируется в основной ветке с текущей версией продукта. Как только все модули будут опубликованы в главной ветке, команда переходит к следующему этапу.
Сборка. Заранее подобранная система контроля версий запускает автоматизированную сборку и тестирование всего продукта. Триггеры могут быть настроены автоматически или вручную. Автоматическая сборка выполняется с помощью Jenkins или другого сервера непрерывной интеграции.
Ручное тестирование. Как только CI-сервер закончит автоматизированную сборку продукта, он передается тестировщикам на проверку. Они используют различные методики тестирования для выявления и устранения ошибок и уязвимостей программы.
Релиз. После исправления ошибок вычищенный и отлаженный код переходит на этап релиза для клиентов. Его проверяет заказчик, возможно, с привлечением своих специалистов или ограниченной группы пользователей. По результатам проверки код отправляется на доработку или согласуется.
Развертывание. Текущая версия программы размещается на продакшн-серверах разработчика. Заказчик может работать с программой, исследовать ее функции, искать уязвимости.
Поддержка и отслеживание. После развертывания приложение становится доступным конечным пользователям. Параллельно этому разработчики выполняют его поддержку и одновременно мониторят реакцию пользователей, анализируют их опыт взаимодействия с программой.
Планирование. На основании данных, полученных при изучении пользовательского опыта, разработчик подготавливает план доработок, включающий новые функции, исправление ошибок и т.д. После этого он вносит все корректировки в продукт — и цикл разработки начинается снова.
Таким образом, рабочий процесс по методологии CI/CD включает как последовательные, так и параллельные этапы. Именно для распараллеливания в рабочем пространстве создается побочная ветка — в ней проще вести работу, не вмешиваясь в основной код до тех пор, пока программируемый модуль не будет готов к интеграции. Условно рабочий процесс по методологии CI/CD можно представить в виде следующей схемы:

Преимущества CI/CD
- Сокращение сроков разработки. Методология уменьшает время доработок до нескольких дней, в сложных проектах — недель. Это позволяет разработчикам быстрее тестировать и опробовать нововведения, а затем внедрять их в продукт раньше конкурентов.
- Отбор перспективных вариантов. Быстрое тестирование и большое количество итераций позволяют разработчику вовремя отсеивать бесперспективные варианты кода на начальных этапах. Это также способствует экономичному расходованию времени и ресурсов без их распыления на тупиковые направления.
- Качество тестирования. Сочетание ручной и автоматизированной проверки позволяет выявлять ошибки на ранних этапах разработки. Это снижает вероятность их накопления на этапе релиза, что еще больше сокращает время работы над проектом.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Недостатки CI/CD
- Высокие требования к опыту. Рабочий процесс в любой компании можно перевести на методологию CI/CD. Однако это требует от разработчиков как знания самой концепции на практическом уровне, так и умения быстро реорганизовать процессы в самой организации. Иными словами, CI/CD имеет достаточно большой порог вхождения в сравнении со многими традиционными методологиями.
- Сложность постоянного взаимодействия. Непрерывная интеграция и доставка программного продукта требуют от разработчиков высокой скоординированности действий. На практике это означает, что должно быть отдельное лицо, которое занимается организацией рабочего процесса и налаживанием взаимодействия между членами команды.
Инструменты для CI/CD
Так как непрерывная интеграция и развертывание подразумевает автоматизацию многих процессов в ходе разработки, для этого созданы различные программные инструменты и сервисы:
- GitLab. Эта платформа позволяет управлять хранилищами проекта, документировать результаты тестирования и доработок, анализировать и дополнять функциональность проекта, выявлять и устранять ошибки.
- Docker. СD-система, позволяющая контейнеризировать проект, то есть упаковать его со всем окружением и зависимостями.
- Travis-CI. Сервер, который можно подключать к виртуальным репозиториям GitHub с минимальными настройками. Благодаря использованию облачных технологий его не нужно отдельно устанавливать.
- Jenkins. Один из самый популярных DevOps-инструментов, совместимый со всевозможными плагинами для адаптации под различные проекты и задачи.
- PHP Censor. CI-сервер, автоматизирующий сборку PHP-проектов. Может работать с репозиториями GitLab, Mercurial и другими, с библиотеками для тестирования Atoum, PHP Spec, Behat.
Возможность оперативно вносить изменения, постоянно тестировать и дорабатывать продукт, взаимодействовать не только друг с другом, но и с клиентом — вот что делает концепцию CI/CD популярной среди разработчиков. Сегодня ее понимание и практическое освоение являются важной рекомендацией при разработке как крупных, так и небольших проектов.
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Статьи по теме:
Continuous Integration (CI) — Непрерывная Интеграция
Непрерывная Интеграция — это часть Конвейера Непрерывной Поставки, процесс разработки, тестирования, интеграции и проверки, после которого они готовы к развертыванию и релизу.
Мы хотим, чтобы компании были крутыми, а люди в них — счастливыми
- Что мы делаем
- Наша команда
- Блог
- Контакты
- Расписание тренингов
- Карта тренингов
- Сертификации
- Обучение Scrum Master
- Обучение Product Owner
- Обучение Kanban
- Услуги для компаний
- Тренинги для групп от 10 чел.
- Кейсы клиентов
© 2008 — 2024 ScrumTrek
Что такое continuous integration, системы для непрерывной интеграции, как устроен цикл Ci Cd

Как работает Continuous Integration — происходит автоматическая сборка и проверка новых кусочков кода. Непрерывная интеграция подразумевает полное исключение человека из процессов сборки и деплоя.
Редактировать

Chief Product Officer (CPO)
Обучение с нуля профессии «Директор по продукту» в IT на живой хардкорной практике. Это жесткий челлендж. Просто так на теории пройти программу не получится.

Продакт–менеджер
Обучение с нуля профессии «Продакт–менеджер» в IT на реальных рыночных кейсах. Передадим вам практический коммерческий опыт и подготовим к трудоустройству.

Как работает Continuous Integration?
При Continuous Integration происходит автоматическая сборка и проверка новых кусочков кода. Непрерывная интеграция подразумевает полное исключение человека из процессов сборки и деплоя.
Редактировать

Founder, Executive Partner

Выход из найма в консалтинг
Программа акселерации для тех, кто хочет начать предоставлять свои услуги корпорациям, со средним чеком от 400 000 рублей.

Какие плюсы Continuous integration?
Можно на ранней стадии обнаружить проблему и исправить ее до слияния нового кода с основной веткой.
Редактировать

Founder, Executive Partner

Какую выбрать систему для непрерывной интеграции?
Самые популярные — TeamCity и Jenkins. Вы также можете использовать внутренние системы платформ GitHub и GitLab.
Редактировать

Founder, Executive Partner

Continuous Integration
Continuous integration она же непрерывная интеграция — это автоматическая сборка и проверка новых кусочков кода.
Представьте, что несколько программистов пилят свой кусок кода для приложения. Эти отдельные кусочки нужно интегрировать между собой. И важно как можно чаще проверять, собирается ли код воедино, проходит ли он тестирование, не рушит ли один какой–нибудь кусочек всю систему. Непрерывная интеграция позволяет все это делать автоматически. Сегодня без нее не обходится ни один проект.
По сути Continuous integration — это ядро всех процессов. Непрерывная интеграция подразумевает полное исключение человека из процессов сборки и деплоя (развертывания, то есть помещения нового кода на сервер, где он будет работать).
Редактировать

Founder, Executive Partner

Как работает Continuous integration
Continuous integration представляет собой приложение или систему для автоматизации.
Весь код, который пишет команда, объединяется в один репозиторий — хранилище для данных (как Dropbox для документов). Каждый программист работает в своей определенной ветке. Когда они заканчивают свою часть кода, то отправляют ее на проверку и тестирование. И все кусочки соединяются друг с другом. В итоге к концу дня в этой ветке уже будет либо какой–то набор функционала, либо нужные исправления.
Каждый раз после такого слияние кодов должна происходить автоматическая сборка проекта и его тестирование. Проще говоря, код соединяется воедино и упаковывается. Затем запускают автоматические тесты, которые проверяют:
- модули приложения
- интерфейс
- производительность.
Так что, если что–то вызовет ошибку и тесты это покажут, то команда узнает об этом до того, как выкатит релиз или все запустит в работу. Зато успеет вовремя поправить. Непрерывная интеграция работает как страховка
Редактировать

Founder, Executive Partner

Варианты настройки Continuous integration
Система непрерывной интеграции сама забирает новый код из хранилища (репозитория). И тут есть два варианта, как этот процесс настроить.
- Continuous integration в определенное время будет отправлять запрос в хранилище: «Нет ли для меня чего новенького?».
- Хранилище само вызывает приложение: «У меня обновление, получите — распишитесь».
Как только система непрерывной интеграции получит изменения, то запустит сборку подготовленного к использованию информационного продукта, его называют билд. Как правило, он представляет собой двоичный файл с исполняемым кодом программы.
Затем пройдут автотесты. И если на каком–то этапе что–то пойдет не так (не получится собрать проект, или тесты выдадут ошибку), то все заинтересованные лица (например, разработчик, чьи изменения привели к ошибке, менеджер проекта) получат информацию об этом, ну и по шапке, конечно.
Редактировать

Founder, Executive Partner

Главное условие для непрерывной интеграции
Тестирование билда (тот самый двоичный файл с исполняемым кодом) должно происходить максимально быстро. Это нужно, чтобы непрерывная интеграция в принципе имела смысл.
В идеале длительность тестирования не должна превышать 10 минут.
Иначе же разработка будет сильно затягиваться по времени.
Редактировать

Founder, Executive Partner

Непрерывная интеграция: как все устроено
Осталось разобраться, как и где Continuous integration проводит такой сумасшедший объем работы, да еще и так быстро.
Сама система (а их есть много разных, подробнее остановимся на них дальше) код не собирает и не тестирует. Это делают другие машины — компьютеры или виртуальные серверы, так называемые «агенты».
- В системах непрерывной интеграции есть сервер и клиент. Сервер — это непосредственно та часть, которая доступна команде разработчиков, удобный интерфейс, где можно оценить, насколько успешно прошла сборка и тесты.
- «Клиента» устанавливают на машины-»агенты» или виртуальные серверы.
- Когда сервер получает команду, то ищет свободного «агента» и дает ему инструкцию, что делать, какие тесты проводить.
- «Агент» все это выполняет, формирует результаты и отправляет обратно на сервер.
- Сервер все красиво оформляет и показывает тем, кому это надо. Либо отправляет им письма.
Важно, что пользователь всегда будет видеть, какая именно машине проделала всю работу в тот или иной момент. Он может и сам выбрать «агента» для сборки и тестов.
Редактировать

Founder, Executive Partner

Зачем выбирать «агентов» для непрерывной интеграции?
Это удобно, потому что одна машина может подвести из–за сбоя или каких–то настроек. А другая отлично справится.
Либо часть «агентов» работает на Виндовс, другая — на Линукс. Какие нам нужны, таких и выбираем.
Для удобства системный администраторы дают машинам свои имена.
На практике это может выглядеть так: сисадмин покупает компьютеры и устанавливает на них клиентское приложение системы для непрерывной интеграции. Эти компьютеры будут делать сборку и прогонять тесты. На другом компьютере будет сервер, с которого будут раздавать задания и с него же оценивать результаты.
Если в процессе работы все машины-»агенты» будут заняты, то задачи от разработчиков встанут в очередь. Ее можно будет подкорректировать вручную, если нужно продвинуть свою задачу наверх.
- Если задачи в списке запущены автоматически, то можно их и подвинуть. Это плановая проверка.
- А если задача прилетела от человека, то придется подождать.
Редактировать

Founder, Executive Partner

Плюсы Continuous integration
- Можно на ранней стадии обнаружить проблему и исправить ее до слияния нового кода с основной веткой.
- Улучшается коммуникация между командой за счет улучшенной визуализации.
- Баги получается искать быстрее.
- Не надо сидеть и ждать, пока закончиться тест кода. Можно работать над новым куском.
- Много обратной связи по изменениям. Это поможет улучшить продукт.
Редактировать

Founder, Executive Partner

Системы для непрерывной интеграции
Как мы уже упоминали выше, систем для непрерывной интеграции довольно много. Рассмотрим особенности тех, что используют чаще всего.
- TeamCity — этот сервис поддерживает большое количество мощного функционала. Есть бесплатная версия для небольших проектов. Надежен. Не зависит от запуска сборок. У сервиса понятная интеграция с системами контроля, отличается высокой надежностью, не зависящей от запуска сборок. Можно запускать команды удаленно.
- Jenkins — инструмент на Java с открытым исходным кодом. Можно тестировать код в реальном времени, создает отчеты об отдельных изменениях в кодовой базе. Подходит для быстрых пометок и исправлений ошибок и багов в коде. Настраивается достаточно просто. Доступен на Linux, Mac и Windows.
- Codeship — инструмент для непрерывной интеграции, позволяет автоматизировать разработку и развертывание. Позволяет настроить уровни доступа участников команды для каждого проекта. Есть функция отладки прямо из среды непрерывной интеграции. Удобная панель инструментов.
- Travis — это веб–ресурс. Его можно использовать бесплатно проектам с открытым исходным кодом. Поддерживает довольно много языков программирования, в том числе Node и PHP. Легко настраивается и интегрируется со Slack, HipChat, электронной почтой. Для сборки использует виртуальные машины. Можно запускать параллельное тестирование.
Редактировать

Founder, Executive Partner

Что такое Ci / Cd
Continuous integration — это только первый шаг большого автоматизированного конвейера. Разработка тут ведется в своих отдельных (локальных) ветках, затем все изменения вливаются в основную ветку. Все сборки и тестирования запускаются автоматически и занимают не больше 10 минут. Остальное развертывание запускается вручную.
Кроме этого шага есть еще:
Continuous delivery — непрерывная доставка. Здесь процесс непрерывной интеграции полностью автоматизирован. Как и процесс сборки релиза. А вот развертывание в продакшн происходят вручную.
Continuous deployment — непрерывное развертывание. В этом случае предыдущие два этапа (Continuous integration и Continuous delivery) полностью автоматизированы. А также автоматизирован процесс развертывания версии продукта на компьютере клиента или виртуализированной операционной системе. Чтобы ее мог оценить клиент.
Этот конвейер облегчает процесс слияние только что законченного кода с основной кодовой базой (тем, что было написано раньше и уже работает). Также он запускает различные тесты развертывания.
Концепция Ci/Cd используется в большей или в меньшей степени абсолютно во всех проектах.
Процессы Continuous integration, Continuous delivery и Continuous deployment не исключают друг друга. По своей структуре они больше напоминают матрешку.
- Continuous integration — это самая маленькая, нижний уровень.
- Continuous delivery — средняя.
- Continuous deployment — самая большая матрешка, внешний уровень.
Главная цель всех этих процессов — повысить надежность разработки, сделать релизы более стабильными и уменьшить время разработки.