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


AzureIoTEdge@2 — задача Azure IoT Edge версии 2

Используйте эту задачу для быстрого и эффективного развертывания образов в Azure IoT Edge.

Эта задача поддерживает пользовательские переменные. Если вы не знакомы с тем, как использовать переменные в конвейерах, см. определить переменные.

Примечание.

Эта задача не поддерживает проверку подлинности Azure Resource Manager сфедерации удостоверений рабочего процесса.

Синтаксис

# Azure IoT Edge v2
# Build and deploy an Azure IoT Edge image.
- task: AzureIoTEdge@2
  inputs:
    action: 'Build module images' # 'Build module images' | 'Push module images' | 'Generate deployment manifest' | 'Deploy to IoT Edge devices'. Required. Action. Default: Build module images.
    #deploymentFilePath: '$(System.DefaultWorkingDirectory)/config/deployment.json' # string. Required when action == Deploy to IoT Edge devices. Deployment file. Default: $(System.DefaultWorkingDirectory)/config/deployment.json.
    #azureSubscription: # string. Alias: connectedServiceNameARM. Required when action == Deploy to IoT Edge devices. Azure subscription contains IoT Hub. 
    #iothubname: # string. Required when action == Deploy to IoT Edge devices. IoT Hub name. 
    #deviceOption: # 'Single Device' | 'Multiple Devices'. Required when action == Deploy to IoT Edge devices. Choose single/multiple device. 
    #deviceId: # string. Required when deviceOption == Single Device. IoT Edge device ID. 
    #targetcondition: # string. Required when deviceOption == Multiple Devices. IoT Edge device target condition. 
    #containerregistrytype: 'Azure Container Registry' # 'Azure Container Registry' | 'Generic Container Registry'. Required when action = Push module images. Container registry type. Default: Azure Container Registry.
    #dockerRegistryConnection: # string. Alias: dockerRegistryEndpoint. Required when containerregistrytype = Generic Container Registry. Docker Registry Connection. 
    #azureSubscriptionEndpoint: # string. Optional. Use when containerregistrytype = Azure Container Registry. Azure subscription. 
    #azureContainerRegistry: # string. Required when containerregistrytype = Azure Container Registry. Azure Container Registry. 
    #templateFilePath: 'deployment.template.json' # string. Required when action = Build module images || action = Push module images || action = Generate deployment manifest. .template.json file. Default: deployment.template.json.
    #defaultPlatform: 'amd64' # 'amd64' | 'windows-amd64' | 'arm32v7' | 'arm64v8'. Required when action = Build module images || action = Push module images || action = Generate deployment manifest. Default platform. Default: amd64.
    #fillRegistryCredential: 'true' # 'true' | 'false'. Required when action = Push module images. Add registry credential to deployment manifest. Default: true.
    #deploymentManifestOutputPath: '$(System.DefaultWorkingDirectory)/config/deployment.json' # string. Required when action == Generate deployment manifest. Output path. Default: $(System.DefaultWorkingDirectory)/config/deployment.json.
    #validateGeneratedDeploymentManifest: 'false' # 'true' | 'false'. Required when action = Generate deployment manifest. Validate the schema of generated deployment manifest. Default: false.
  # Advanced
    #deploymentid: '$(System.TeamProject)-devops-deployment' # string. Required when action = Deploy to IoT Edge devices. IoT Edge deployment ID. Default: $(System.TeamProject)-devops-deployment.
    #priority: '0' # string. Required when action = Deploy to IoT Edge devices. IoT Edge deployment priority. Default: 0.
  # Advanced
    #bypassModules: # string. Optional. Use when action = Push module images. Bypass module(s).
