exponenta event banner

Устранение нарушений метрических пороговых значений в рабочем процессе систем непрерывной интеграции

В этом примере показано, как использовать панель мониторинга Metrics с инструментами с открытым исходным кодом GitLab™ а также Jenkins™ для тестирования и уточнения модели в непрерывном рабочем процессе интеграционных систем. Непрерывная интеграция - это практика объединения всех рабочих копий файлов проекта разработчика на общую магистраль. Этот рабочий процесс экономит время и повышает качество, поддерживая контроль версий, автоматизируя и стандартизируя тестирование.

Этот пример относится к проекту, содержащему поставляемый проект matlab:sldemo_slproject_airframe и следующие файлы, которые необходимо предоставить:

  • Сценарий MATLAB, определяющий пороговые значения метрик и настраивающий панель мониторинга метрик.

  • Единичный тест MATLAB, который собирает метрические данные и проверяет наличие нарушений метрических пороговых значений.

В этом примере сервер непрерывной интеграции Дженкинса используется для выполнения модульного теста MATLAB для определения наличия нарушений метрических пороговых значений. Дженкинс архивирует результаты тестов для загрузки и локального исследования. GitLab - это онлайн-менеджер репозитория Git, который можно настроить для работы с Дженкинсом. На этой диаграмме показано, как Simulink Check, GitLab и Jenkins работают вместе в непрерывном процессе интеграции.

Настройка проекта

