Что такое CI/CD? Непрерывная интеграция и непрерывная доставка

by moiseevrus

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

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

В непрерывной интеграции после фиксации кода программное обеспечение создается и тестируется немедленно. В большом проекте со многими разработчиками коммиты делаются много раз в течение дня. С каждым коммитом код создается и тестируется. Если тест пройден, сборка тестируется для развертывания. Если развертывание прошло успешно, код отправляется в рабочую среду. Эта фиксация, сборка, тестирование и развертывание представляют собой непрерывный процесс, отсюда и название «непрерывная интеграция/развертывание».www.guru99.com

Что такое непрерывная доставка (CD)?

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

В чем разница между CI и CD?

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

Разработка без CI против разработки с CI

Вот ключевые различия между разработкой с использованием CI и без CI:

Разработка без КИ Разработка с CI
Много ошибок Меньше ошибок
Редкие коммиты Регулярные коммиты
Редкие и медленные релизы Регулярные рабочие релизы
Сложная интеграция Простая и эффективная интеграция
Тестирование происходит поздно Непрерывное интеграционное тестирование происходит рано и часто.
Возникшая проблема сложнее исправить Находите и устраняйте проблемы быстрее и эффективнее.
Плохая видимость проекта Лучшая видимость проекта

Разница между компиляцией и непрерывной интеграцией

 

Действия в непрерывной интеграции
Действия в непрерывной интеграции

 

В то время как компиляция компилирует только код, CI выполняет следующие действия.

Интеграция с БД:

  • Обеспечьте синхронизацию БД и кода
  • Автоматическое создание БД и тестовых данных.

Проверка кода:

  • Обеспечивает здоровую кодовую базу
  • Выявляет проблемы на ранней стадии и применяет лучшие практики

Автоматическое развертывание:

  • Позволяет выпускать продукт в любое время
  • Постоянно демонстрационное состояние, и оно работает на любой машине

Генерация документа:

  • Убедитесь, что документация актуальна
  • Удаляет сожженные от проявителя
  • Производит отчеты о сборке и метрики

Сборник:

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

Когда я строю?

  • При каждой регистрации
  • Каждый раз, когда зависимость меняется

Какие этапы непрерывной интеграции?

 

процесс непрерывной интеграции
процесс непрерывной интеграции

 

  • В идеале сборка должна происходить из командной строки и не должна зависеть от IDE.
  • Сборка должна происходить непрерывно с использованием выделенного сервера Cl, а не задания cron.
  • Созданный CI должен запускаться при каждой регистрации, а не только в полночь.
  • Сборка должна обеспечивать немедленную обратную связь и не требовать усилий разработчика.
  • Определите ключевые показатели и отслеживайте их визуально. Что еще более важно, действуйте на них немедленно

Что вам нужно для проведения процесса CI?

процесс непрерывной интеграции

Вот ключевые элементы, необходимые для выполнения всего процесса CI:

  • Система контроля версий (VCS): предлагает надежный метод централизации и сохранения изменений, внесенных в ваш проект с течением времени.
  • Виртуальная машина: у вас должен быть запасной сервер или хотя бы одна виртуальная машина для создания вашей системы.
  • Размещенные инструментальные решения CI. Чтобы избежать серверов или виртуальных машин, вам следует выбрать размещенные инструментальные решения CI. Этот инструмент помогает в обслуживании всего процесса и обеспечивает более простую масштабируемость.
  • Инструменты: если вы выберете самостоятельный вариант, вам нужно будет установить один из многих инструментов CI, таких как Jenkins, TeamCity, Bamboo, GitLab и т. д.

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

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

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

 

Пример непрерывной интеграции
Пример непрерывной интеграции

 

Особенности КИ

Вот важные особенности и преимущества непрерывной интеграции:

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

Зачем использовать КИ?

Вот важные причины для использования непрерывной интеграции:

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

Лучшие практики использования систем CI

Ниже приведены некоторые важные рекомендации по внедрению

  • Выполняйте коммит раньше и чаще никогда не коммитьте неработающий код
  • Немедленно исправьте сбои сборки
  • Действуйте по показателям
  • Встраивание в каждую целевую среду Создание артефактов из каждой сборки
  • Сборка программного обеспечения должна выполняться таким образом, чтобы ее можно было автоматизировать.
  • Не зависеть от IDE
  • Создавайте и тестируйте все, когда оно меняется
  • Схема базы данных считается всем
  • Помогает узнать ключевые показатели и отслеживать их визуально
  • Заезд часто и рано
  • Более строгий контроль исходного кода
  • Непрерывная интеграция запускает модульные тесты всякий раз, когда вы фиксируете код.
  • Автоматизируйте сборку и тестируйте всех
  • Обеспечьте быструю сборку с помощью автоматического развертывания

Недостатки КИ

Вот минусы/недостатки процесса непрерывной интеграции:

  • Для знакомства с Cl сервером требуется время первоначальной настройки и обучения.
  • Разработка подходящих процедур испытаний имеет важное значение
  • Хорошо разработанный набор тестов требовал много ресурсов для сервера Cl
  • Преобразование знакомых процессов
  • Требуются дополнительные серверы и среды
  • Время ожидания может возникнуть, когда несколько разработчиков хотят интегрировать свой код примерно в одно и то же время.

Инструменты для процесса CI

Вот некоторые наиболее важные инструменты CI/CD:

Дженкинс:

Дженкинс

Jenkins — это программное обеспечение для непрерывной интеграции с открытым исходным кодом. Он написан с использованием языка программирования Java . Это облегчает тестирование в режиме реального времени и создание отчетов об отдельных изменениях в более массивной кодовой базе. Это программное обеспечение помогает разработчикам быстро находить и устранять дефекты в своей кодовой базе и автоматизировать тестирование своих сборок.

Бамбук:

Бамбук

Bamboo — это сервер сборки с непрерывной интеграцией, который выполняет автоматическую сборку, тестирование и выпуски в одном месте. Он без проблем работает с программным обеспечением JIRA и Bitbucket. Bamboo поддерживает множество языков и технологий, таких как CodeDeply, Ducker, Git, SVN, Mercurial, AWS и корзины Amazon S3.

TeamCity:

TeamCity

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

Резюме:

  • Определение непрерывной интеграции: непрерывная интеграция — это метод разработки программного обеспечения, при котором члены команды могут интегрировать свою работу по крайней мере один раз в день.
  • CI/CD означает сочетание непрерывной интеграции и непрерывной доставки или непрерывного развертывания.
  • Разработка без CI создает много ошибок, тогда как разработка с CI предлагает меньше ошибок
  • Важными действиями непрерывной интеграции являются 1) интеграция с БД, 2) проверка кода, 3) автоматическое развертывание, создание документов и компиляция.
  • Сборка должна происходить непрерывно с использованием выделенного сервера Cl, а не задания cron.
  • Важными элементами CI являются: 1) система контроля версий 2) виртуальная машина 3) решения Host CI Tool 4) инструменты
  • Система непрерывной интеграции позволяет поддерживать только один исходный репозиторий.
  • Процесс CI/CD помогает создавать более качественное программное обеспечение.
  • Наиболее важными передовыми практиками процесса непрерывной интеграции Azure являются ранняя фиксация и частая фиксация, никогда не фиксация неисправного кода.
  • Основным недостатком конвейерного процесса CICD является то, что хорошо разработанный набор тестов требует много ресурсов для сервера Cl.
  • Jenkins, Bambook и Team City — некоторые полезные инструменты непрерывной интеграции AWS .

You may also like

Leave a Comment