Contents
- 1 Что такое непрерывная интеграция (CI)?
- 2 Что такое непрерывная доставка (CD)?
- 3 В чем разница между CI и CD?
- 4 Разработка без CI против разработки с CI
- 5 Разница между компиляцией и непрерывной интеграцией
- 6 Что вам нужно для проведения процесса CI?
- 7 Как работает непрерывная интеграция?
- 8 Особенности КИ
- 9 Зачем использовать КИ?
- 10 Лучшие практики использования систем CI
- 11 Недостатки КИ
- 12 Инструменты для процесса CI
- 13 Резюме:
Что такое непрерывная интеграция (CI)?
Непрерывная интеграция — это метод разработки программного обеспечения, при котором члены команды интегрируют свою работу не реже одного раза в день. В этом методе каждая интеграция проверяется автоматической сборкой для обнаружения ошибок. Эта концепция была впервые введена более двух десятилетий назад, чтобы избежать «интеграционного ада», когда интеграция откладывается до конца проекта.
В непрерывной интеграции после фиксации кода программное обеспечение создается и тестируется немедленно. В большом проекте со многими разработчиками коммиты делаются много раз в течение дня. С каждым коммитом код создается и тестируется. Если тест пройден, сборка тестируется для развертывания. Если развертывание прошло успешно, код отправляется в рабочую среду. Эта фиксация, сборка, тестирование и развертывание представляют собой непрерывный процесс, отсюда и название «непрерывная интеграция/развертывание».www.guru99.com
Что такое непрерывная доставка (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 — это сервер непрерывной интеграции, который поддерживает множество мощных функций. Он поддерживает работоспособность и стабильность сервера 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 .