Рубрики
Uncategorized

Непрерывная интеграция объяснена

Что такое непрерывная интеграция (CI)? Практика разработки программного обеспечения для слияния кода изменяется в основную филиал много раз в день. Узнайте, как начать. Tagged CICD, производительность, новички, DevOps.

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

Что такое непрерывная интеграция?

Непрерывная интеграция (CI) — это практика разработки программного обеспечения, в которой разработчики объединяют свои изменения в основной ветвь много раз в день. Каждое объединение запускает автоматическую последовательность сборки и тестирования, которая в идеале работает менее чем за 10 минут. Успешная сборка CI может привести к дальнейшей стадии непрерывной доставки.

Если сборка не удается, система CI блокирует ее от прогрессирования до дальнейших стадий. Команда получает отчет и быстро ремонтирует сборку, обычно в течение нескольких минут.

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

Непрерывная интеграция требует от всех разработчиков, которые работают над проектом, чтобы совершить его. Результаты должны быть прозрачно доступны для всех членов команды и создавать статус, сообщаемый разработчикам, когда они меняют код. В случае, если основной филиал кода не может построить или пройти тесты, предупреждение обычно обращается к всей команде разработчиков, которая должна предпринять немедленные меры, чтобы вернуть его в «зеленое» состояние.

Зачем нам непрерывная интеграция?

В бизнесе, особенно в разработке новых продуктов, обычно Мы не можем понять все впереди Анкет Принятие меньших шагов помогает нам более точно оценить и проверять чаще. Более короткая петля обратной связи означает больше итераций. И Это количество итераций, а не количество инвестированных часов, которое приводит к обучению Анкет

Для команд разработки программного обеспечения работа в длинных петлях обратной связи рискованна, поскольку она увеличивает вероятность ошибок и объема работы, необходимой для интеграции изменений в программное обеспечение для рабочей версии.

Небольшие, контролируемые изменения безопасны для происшествия часто. И путем автоматизации всех этапов интеграции разработчики избегают повторяющейся работы и человеческой ошибки. Вместо того, чтобы люди решали, когда и как запускать тесты, инструмент CI контролирует репозиторий центрального кода и запускает все автоматизированные тесты на каждом коммите. Основываясь на общем результате тестов, он либо принимает, либо отклоняет коммит кода.

Расширение с непрерывной доставкой

Как только мы автоматически создаем и проверяем наше программное обеспечение, это становится легче выпустить его . Таким образом, непрерывная интеграция часто расширяется с непрерывной доставкой, процесс, в котором изменения кода также автоматически подготовлены к выпуску (CI/CD).

В процессе CI/CD с тонкой настройкой все изменения кода развертываются в постановкой, производственной среде или оба после завершения этапа CI.

Непрерывная доставка может быть полностью автоматизированным рабочим процессом. В этом случае это обычно называют Непрерывное развертывание Анкет Или он может быть частично автоматизирован с ручными шагами в критических точках. Что распространено в обоих сценариях, так это то, что у разработчиков всегда есть артефакт релиза со стадии CI, который прошел стандартизированный процесс тестирования и готов к развертыванию.

Трубопровод CI и CD

CI и CD часто представлены в виде конвейера, где новый код входит на одном конце, протекает через серию этапов (сборка, тест, постановка, производство) и опубликован в виде нового производственного выпуска для конечных пользователей на другом конце.

Каждый этап трубопровода CI/CD является логической единицей в процессе доставки. Разработчики обычно делят каждую единицу на серию субъединиц, которые работают последовательно или параллельно.

Я поделился более подробным сообщением о трубопроводах CI/CD здесь, на dev.to:

CI/CD Pipeline: мягкое введение

Марко Анастасов ・ 8 мая ’19 ・ 4 мин прочитал

Предварительные условия для непрерывной интеграции

Основные предпосылки для реализации непрерывной интеграции включают:

  • Автоматизация сборки;
  • Автоматизация тестирования;
  • Более частые договорились о одном хранилище исходного кода и
  • Обеспечение видимости процесса и доступа в режиме реального времени к статусу CI для команды.

