Поделиться через


Рабочие процессы непрерывной интеграции и непрерывной поставки для LUIS DevOps

Внимание

LUIS будет прекращена 1 октября 2025 г. и с 1 апреля 2023 г. вы не сможете создать новые ресурсы LUIS. Мы рекомендуем перенести приложения LUIS в понимание общения, чтобы воспользоваться продолжением поддержки продуктов и многоязычными возможностями.

Разработчики программного обеспечения, которые создают приложение для распознавания речи (LUIS), могут применять методики DevOps для управления версиями, автоматизированных сборок, тестирования и управления выпусками. В этой статье описываются основные понятия реализации автоматизированных сборок для LUIS.

Рабочие процессы автоматизации сборок для LUIS

Рабочие процессы непрерывной интеграции

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

  1. Рабочий процесс PR активируется при создании запроса на вытягивание (PR). Этот рабочий процесс проверяет содержимое запроса на вытягивание перед добавлением обновлений в главную ветвь.
  2. Рабочий процесс CI/CD запускается при передаче обновлений в главную ветвь, например во время добавления изменения из запроса на вытягивание. Этот рабочий процесс обеспечивает качество всех обновлений главной ветви.

Рабочий процесс CI/CD объединяет два дополнительных процесса разработки.

  • Непрерывная интеграция (CI) — это методика проектирования, которая предполагает регулярную фиксацию кода в общем репозитории и выполнение для него автоматизированной сборки. В сочетании с автоматическим тестированием непрерывная интеграция позволяет убедиться в том, что для каждого обновления источник LUDown по-прежнему является допустимым и может быть импортирован в приложение LUIS, но при этом он успешно проходит группу тестов, призванных проверить, способно ли обученное приложение распознать намерения и сущности, требуемые для вашего решения.

  • Непрерывная поставка (CD) расширяет концепцию непрерывной интеграции, применяя ее для автоматического развертывания приложений в среде, где можно выполнить более глубокое тестирование. CD позволяет на ранних этапах максимально быстро выявлять непредвиденные проблемы, возникающие при внесении изменений, а также неохваченные тестированием области.

Цель непрерывной интеграции и непрерывной доставки — обеспечить "постоянную готовность главной ветви к отправке". Если говорить о приложении LUIS, то это означает, что мы можем при необходимости взять любую версию из приложения LUIS главной ветви и отправить ее в рабочую среду.

Инструменты создания рабочих процессов автоматизации для LUIS

Совет

Весь код решения для реализации DevOps доступен в репозитории шаблонов DevOps для LUIS.

Существуют различные технологии автоматизации сборки для создания рабочих процессов автоматизации сборки. Все они предполагают, что вы можете создавать скрипты с помощью интерфейса командной строки (CLI) или вызовов REST, что позволяет выполнять их на сервере сборки.

Для создания рабочих процессов автоматизации для LUIS используются следующие инструменты.

  • Инструменты Bot Framework в CLI LUIS позволяют работать с приложениями и версиями LUIS, обучать, тестировать и публиковать их в службе LUIS.

  • Azure CLI для запроса подписок Azure, получения инструментов разработки LUIS и ключей прогнозирования, а также создания субъекта-службы Azure, используемой для проверки подлинности службы автоматизации.

  • Инструмент NLU.DevOps для тестирования приложения LUIS и анализа результатов тестирования.

Рабочий процесс PR

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

Этот рабочий процесс должен следующее.

  • Создать временное приложение LUIS путем импорта источника .lu в PR.
  • Обучение и публикация версии приложения LUIS.
  • Выполните все модульные тесты для приложения.
  • Передайте рабочий процесс, если все тесты успешно пройдены, в ином случае пометьте его как не прошедший тест.
  • Очистите и удалите временное приложение.

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

Рабочий процесс CI/CD для главной ветви

Настройте этот рабочий процесс для запуска после добавления обновлений в PR в главную ветвь. Его задача — обеспечить заданный уровень качества главной ветви путем тестирования обновлений. Если обновления соответствуют заданному уровню качества, этот рабочий процесс развертывает новую версию приложения LUIS в среде, где можно выполнить более глубокое тестирование.

Этот рабочий процесс должен следующее.

  • Создайте новую версию в основном приложении LUIS (приложение, которое сохраняется для основной ветви), используя обновленный исходный код.

  • Обучение и публикация версии приложения LUIS.

    Примечание.

    Как описано в разделе Запуск тестов в рабочем процессе автоматизированной сборки, необходимо опубликовать тестируемую версию приложения LUIS, чтобы к ней имели доступ такие инструменты, как NLU.DevOps. LUIS поддерживает только два именованных слота публикации, промежуточные и рабочие среды для приложения LUIS, но вы также можете публиковать версию напрямую и запрашивать по версии. Используйте публикацию версий напрямую в рабочих процессах автоматизации, чтобы не ограничиваться использованием именованных слотов публикации.

  • Выполните все модульные тесты.

  • При необходимости выполните пакетные тесты, чтобы оценить качество и точность версии приложения LUIS и сравнить ее с отдельными базовыми показателями.

  • Если тесты пройдены успешно

    • Добавьте метку источника в репозитории.
    • Запустите задание непрерывной поставки (CD), чтобы развернуть версию приложения LUIS в средах для дальнейшего тестирования.

Непрерывная поставка (CD)

Задание CD в рабочем процессе CI/CD выполняется при условии успешного выполнения сборки и модульных тестов автоматизации. Его цель — автоматическое развертывание приложения LUIS в среде, где можно выполнить дополнительное тестирование.

Нет какого-то конкретного рекомендуемого решения для оптимального развертывания приложения LUIS. Вам необходимо выбрать тот процесс, который лучше всего соответствует требованиям вашего проекта. В репозитории шаблонов LUIS DevOps реализовано простое решение, которое позволяет опубликовать новую версию приложения LUIS в слоте публикации в рабочей среде. Этот способ подходит для простой установки. Тем не менее, если необходимо обеспечить поддержку нескольких рабочих сред одновременно, например для разработки, помещения на промежуточное хранение и обработку и пользовательского приемочного тестирования, то ограничения в два именованных слота публикации на одно приложение окажется недостаточно.

Другие варианты развертывания версии приложения

  • Сохраните версию приложения, опубликованную напрямую в конечной точке версии, и добавьте процесс для настройки подчиненных рабочих сред напрямую на конечной точке версии, если это необходимо.
  • Сохраните различные приложения LUIS для каждой рабочей среды и напишите действия по автоматизации для импорта .lu в новую версию в приложении LUIS для целевой рабочей среды, чтобы обучить и опубликовать его.
  • Экспортируйте протестированную версию приложения LUIS в контейнер DOCKER LUIS и разверните контейнер LUIS в экземплярах контейнеров Azure.

Управление выпуском

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

Применение DevOps при разработке приложений LUIS с помощью GitHub Actions

В репозитории шаблонов DevOps для LUIS можно найти полное решение, в котором реализованы практики DevOps и проектирования программного обеспечения для LUIS. Этот репозиторий шаблонов можно использовать для создания собственного репозитория со встроенной поддержкой рабочих процессов CI/CD и методов, обеспечивающих управление исходным кодом, автоматизированную сборку, тестирование и управление выпусками для вашего проекта LUIS.

Репозиторий шаблонов DevOps для LUIS обеспечивает выполнение перечисленных ниже задач.

Следующие шаги