# Azure IoT Edge v2
# Build and deploy an Azure IoT Edge image.
- task: AzureIoTEdge@2
  inputs:
    action: 'Build module images' # 'Build module images' | 'Push module images' | 'Generate deployment manifest' | 'Deploy to IoT Edge devices'. Required. Action. Default: Build module images.
    #deploymentFilePath: '$(System.DefaultWorkingDirectory)/config/deployment.json' # string. Required when action == Deploy to IoT Edge devices. Deployment file. Default: $(System.DefaultWorkingDirectory)/config/deployment.json.
    #azureSubscription: # string. Alias: connectedServiceNameARM. Required when action == Deploy to IoT Edge devices. Azure subscription contains IoT Hub. 
    #iothubname: # string. Required when action == Deploy to IoT Edge devices. IoT Hub name. 
    #deviceOption: # 'Single Device' | 'Multiple Devices'. Required when action == Deploy to IoT Edge devices. Choose single/multiple device. 
    #deviceId: # string. Required when deviceOption == Single Device. IoT Edge device ID. 
    #targetcondition: # string. Required when deviceOption == Multiple Devices. IoT Edge device target condition. 
    #containerregistrytype: 'Azure Container Registry' # 'Azure Container Registry' | 'Generic Container Registry'. Required when action = Push module images. Container registry type. Default: Azure Container Registry.
    #dockerRegistryConnection: # string. Alias: dockerRegistryEndpoint. Required when containerregistrytype = Generic Container Registry. Docker Registry Connection. 
    #azureSubscriptionEndpoint: # string. Optional. Use when containerregistrytype = Azure Container Registry. Azure subscription. 
    #azureContainerRegistry: # string. Required when containerregistrytype = Azure Container Registry. Azure Container Registry. 
    #templateFilePath: 'deployment.template.json' # string. Required when action = Build module images || action = Push module images || action = Generate deployment manifest. .template.json file. Default: deployment.template.json.
    #defaultPlatform: 'amd64' # 'amd64' | 'windows-amd64' | 'arm32v7'. Required when action = Build module images || action = Push module images || action = Generate deployment manifest. Default platform. Default: amd64.
    #fillRegistryCredential: 'true' # 'true' | 'false'. Required when action = Push module images. Add registry credential to deployment manifest. Default: true.
    #deploymentManifestOutputPath: '$(System.DefaultWorkingDirectory)/config/deployment.json' # string. Required when action == Generate deployment manifest. Output path. Default: $(System.DefaultWorkingDirectory)/config/deployment.json.
    #validateGeneratedDeploymentManifest: 'false' # 'true' | 'false'. Required when action = Generate deployment manifest. Validate the schema of generated deployment manifest. Default: false.
  # Advanced
    #deploymentid: '$(System.TeamProject)-devops-deployment' # string. Required when action = Deploy to IoT Edge devices. IoT Edge deployment ID. Default: $(System.TeamProject)-devops-deployment.
    #priority: '0' # string. Required when action = Deploy to IoT Edge devices. IoT Edge deployment priority. Default: 0.
  # Advanced
    #bypassModules: # string. Optional. Use when action = Push module images. Bypass module(s).

Входные данные

action - действие
string. Обязательное. Допустимые значения: Build module images, , Push module imagesGenerate deployment manifestDeploy to IoT Edge devices. Значение по умолчанию: Build module images.

Выбирает действие Azure IoT Edge.

Build module images только создает модули (его можно использовать для проверки ошибок компиляции).

Push module images отправляет модули в реестр контейнеров.

Deploy to IoT Edge devices развертывает созданный файл развертывания в Центре Интернета вещей. (Рекомендуется поместить задачу Deploy в конвейер выпуска.)


файла развертывания deploymentFilePath -
string. Требуется, если action == Deploy to IoT Edge devices. Значение по умолчанию: $(System.DefaultWorkingDirectory)/config/deployment.json.

Выбирает json-файл развертывания. Если эта задача находится в release pipeline, необходимо задать расположение файла развертывания в артефакте. (Значение по умолчанию работает для большинства условий.) Если эта задача находится в конвейере сборки, необходимо указать выходной путь манифеста развертывания.


azureSubscription - подписка Azure содержит Центра Интернета вещей
Псевдоним ввода: connectedServiceNameARM. string. Требуется, если action == Deploy to IoT Edge devices.