Команды, которые не практикуют CI, еще должны предпринять небольшие шаги, постоянно улучшать и использовать код и процесс таким образом, чтобы помочь организации расти.

На каждом шаге в пути к полному CI/CD производительность команды разработчиков будет расти, а также скорость всего бизнеса.

Типичный рабочий процесс разработки

Вы можете применять непрерывную интеграцию в большинстве программных проектов, включая веб-приложения, облачные микросервисы, мобильные приложения, системное программное обеспечение, IoT/встроенные системы и многое другое.

Например, Семфор Интегрируется с GitHub, внедряя CI/CD в стандартный процесс разработки на основе запросов на основе привлечения.

Вот типичный рабочий процесс непрерывной интеграции, который ежедневно практикуют пользователи Semaphore:

  • Разработчик создает новую филиал кода в GitHub, вносит изменения в код и совершает их.
  • Когда разработчик подталкивает свою работу на GitHub, Semaphore строит код, а затем запускает автоматический набор тестов.
  • Если Semaphore обнаруживает какие -либо ошибки в трубопроводе CI (статус: красный), разработчик получает ослабление уведомления или видит сообщение на ее личной панели инструментов на семафоре.
    • Если разработчик открыл запрос на привлечение, Semaphore также сообщает о статусе CI на странице запроса на вытягивание на GitHub.
  • В противном случае пользователь получает уведомление о том, что CI прошел (Status Green). Semaphore автоматически инициирует следующий конвейер, который развертывает новую версию приложения на проставочный сервер. Это позволяет QA или кому-либо еще в команде проверить изменения в производственной среде.
  • Как только другой разработчик подтвердил изменения в рецензировании, автор может объединить новую ветвь кода в главную филиал.
  • Semaphore запускает еще один конвейер сборки и тестирования на главной филиале, и когда он проходит, он развертывает новую версию кода на производство. Команда получает уведомление о новом выпуске через Slack.

Лучшие практики непрерывной интеграции

Относитесь к Master Build, как будто вы собираетесь выпустить в любое время Анкет Что подразумевает, что некоторые общеизвестные не делают:

  • Не комментируйте неудачные тесты. Подать проблему и исправить их вместо этого.
  • Не заходите на разбитую сборку и никогда не отправляйтесь домой на сломанную сборку.

Держите сборку быстро: до 10 минут Анкет Сойти медленнее — это хорошо, но не включает Быстрая петля обратной связи Анкет

Параллелизуйте тесты Анкет Начните с расщепления по типу (например, единица и интеграция), затем используйте инструменты, которые могут параллелизировать каждый.

Все разработчики совершают код, чтобы освоить как минимум 10 раз в день Анкет Избегайте длительных филиалов, которые приводят к большим слияниям. Постройте новые функции итеративно и используйте флаги функций, чтобы скрыть рабочие неверные от конечных пользователей.

Подождите, пока тесты пройдут перед открытием запроса на вытяжение Анкет Имейте в виду, что запрос на привлечение по определению призыв к другому разработчику для просмотра вашего кода. Будьте внимательны к их времени.

Проверьте в клоне производственной среды. Например, вы можете Определите свою среду CI с помощью изображения Docker и сделать среду CI соответствовать производству на 100%. Альтернативой является настройка среды CI, чтобы ошибки из -за разницы с производством почти никогда не происходили.

Используйте CI, чтобы поддерживать свой код . Например, запустите запланированные рабочие процессы, чтобы обнаружить новые версии ваших библиотек и обновить их.

Отслеживать ключевые метрики : Total Ci Time (включая время очереди, которое ваш инструмент CI должен поддерживать по нулю) и как часто ваш мастер красный.

Вы нашли пост полезным? Дайте мне знать по ❤-ing или 🦄-ining это ниже!

Что бы вы хотели узнать дальше о CI/CD? Дай мне знать в комментариях.

Спасибо за чтение. 🙏

Оригинал: «https://dev.to/markoa/continuous-integration-explained-59f9»