Что такое CI/CD? Непрерывная интеграция и непрерывная доставка
Что такое непрерывная интеграция (CI)?
Непрерывная интеграция — это метод разработки программного обеспечения, при котором члены команды интегрируют свою работу хотя бы раз в день. В этом методе каждая интеграция проверяется автоматической сборкой для обнаружения ошибок. Эта концепция была впервые представлена более двух десятилетий назад, чтобы избежать «интеграционного ада», который случается, когда интеграция откладывается до завершения проекта.
При непрерывной интеграции после фиксации кода программное обеспечение сразу же собирается и тестируется. В большом проекте с большим количеством разработчиков коммиты выполняются много раз в течение дня. При каждом коммите код создается и тестируется. Если тест пройден, сборка проверяется на предмет развертывания. Если развертывание прошло успешно, код передается в производство. Эта фиксация, сборка, тестирование и развертывание — это непрерывный процесс, отсюда и название «непрерывная интеграция/развертывание».
Что такое непрерывная доставка (CD)?
Непрерывная поставка — это метод разработки программного обеспечения, при котором команда разрабатывает программные продукты за короткий цикл. Это гарантирует, что программное обеспечение может быть легко выпущено в любое время. Основная цель непрерывной поставки — создавать, тестировать и выпускать программное обеспечение с хорошей скоростью и частотой. Это помогает вам сократить затраты, время и риск внесения изменений за счет возможности частого обновления в рабочей среде.
В чем разница между CI и CD?
Разработка без CI против разработки с CI
Вот ключевые различия между разработкой с использованием CI и без CI:
| Разработка без CI | Разработка с CI |
|---|---|
| Много ошибок | Меньше ошибок |
| Редкие коммиты | Регулярные коммиты |
| Редкие и медленные релизы | Регулярные рабочие релизы |
| Сложная интеграция | Простая и эффективная интеграция |
| Тестирование происходит поздно | Тестирование непрерывной интеграции происходит рано и часто. |
| Поднятую проблему труднее исправить | Находите и устраняйте проблемы быстрее и эффективнее. |
| Плохая видимость проекта | Лучшая видимость проекта |
Разница между компиляцией и непрерывной интеграцией

В то время как компиляция только компилирует код, CI выполняет следующие действия:
Интеграция с БД
- Обеспечьте синхронизацию базы данных и кода
- Автоматизированное создание БД и тестовых данных.
Проверка кода
- Обеспечивает исправную кодовую базу
- Выявляет проблемы на ранней стадии и применяет лучшие практики
Автоматическое развертывание
- Позволяет выпускать продукт в любое время
- Постоянно демонстрируемое состояние, работает на любой машине.
Генерация документа
- Убедитесь, что документация актуальна
- Удаляет сгоревшее от разработчика
- Создает отчеты о сборке и метрики
Сборник
Компиляция — это процесс, который компьютер выполняет для преобразования кода языка программирования высокого уровня в машинный язык, понятный компьютеру. Это обеспечивает компилятор кода на каждой целевой платформе.
Когда я построю?
- При каждой регистрации
- Каждый раз, когда зависимость меняется
Какие шаги входят в непрерывную интеграцию?

- В идеале сборка должна выполняться из командной строки и не должна зависеть от интегрированной среды разработки (IDE).
- Сборка должна происходить непрерывно с использованием выделенного сервера Cl, а не задания cron.
- Встроенная 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 это программное обеспечение непрерывной интеграции с открытым исходным кодом. Оно написано с использованием Java язык программирования. Это облегчает тестирование в реальном времени и составление отчетов об отдельных изменениях в более массивной базе кода. Это программное обеспечение помогает разработчикам быстро находить и устранять дефекты в своей кодовой базе, а также автоматизировать тестирование своих сборок.
Bamboo
Bamboo — это сервер непрерывной интеграции, который выполняет автоматическую сборку, тестирование и выпуск в одном месте. Он без проблем работает с программным обеспечением JIRA и Bitbucket. Bamboo поддерживает множество языков и технологий, таких как CodeDeply, Docker, Git, SVN, Mercurial, AWS и Amazon Ковши S3.
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 Инструменты интеграции.




