Непрерывная интеграция (CI) - это практика частой интеграции изменений кода в общий репозиторий. Она повышает пропускную способность группы и качество программного обеспечения за счет автоматизации и стандартизации таких операций, как создание кода, тестирование и упаковка. Например, каждый раз, когда разработчик перемещает новые зафиксированные изменения в удаленный репозиторий, платформа непрерывной интеграции может автоматически запустить набор тестов, чтобы гарантировать, что изменения не вызовут конфликтов в целевой ветви удаленного репозитория.
Преимущества непрерывной интеграции:
Поиск проблем в программном обеспечении и их исправление вскоре после их появления.
Добавление дополнительных функций при сокращении ресурсов, необходимых для отладки кода.
Минимизация накладных расходов на интеграцию и развертывание за счет непрерывной интеграции.
Четкое информирование о состоянии программного обеспечения и внесенных в него изменениях.
Типичный рабочий процесс разработки программного обеспечения с использованием непрерывной интеграции включает в себя несколько этапов:
Клонирование удаленного репозитория и создание ветви компонентов
Редактирование файлов и фиксация изменений в локальном репозитории
Передача зафиксированных изменений в удаленный репозиторий (что запускает автоматизированный конвейер задач, таких как компиляция MEX-файлов, упаковочные панели инструментов и тестирование на платформе CI)
Анализ отчетов, генерируемых платформой CI, и исправление ошибок в конвейере
Объединение ветви удаленных функций в основную ветвь посредством запроса на извлечение (который запускает другой автоматизированный конвейер задач на платформе CI)
Анализ отчетов, генерируемых платформой CI, и устранение сбоев слияния
На этом рисунке показан пример цикла разработки с использованием сервера Jenkins™ CI и инструментов управления исходным кодом с открытым исходным кодом, таких как Git™ и GitHub ®. Сведения об интерфейсе MATLAB ® с Jenkins см. в разделе Запуск тестов MATLAB на сервере Jenkins .

Разработайте функцию и внесите изменения в локальный репозиторий:
Клонируйте репозиторий GitHub и создайте новую ветвь функций.
Внесите изменения в существующие файлы или добавьте новые.
Запустите тесты MATLAB и Simulink ®, чтобы оценить изменения и передать их в локальный репозиторий.
Запустите автоматизированный конвейер задач (включая тестирование) при передаче изменений в удаленный репозиторий или при выполнении запроса на извлечение:
Запустите автоматизированный конвейер задач на Дженкинсе, переместив зафиксированные изменения в GitHub или сделав запрос на слияние удаленной ветви функций в главную ветвь.
Дженкинс запускает автоматизированный конвейер, включая тесты MATLAB и Simulink, и генерирует артефакты, как указано в конфигурации проекта.
Если не удается выполнить изменения или запрос на извлечение, выполните следующие действия.
Проверьте результаты автоматизированного трубопровода и созданные артефакты испытаний. Внесите соответствующие изменения в код.
Запустите новый конвейер на Дженкинсе, переместив изменения в GitHub или сделав запрос на извлечение.
Инженеры по интеграции могут использовать артефакты тестирования Дженкинса, чтобы решить, когда объединять ветвь элемента в главную ветвь.
Можно выполнять непрерывную интеграцию с MATLAB на различных платформах непрерывной интеграции. Можно запускать и тестировать код MATLAB и модели Simulink, создавать артефакты и публиковать результаты на платформах. Дополнительные сведения см. в разделе Непрерывная интеграция с MATLAB на платформах CI.
Помимо MATLAB, различные панели инструментов поддерживают непрерывные рабочие процессы интеграции. В этой таблице перечислены общие сценарии использования непрерывной интеграции для моделей и кода.
| Инструменты | Сценарий использования | Дополнительные сведения |
|---|---|---|
| Simulink |
| Сведения об системе управления версиями с проектами (Simulink) Использование проекта с Git (Simulink) Совместное использование файлов кэша Simulink для более быстрого моделирования (Simulink) |
| Симулинк Test™ | Запуск тестовых файлов на платформах CI и сбор CI-совместимого покрытия с помощью Simulink Coverage™ | Непрерывная интеграция (Simulink Test) |
| Симулинк Check™ | Использование Jenkins для обнаружения нарушений метрических пороговых значений в модели | Устранение нарушений метрического порога в рабочем процессе систем непрерывной интеграции (Simulink Check) |
| Симулинк Requirements™ | Обобщение результатов проверки требований для тестов, выполняемых на платформах CI | Включение результатов из внешних источников в статус проверки (требования Simulink) |
| Сервер Polyspace ® Bug Finder™ Server™, Polyspace Code Prover™ |
| Выполнение анализа ошибок на сервере во время непрерывной интеграции (сервер поиска ошибок Polyspace) Выполнение анализа проверки кода на сервере во время непрерывной интеграции (сервер проверки кода Polyspace) |
matlab.unittest.plugins Package