В дополнение к файлам в matlab:sldemo_slproject_airframe проекте необходимо предоставить следующие дополнительные файлы:

  • Единичный тест MATLAB, который собирает метрические данные для проекта и проверяет, что файлы модели не содержат нарушений метрических пороговых значений. Дополнительные сведения о тестах единиц MATLAB см. в разделе Тесты единиц на основе сценариев.

  • Сценарий MATLAB, определяющий пороговые значения метрик и настраивающий панель мониторинга метрик. Дополнительные сведения о настройке панели мониторинга показателей см. в разделе Настройка компоновки и функциональности панели мониторинга показателей.

  • A setup.m файл, активирующий XML-файлы конфигурации, определяющие пороговые значения метрик, устанавливающие пользовательские семейства метрик и настраивающие компоновку панели мониторинга метрик. Для этого примера: setup.m сценарий содержит следующий код:

    function setup
        % refresh Model Advisor customizations
        Advisor.Manager.refresh_customizations();
            
        % set metric configuration with thresholds
        configFile = fullfile(pwd, 'config', 'MyConfiguration.xml');
        slmetric.config.setActiveConfiguration(configFile);
        
        uiconf = fullfile(pwd, 'config', 'MyDashboardConfiguration.xml');
        slmetric.dashboard.setActiveConfiguration(uiconf);
    end
    
    На вкладке Проект (Project) щелкните Запуск (Startup) Shudown (Shudown). В поле Startup files укажите setup.m файл.

  • Один sl_customization.m файл, активирующий файл конфигурации Model Advisor для настройки проверок Model Advisor. Дополнительные сведения о создании собственной конфигурации Model Advisor см. в разделе Настройка показателей соответствия.

  • A run сценарий, который выполняется во время построения Дженкинса. Для этого примера этот код находится в run.m файл:

    % script executed during Jenkins build
    function run(IN_CI)
         if (IN_CI)
            jenkins_workspace = getenv('WORKSPACE');
            cd(jenkins_workspace);
        end
    
        % open the sl project
        slproj = simulinkproject(pwd);
        
        % execute tests
        runUnitTest();
        
        slproj.close();
        
        if IN_CI
            exit
        end
    end
    

  • A cleanup.m файл, восстанавливающий конфигурацию активной метрики в конфигурацию по умолчанию. Для этого примера этот код находится в cleanup.m сценарий файла:

    function cleanup    
        rmpath(fullfile(pwd, 'data'));
        Advisor.Manager.refresh_customizations();
    
        % reset active metric configuration to default
        slmetric.config.setActiveConfiguration('');
        slmetric.dashboard.setActiveConfiguration('');
    end
    
    На вкладке Проект (Project) щелкните Запуск (Startup) Shudown (Shudown). В поле Shutdown files укажите значение cleanup.m файл.

  • A .gitignore файл, проверяющий, что производные артефакты не возвращены в GitLab. Этот код находится в .gitignore файл:

    work/**
    reports/**
    *.asv
    *.autosave
    

Настройка GitLab

Создайте проект GitLab для управления исходным кодом проекта. Дополнительные сведения см. в разделе https://docs.gitlab.com/ee/README.html.

  1. Установите клиент Git.

  2. Настройка рабочего процесса ветвления. С помощью GitLab из основной ветви создайте временную ветвь для реализации изменений в файлах модели. Инженеры по интеграции могут использовать результаты теста Дженкинса для принятия решения о необходимости объединения временной ветви в главную ветвь. Дополнительные сведения см. в разделе

    https://git-scm.com/book/en/v1/Git-Branching-Branching-Workflows.

  3. В разделе Параметры > Репозиторий защитите главную ветвь, принудительно используя запросы на слияние, когда разработчики хотят объединить свои изменения в главную ветвь.

  4. В разделе Настройки на странице Интеграции добавьте Webhook к URL-адресу проекта Дженкинса. Этот webhook запускает задание сборки на сервере Дженкинса.

Установка Дженкинса

Установите подключаемые модули GitLab и Tap. Единичный тест MATLAB использует TAPPlugin для потоковой передачи результатов в .tap файл. Чтобы включить передачу статуса теста из MATLAB в задание Дженкинса, Дженкинс импортирует .tap файл.

Создайте проект Дженкинса. Укажите следующие конфигурации:

  1. В проекте Дженкинса нажмите кнопку Настроить.

  2. На вкладке «Общие» укажите имя проекта.

  3. На вкладке Управление исходным кодом в поле URL репозитория укажите URL репозитория GitLab.

  4. На вкладке Триггеры построения (Build Triggers) выберите команду Построить (Build), когда изменение будет перенесено в GitLab.

  5. На вкладке Сборка выполните команду MATLAB для вызова сценария выполнения. Сценарий запуска открывает проект и запускает все модульные тесты. Для проекта в этом примере используется следующий код:

    matlab -nodisplay -r...
     "cd /var/lib/jenkins/workspace/'18b Metrics CI Demo'; run(true)"

  6. На вкладке Действия после сборки настройте подключаемый модуль TAP для публикации результатов TAP Дженкинсу. В поле Test Results укажите reports/*.tap. Чтобы архивировать файлы, укажите reports/**,work/**.

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

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

После настройки проекта, Jenkins и GitLab следуйте непрерывному процессу интеграции.

Этап 1: Разработка элементов

  1. Создайте локальный клон репозитория GitLab. См. раздел Извлечение файлов из репозитория Git.

  2. В Simulink перейдите в локальный репозиторий GitLab.

  3. Создайте отделение особенности и файлы контроля и усилие. См. разделы Ответвление и объединение файлов с Git и Извлечение, Передача и Выборка файлов с Git.

  4. Внесите необходимые изменения в файлы проекта.

  5. Смоделировать модель и проверить выходные данные в инспекторе данных моделирования.

  6. Выполните модульные тесты MATLAB. Дополнительные сведения см. в разделе runtests.

  7. Добавьте и зафиксируйте измененные модели в ветви элемента. См. разделы Ответвление и объединение файлов с Git и Извлечение, Передача и Выборка файлов с Git.

  8. Передача изменений в репозиторий GitLab. См. разделы Ответвление и объединение файлов с Git и Извлечение, Передача и Выборка файлов с Git.

  9. В GitLab создайте запрос на слияние. Выберите ветвь элемента как исходную ветвь, а целевую ветвь как главную. Щелкните Сравнить ветви (Compare Branches) и Продолжить (Continue).

  10. Если функция реализована не полностью, отметьте запрос на слияние как выполняемую работу, добавив буквы WIP: в начале запроса. Если запрос слияния не помечен как НЗП:, он немедленно запускает построение после создания.

  11. Щелкните Отправить запрос на слияние.

Этап 2: Квалификация с использованием непрерывной интеграции

  1. Если буквы WIP: не находятся в начале запроса слияния, команда push запускает построение Дженкинса. В части «Настройка Дженкинса» этого примера вы настроили Дженкинса на выполнение сборки при вставке изменений в GitLab. Чтобы удалить буквы, щелкните Разрешить состояние НЗП.

  2. Перейдите к проекту Дженкинса. В журнале сборки можно просмотреть состояние сборки.

  3. Щелкните Построение (Build).

  4. Нажмите Коснитесь Результаты тестирования.

  5. Для этого примера: MetricThresholdGateway.m единичный тест не прошел для трех метрик, поскольку эти метрики не соответствовали пороговым значениям. Чтобы исследовать эти данные, необходимо загрузить их локально.

Этап 3: Изучение проблем качества на локальном уровне

  1. Загрузите заархивированные результаты в локальную рабочую область репозитория Git.

  2. Распакуйте загруженные файлы. Копировать reports/ и work/ в соответствующие папки локального репозитория.

  3. Чтобы ознакомиться с результатами, откройте проект и панель мониторинга показателей.

  4. Чтобы устранить ошибки теста, внесите необходимые обновления в модели. Переместите изменения в ветвь элемента в GitLab.

  5. Инженеры по интеграции могут использовать результаты теста Дженкинса для принятия решения о допустимости объединения временной ветви в главную ветвь.

См. также

|

Связанные темы

Внешние веб-сайты