Выбирает подписку Azure, содержащую Центр Интернета вещей.


iothubname - имя Центра Интернета вещей
string. Требуется, если action == Deploy to IoT Edge devices.

Выбирает Центр Интернета вещей.


deploymentid - идентификатор развертывания IoT Edge
string. Требуется, если action = Deploy to IoT Edge devices. Значение по умолчанию: $(System.TeamProject)-devops-deployment.

Вводит идентификатор развертывания IoT Edge. Если идентификатор уже существует, он будет переопределен. Это имеет до 128 строчных букв и чисел, а следующие символы разрешены: -:+%_#*?!(),=@;'. Дополнительные сведения см. в развертывании Azure IoT Edge.


priority - приоритет развертывания IoT Edge
string. Требуется, если action = Deploy to IoT Edge devices. Значение по умолчанию: 0.

Задает priority положительным целым числом для устранения конфликтов развертывания. Если эта задача предназначена для нескольких развертываний, устройство будет использовать его с наивысшим приоритетом или, в случае двух развертываний с одинаковым приоритетом, последнее время создания. Дополнительные сведения см. в развертывании Azure IoT Edge.


deviceOption - Выбор одного или нескольких устройств
string. Требуется, если action == Deploy to IoT Edge devices. Допустимые значения: Single Device, Multiple Devices.

В соответствии с тегами выбирает развертывание на одном или нескольких устройствах.


deviceId - идентификатор устройства IoT Edge
string. Требуется, если deviceOption == Single Device.

Входные данные device IDIoT Edge.


targetcondition - целевом условии устройства IoT Edge
string. Требуется, если deviceOption == Multiple Devices.

Вводит target condition устройств, которые вы хотите развернуть. Не используйте двойные кавычки. Пример: tags.building=9 и tags.environment='test'. Дополнительные сведения см. в развертывании Azure IoT Edge.


типа реестра контейнеров containerregistrytype -
string. Требуется, если action = Push module images. Допустимые значения: Azure Container Registry, Generic Container Registry. Значение по умолчанию: Azure Container Registry.

Выбирает Container Registry Type. Azure Container Registry для ACR, а Generic Container Registry — для универсальных реестров, включая центр Docker.


dockerRegistryConnection - подключение к реестру Docker
Псевдоним ввода: dockerRegistryEndpoint. string. Требуется, если containerregistrytype = Generic Container Registry.

Выбирает универсальное подключение реестра Docker. Это необходимо для сборки и отправки.


azureSubscriptionEndpoint - подписке Azure
string. Необязательно. Используется при containerregistrytype = Azure Container Registry.

Выбирает подписку Azure.


реестра контейнеров Azure azureContainerRegistry -
string. Требуется, если containerregistrytype = Azure Container Registry.

Указывает реестр контейнеров Azure. Это значение должно быть указано в формате json.

azureContainerRegistry: '{"loginServer": "contoso.azurecr.io"}

templateFilePath - .template.json файла
string. Требуется, если action = Build module images || action = Push module images || action = Generate deployment manifest. Значение по умолчанию: deployment.template.json.

Путь к решению Azure IoT Edge .template.json. Этот файл определяет модули и маршруты в решении Azure IoT Edge. Имя файла должно заканчиваться .template.json.


defaultPlatform - платформы по умолчанию
string. Требуется, если action = Build module images || action = Push module images || action = Generate deployment manifest. Допустимые значения: amd64, , windows-amd64arm32v7arm64v8. Значение по умолчанию: amd64.

В .template.jsonможно оставить платформу модулей не указано. Для этих модулей будет использоваться платформа по умолчанию.


defaultPlatform - платформы по умолчанию
string. Требуется, если action = Build module images || action = Push module images || action = Generate deployment manifest. Допустимые значения: amd64, windows-amd64, arm32v7. Значение по умолчанию: amd64.

В .template.jsonможно оставить платформу модулей не указано. Для этих модулей будет использоваться платформа по умолчанию.


