Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к:
IoT Edge 1.6
Внимание
IoT Edge 1.6 LTS — поддерживаемый релиз. Поддержка IoT Edge 1.5 LTS заканчивается 10 ноября 2026 года; IoT Edge 1.4 LTS завершил срок службы 12 ноября 2024 года. Если вы используете более ранний выпуск, ознакомьтесь с Update IoT Edge.
Внедрите DevOps с помощью приложений Azure IoT Edge, используя встроенные задачи Azure IoT Edge в Azure Pipelines. В этой статье показано, как использовать Azure Pipelines для создания, тестирования и развертывания модулей Azure IoT Edge с помощью YAML.
В этой статье вы научитесь использовать встроенные задачи Azure IoT Edge в Azure Pipelines для создания конвейеров сборки и выпуска для решения на основе IoT Edge. Каждая Azure IoT Edge задача в конвейере выполняет одно из следующих действий:
| Действие | Описание |
|---|---|
| Сборка образов модулей | Принимает код решения IoT Edge и создает образы контейнеров. |
| Отправка образов модулей | Отправляет образы модулей в указанный реестр контейнеров. |
| Создание манифеста развертывания | Принимает файл deployment.template.json и переменные, а затем создает окончательный файл манифеста развертывания IoT Edge. |
| Развертывание на IoT Edge устройствах | Создает развертывания IoT Edge на одном или более устройствах IoT Edge. |
Если это не указано, эта статья не охватывает все функциональные возможности, доступные с помощью параметров задачи. Дополнительные сведения см. на следующих ресурсах:
Предварительные условия
Репозиторий Azure Repos. Если у вас нет его, создайте в проекте репозиторий Git. В этой статье репозиторий называется IoTEdgeRepo.
Решение IoT Edge коммитировано и отправлено в репозиторий. Чтобы создать пример решения для тестирования этой статьи, выполните действия, описанные в Develop Azure IoT Edge модулях с помощью Visual Studio Code. Для этой статьи в нашем репозитории было создано решение с именем IoTEdgeSolution, содержащее код для модуля с именем filtermodule.
Для этой статьи вам потребуется папка решения, созданная шаблонами IoT Edge в Visual Studio Code или Visual Studio. Вам не требуется создавать, отправлять, развертывать или отлаживать этот код, чтобы продолжить. Эти процессы настраиваются в Azure Pipelines.
Убедитесь, что вы знаете путь к файлу deployment.template.json в решении, который используется в нескольких шагах. Если вы не знакомы с ролью шаблона развертывания, см. статью о развертывании модулей и настройке маршрутов.
Совет
Если вы создаете решение, сначала клонируйте репозиторий локально. Затем вы сможете создать решение непосредственно в папке репозитория. Вы можете легко фиксировать и отправлять новые файлы оттуда.
Реестр контейнеров, в который можно отправлять образы модулей. Вы можете использовать Реестр контейнеров Azure или сторонний реестр.
Активный концентратор Azure IoT с по крайней мере двумя IoT Edge устройствами для тестирования отдельных этапов тестирования и рабочего развертывания. Пройдите статьи быстрого начала, чтобы создать устройство IoT Edge на Linux или Windows.
Дополнительные сведения об использовании Azure Repos в Совместное использование кода с Visual Studio и Azure Repos.
Создание конвейера сборки для непрерывной интеграции
В этом разделе показано, как создать конвейер сборки. Вы настраиваете конвейер для автоматического запуска при проверке любых изменений в примере решения IoT Edge и публикации журналов сборки.
Войдите в организацию Azure DevOps (
https://dev.azure.com/{your organization}) и откройте проект, содержащий репозиторий решений IoT Edge.
В меню левой панели вашего проекта выберите Пайплайны. В центре страницы выберите Создать конвейер. Если же конвейеры сборки уже есть, нажмите кнопку Создать конвейер справа вверху.
На странице Где ваш код? выберите Azure Repos Git
YAML.Выберите репозиторий, для которого создается конвейер.
На экране Настройка конвейера выберите Начальный конвейер. Если у вас есть предварительно существующий Azure Pipelines YAML-файл, который вы хотите использовать для создания этого конвейера, можно выбрать Existing Azure Pipelines YAML-файл и указать ветвь и путь в репозитории в файл.
На странице Обзор YAML конвейера можно изменить имя по умолчанию
azure-pipelines.yml, чтобы переименовать файл конфигурации конвейера.Выберите параметр Показывать помощник, чтобы открыть палитру задач.
Чтобы добавить задачу, поместите курсор в конец YAML или в любое место, где нужно добавить инструкции для задачи. Найдите и выберите Azure IoT Edge, заполните параметры задачи следующим образом, а затем выберите Add.
Параметр Описание Действие Выберите Создать образы модулей. Файл template.json. Укажите путь к файлу deployment.template.json в репозитории, содержащем решение IoT Edge. Платформа по умолчанию Выберите соответствующую операционную систему для модулей на основе целевого устройства IoT Edge. Дополнительные сведения об этой задаче и ее параметрах см. в разделе Azure IoT Edge задача.
Совет
После добавления каждой задачи редактор автоматически выделяет добавленные строки. Чтобы предотвратить случайную перезапись, отмените выбор строк и выделите новое место для следующей задачи, прежде чем добавлять дополнительные задачи.
Повторите эту процедуру, чтобы добавить еще три задачи со следующими параметрами:
Задача: Azure IoT Edge
Параметр Описание Действие Выберите Загрузить образы модулей. Тип реестра контейнеров Используйте тип по умолчанию: Реестр контейнеров Azure. подписка Azure Выберите свою подписку. Реестр контейнеров Azure Выберите реестр, который вы хотите использовать для конвейера. Файл template.json. Укажите путь к файлу deployment.template.json в репозитории, содержащем решение IoT Edge. Платформа по умолчанию Выберите соответствующую операционную систему для модулей на основе целевого устройства IoT Edge. Дополнительные сведения об этой задаче и ее параметрах см. в разделе Azure IoT Edge задача.
Задача: Копирование файлов
Параметр Описание Исходная папка Исходная папка, из которой производится копирование. Пусто — это корень репозитория. Используйте переменные, если файлы отсутствуют в репозитории. Пример: $(agent.builddirectory).Содержимое Добавьте две строки: deployment.template.jsonиmodules/**/module.json.Целевая папка Задайте переменную $(Build.ArtifactStagingDirectory). См. статью Переменные сборки, чтобы узнать об описании.Дополнительные сведения об этой задаче и ее параметрах см. в статье Задача копирования файлов.
Задача: Публикация артефактов сборки
Параметр Описание Путь для публикации Задайте переменную $(Build.ArtifactStagingDirectory). См. статью Переменные сборки, чтобы узнать об описании.Имя артефакта Укажите имя по умолчанию: dropРасположение публикации артефакта Используйте расположение по умолчанию: Azure PipelinesДополнительные сведения об этой задаче и параметрах см. в статье Задача публикации артефактов сборки.
Выберите Сохранить в раскрывающемся списке Сохранить и запустить в правом верхнем углу.
Триггер для непрерывной интеграции для конвейера YAML включен по умолчанию. Если вы хотите изменить эти параметры, выберите конвейер и нажмите кнопку "Изменить " в правом верхнем углу. Выберите Дополнительные действия рядом с кнопкой Выполнить в правом верхнем углу и перейдите к Триггеры. Непрерывная интеграция отображается как включенная под именем вашего конвейера. Если вы хотите просмотреть сведения о триггере, установите флажок Переопределить триггер непрерывной интеграции YAML.
Перейдите к следующему разделу для создания конвейера выпуска.
Создание конвейера выпуска для непрерывного развертывания
В этом разделе описано, как создать конвейер выпуска, настроенный для автоматического запуска при удалении артефактов конвейера сборки, и в нем отображаются журналы развертывания в Azure Pipelines.
Создайте новый конвейер и добавьте новый этап:
На вкладке Выпуски в разделе Конвейеры выберите + Новый конвейер. Если у вас уже есть конвейеры выпуска, нажмите кнопку + Создать и щелкните + Создать конвейер выпуска.
Когда будет предложено выбрать шаблон, выберите пустое задание.
Ваш новый конвейер выпуска инициализируется с одним этапом, который называется Этап 1. Переименуйте этап 1 в dev и рассматривайте его как конвейер для непрерывного развертывания в вашей среде разработки. Обычно конвейеры непрерывного развертывания состоят из нескольких этапов, в числе которых разработка, промежуточный процесс и производственная среда. Можно использовать другие имена и создать больше этапов, основываясь на своей практике разработки и выполнения операций. Закройте окно сведений об этапе после его переименования.
Также можно переименовать конвейер выпуска, выбрав вверху текст "Новый конвейер выпуска".
Свяжите выпуск с артефактами сборки, опубликованными конвейером сборки. Выберите Добавить в области артефактов.
На странице Добавление артефакта выберите Сборка как Тип источника. Затем выберите созданный проект и конвейер сборки. При желании Псевдоним источника можно изменить на более описательный. Затем нажмите кнопку "Добавить".
Откройте триггеры артефакта и выберите переключатель для включения триггера непрерывного развертывания. Теперь новый выпуск создается каждый раз, когда доступна новая сборка.
Для этапа разработки заранее настроено одно задание и отсутствие задач. В меню конвейера выберите Задачи, а затем — этап разработка. Выберите Задание агента и измените его Отображаемое имя на Контроль качества. Можно настроить сведения о задании агента, но задача развертывания не зависит от платформы, поэтому можно использовать любую Спецификацию агента в выбранном Пуле агентов.
В задании контроля качества выберите знак "плюс" (+), чтобы добавить две задачи. Выполните поиск и добавьте Azure IoT Edge дважды.
Выберите первую задачу Azure IoT Edge и настройте ее следующими значениями:
Параметр Описание Показать имя Отображаемое имя автоматически изменяется при изменении поля "Действие". Действие Выберите Generate deployment manifest.Файл template.json. Укажите путь: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Путь публикуется из конвейера сборки.Платформа по умолчанию Выберите соответствующую операционную систему для модулей на основе целевого устройства IoT Edge. Путь вывода Вставьте путь $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Этот путь является последним файлом манифеста развертывания IoT Edge.Эти конфигурации помогают заменить URL-адреса образа модуля в
deployment.template.jsonфайле. Создание манифеста развертывания также помогает заменить переменные точными значениями, определенными в файлеdeployment.template.json. В Visual Studio/Visual Studio Code вы указываете фактическое значение в файле.env. В Azure Pipelines задайте значение на вкладке Переменные конвейера выпуска. Перейдите на вкладку Переменные и настройте имя и значение следующим образом:- ACR_ADDRESS: адрес сервера входа в Реестр контейнеров Azure. Сервер входа можно получить на странице обзора реестра контейнеров на портале Azure.
- ACR_PASSWORD: пароль Реестр контейнеров Azure.
- ACR_USER: имя пользователя Реестр контейнеров Azure.
Если в проекте есть другие переменные, можно указать их имена и значения на этой вкладке. Создание манифеста развертывания может распознать только переменные в версии
${VARIABLE}. Убедитесь, что вы используете эту версию в файлах*.template.json."registryCredentials": { "<ACR name>": { // Your Azure Container Registry **Registry name** value "username": "${ACR_USER}", "password": "${ACR_PASSWORD}", "address": "${ACR_ADDRESS}" } }
Выберите вторую задачу Azure IoT Edge и настройте ее со следующими значениями:
Параметр Описание Показать имя Отображаемое имя автоматически изменяется при изменении поля "Действие". Действие Выберите Deploy to IoT Edge devices.Файл развертывания Вставьте путь $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Этот путь — это файл манифеста развертывания для IoT Edge.подписка Azure Выберите подписку, содержащую Центр Интернета вещей. имя IoT Хаб Выберите нужный Центр Интернета вещей. Выбор одного или нескольких устройств Выберите, нужно ли развернуть конвейер выпуска на одно или несколько устройств. При развертывании на одном устройстве введите идентификатор устройства IoT Edge. При развертывании на нескольких устройствах следует указать целевое условие устройства. Целевое условие — это фильтр, соответствующий набору устройств IoT Edge в Центр Интернета вещей. Если вы хотите использовать теги устройств в качестве условия, необходимо обновить соответствующие теги устройств с помощью двойника устройства Центр Интернета вещей. Обновите идентификатор развертывания IoT Edge и приоритет развертывания IoT Edge в расширенных параметрах. Дополнительные сведения о создании развертывания для нескольких устройств см. в статье Понимание автоматических развертываний IoT Edge. Идентификатор устройства или условие целевого состояния В зависимости от предыдущего выбора укажите идентификатор устройства или целевое условие для развертывания на нескольких устройствах. Продвинутые Для идентификатора развертывания IoT Edge укажите $(System.TeamProject)-$(Release.EnvironmentName). Эта переменная связывает проект и имя выпуска с идентификатором развертывания IoT Edge.Если в задаче используется образ, который находится в частном доверенном реестре Docker, не видимом в общедоступном облаке, можно задать для переменной среды SKIP_MODULE_IMAGE_VALIDATION значение
true, чтобы пропустить проверку образа.
Выберите Сохранить, чтобы сохранить изменения в новом конвейере выпуска. Вернитесь в представление конвейера, выбрав в меню вкладку Конвейер.
Убедитесь в правильности работы IoT Edge CI/CD, используя конвейеры сборки и релиза.
Чтобы запустить задание сборки, можно запушить коммит в репозиторий исходного кода или запустить его вручную. В этом разделе вы вручную запускаете конвейер CI/CD для проверки правильности его работы. Затем вы проверите успешность развертывания.
В левой части меню выберите Конвейеры и откройте конвейер сборки, созданный в начале этой статьи.
Чтобы запустить задание сборки в конвейере сборки, нажмите справа вверху кнопку Запустить конвейер.
Проверьте параметры функции Запустить конвейер. Затем нажмите кнопку Запустить.
Выберите Задание агента 1, чтобы просмотреть ход выполнения. Чтобы просмотреть журналы выходных данных задания, выберите задание.
Если выполнение конвейера сборки завершится успешно, активируется переход на этап dev. Успешный выпуск dev создает развертывание IoT Edge для устройств, на которые нацелено IoT Edge.
Выберите dev этап, чтобы просмотреть журналы релизов.
В случае сбоя конвейера начните с просмотра журналов. Чтобы просмотреть журналы, перейдите к сводке выполнения конвейера и выберите задание и задачу. В случае сбоя конкретной задачи проверьте журналы этой задачи. Подробные инструкции по настройке и использованию журналов см. в статье Анализ журналов для диагностики проблем конвейера.
Следующие шаги
- Понимание развертывания IoT Edge для отдельных устройств или в масштабе в Understanding IoT Edge deployments
- Пройдите через шаги для создания, обновления или удаления развертывания в развертывании и мониторинге модулей IoT Edge в крупном масштабе.