Рабочие процессы непрерывной интеграции и непрерывной поставки для LUIS DevOps
Внимание
LUIS будет прекращена 1 октября 2025 г. и с 1 апреля 2023 г. вы не сможете создать новые ресурсы LUIS. Мы рекомендуем перенести приложения LUIS в понимание общения, чтобы воспользоваться продолжением поддержки продуктов и многоязычными возможностями.
Разработчики программного обеспечения, которые создают приложение для распознавания речи (LUIS), могут применять методики DevOps для управления версиями, автоматизированных сборок, тестирования и управления выпусками. В этой статье описываются основные понятия реализации автоматизированных сборок для LUIS.
Рабочие процессы автоматизации сборок для LUIS
В системе управления исходным кодом настройте конвейеры автоматизированной сборки, которые будут запускаться при наступлении следующих событий.
- Рабочий процесс PR активируется при создании запроса на вытягивание (PR). Этот рабочий процесс проверяет содержимое запроса на вытягивание перед добавлением обновлений в главную ветвь.
- Рабочий процесс 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 обеспечивает выполнение перечисленных ниже задач.
- Клонирование репозитория шаблонов — скопируйте шаблон в собственный репозиторий GitHub.
- Настройка ресурсов LUIS — создайте ресурсы для разработки и прогнозирования LUIS в Azure, которые будут использоваться рабочими процессами непрерывной интеграции.
- Настройка рабочих процессов CI/CD — настройте параметры рабочих процессов CI/CD и сохраните их в секретах GitHub.
- Пошаговые инструкции по внутреннему циклу разработки — разработчик вносит изменения в пример приложения LUIS в ветви разработки, тестирует обновления, а затем выполняет запрос на вытягивание, чтобы предложить изменения и получить утверждение.
- Выполнение рабочих процессов CI/CD — выполняйте рабочие процессы непрерывной интеграции для создания и тестирования приложения LUIS с помощью GitHub Actions.
- Выполнение автоматического тестирования — выполняйте автоматическое пакетное тестирование приложения LUIS, чтобы оценить его качество.
- Развертывание приложения LUIS — выполните задание непрерывной поставки (CD), чтобы опубликовать приложение LUIS.
- Использование репозитория с собственным проектом — описание использования репозитория с собственным приложением LUIS.
Следующие шаги
Узнайте, как написать рабочий процесс для GitHub Actions с помощью NLU.DevOps.
Используйте репозиторий шаблонов DevOps для LUIS, чтобы применить DevOps к собственному проекту.