Учебники

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

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

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

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

В этом уроке CI вы узнаете:

Разработка без КИ против развития с КИ

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

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

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

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

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

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

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

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

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

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

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

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

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

Компиляция:

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

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

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

Как мне построить?

Процесс CI

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

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

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

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

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

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

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

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

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

Здесь важны особенности непрерывной интеграции

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

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

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

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

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

Вот несколько важных рекомендаций при внедрении

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

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

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

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

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

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

Дженкинс:

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

Бамбук:

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

TeamCity:

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

Резюме:

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