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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сборник

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

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

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

Какие шаги входят в непрерывную интеграцию?

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

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

Проведение процесса CI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Недостатки CI

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

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

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

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

Jenkins

Jenkins

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

Bamboo

Bamboo

Bamboo — это сервер непрерывной интеграции, который выполняет автоматическую сборку, тестирование и выпуск в одном месте. Он без проблем работает с программным обеспечением JIRA и Bitbucket. Bamboo поддерживает множество языков и технологий, таких как CodeDeply, Docker, 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 Процесс непрерывной интеграции предполагает раннюю фиксацию и часто никогда не фиксацию неработающего кода.
  • Главный недостаток программы Конвейер CI / CD Процесс заключается в том, что хорошо разработанный набор тестов требует много ресурсов для сервера Cl.
  • Дженкинс, Bambook и Team City — несколько полезных AWS Continuous Инструменты интеграции.