fillRegistryCredential - Добавление учетных данных реестра в манифест развертывания
string. Требуется, если action = Push module images. Допустимые значения: true, false. Значение по умолчанию: true.

Добавляет учетные данные реестра для отправки образов Docker в манифест развертывания.


deploymentManifestOutputPath - пути вывода
string. Требуется, если action == Generate deployment manifest. Значение по умолчанию: $(System.DefaultWorkingDirectory)/config/deployment.json.

Выходной путь созданного манифеста развертывания.


validateGeneratedDeploymentManifest - проверьте схему созданного манифеста развертывания
string. Требуется, если action = Generate deployment manifest. Допустимые значения: true, false. Значение по умолчанию: false.

Сбой этого шага, если созданный манифест развертывания не проходит проверку схемы. Выполните поиск Azure IoT Edge deployment в хранилище схем JSON , чтобы найти последнюю схему.


модуля обхода bypassModules -
string. Необязательно. Используется при action = Push module images.

Выбирает модули, которые не нужно создавать или отправлять в .template.json, задает имена модулей и разделяет их запятыми. Пример: если у вас есть SampleModule1 и SampleModule2 в .template.json, и вы хотите создать или отправить SampleModule1, установите модули обхода как SampleModule2. Оставьте это пустым, если вы хотите создать все модули в .template.json.


Параметры управления задачами

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

Выходные переменные

Эта задача определяет следующие выходные переменные, которые можно использовать в подчиненных шагах, заданиях и этапах.

DEPLOYMENT_FILE_PATH
Это путь к созданному файлу развертывания.

Замечания

Используйте эту задачу для создания, тестирования и эффективного развертывания приложений в Azure IoT Edge.

Эта задача поддерживает пользовательские переменные. Если вы не знакомы с тем, как использовать переменные в конвейерах, см. раздел Определение переменных.

Примеры

Сборка образов модулей

В следующем примере YAML создаются образы модулей:

- task: AzureIoTEdge@2
  displayName: AzureIoTEdge - Build module images
  inputs:
    action: Build module images
    templateFilePath: deployment.template.json
    defaultPlatform: amd64  

Отправка образов модулей

Следующий пример YAML отправляет образы модулей:

variables:
  azureSubscriptionEndpoint: Contoso
  azureContainerRegistry: contoso.azurecr.io

steps:    
- task: AzureIoTEdge@2
  displayName: AzureIoTEdge - Push module images
  inputs:
    action: Push module images
    containerregistrytype: Azure Container Registry
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: {"loginServer":"$(azureContainerRegistry)"}
    templateFilePath: deployment.template.json
    defaultPlatform: amd64
    fillRegistryCredential: true

Создание манифеста развертывания

В следующем примере YAML создается манифест развертывания на основе файла шаблона:

steps:    
- task: AzureIoTEdge@2
  displayName: AzureIoTEdge - Generate deployment manifest
  inputs:
    action: Generate deployment manifest
    templateFilePath: deployment.template.json
    defaultPlatform: amd64
    deploymentManifestOutputPath: $(System.DefaultWorkingDirectory)/config/deployment.json
    validateGeneratedDeploymentManifest: false

Развертывание на устройствах IoT Edge

В следующем примере YAML развертываются образы модулей:

steps:
- task: AzureIoTEdge@2
  displayName: 'Azure IoT Edge - Deploy to IoT Edge devices'
  inputs:
    action: 'Deploy to IoT Edge devices'
    deploymentFilePath: $(System.DefaultWorkingDirectory)/config/deployment.json
    azureSubscription: $(azureSubscriptionEndpoint)
    iothubname: iothubname
    deploymentid: '$(System.TeamProject)-devops-deployment'
    priority: '0'
    deviceOption: 'Single Device'
    deviceId: deviceId

Дополнительные примеры

Пошаговые примеры использования этих действий в Azure Pipelines см. в следующих статьях:

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Нет
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любое
переменные settable Любое
Версия агента Все поддерживаемые версии агента.
Категория задач Строить