Azure IoT Edge 任务

Azure DevOps Services

使用此任务可快速高效地生成、测试和部署应用程序,以 Azure IoT 的边缘。

此任务支持自定义变量。 如果不熟悉如何在管道中使用变量,请参阅 定义变量

生成模块映像

parameters 说明
action
操作
(必需) 选择 Azure IoT 边缘操作,在本例中为 "生成模块映像"。
默认值:生成模块映像。
templateFilePath
.template.json 文件
需要 () Azure IoT 的边缘解决方案文件的路径。 此文件定义 Azure IoT Edge 解决方案中的模块和路由。 文件名必须以. template 结尾。
默认值: deployment。
defaultPlatform
默认平台
(所需的) 在你的模板 json 文件中,可以不指定模块平台,在这种情况下,将使用默认平台。
默认值: amd64。

以下 YAML 示例生成模块映像:

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

推送模块映像

parameters 说明
action
操作
(必需) 选择 Azure IoT 边缘操作,在此示例中,推送模块映像
默认值:生成模块映像。
containerregistrytype
容器注册表类型
(必需) 容器注册表的类型,可能是 Azure Container Registry 注册表位于 Azure 中或 Generic Container Registry 其他注册表中(如 docker 中心)。 有关详细信息,请参阅 容器注册表类型
默认值: Azure 容器注册表。
templateFilePath
.template.json 文件
需要 () Azure IoT 的边缘解决方案文件的路径。 此文件定义 Azure IoT Edge 解决方案中的模块和路由。 文件名必须以. template 结尾。
默认值: deployment。
defaultPlatform
默认平台
(所需的) 在你的模板 json 文件中,可以不指定模块平台,在这种情况下,将使用默认平台。
默认值: amd64。
fillRegistryCredential
向部署清单添加注册表凭据
需要 () 将 Docker 映像的注册表凭据添加到部署清单。
默认值: true。
bypassModules
旁路模块 (s)
(可选) 指定模块 (s) ,无需在文件中以逗号分隔的模块名称列表生成或推送。 例如,如果文件中有两个模块 "SampleModule1,SampleModule2",并且想要生成或仅推送 SampleModule1,请将 SampleModule2 指定为旁路模块 (s) 。 留空以生成或推送所有模块。
位于 Azure Pipelines web UI 的 "高级" 部分。

以下 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

生成部署清单

parameters 说明
action
操作
(必需) 选择 Azure IoT 边缘操作,在此示例中,将生成部署清单
默认值:生成模块映像。
templateFilePath
.template.json 文件
需要 () Azure IoT 的边缘解决方案文件的路径。 此文件定义 Azure IoT Edge 解决方案中的模块和路由。 文件名必须以. template 结尾。
默认值: deployment。
defaultPlatform
默认平台
(所需的) 在你的模板 json 文件中,可以不指定模块平台,在这种情况下,将使用默认平台。
默认值: amd64。
deploymentManifestOutputPath
输出路径
(所需) 生成的部署清单的输出路径。
默认值: $ (System.defaultworkingdirectory) /config/deployment.json。
validateGeneratedDeploymentManifest
验证生成的部署清单的架构
(必需的) 在生成的部署清单未通过架构验证时,此步骤将失败。 可在JSON 架构存储中搜索 Azure IoT Edge 部署以查找最新的架构。
默认值:false。

以下 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 设备

parameters 说明
action
操作
(必需) 选择 Azure IoT 边缘操作,在此示例中,将部署到 IoT Edge 设备
默认值:生成模块映像。
deploymentFilePath
部署文件
(必需) 选择部署 JSON 文件。 如果此任务在发布管道中,则必须在项目中指定部署文件的位置 (默认值适用于大多数情况) 。 如果此任务在生成管道中,则必须指定部署清单输出路径。
默认值: $ (System.defaultworkingdirectory) /config/deployment.json。
connectedServiceNameARM
Azure 订阅包含 IoT 中心
(必需) 选择包含 IoT 中心的 Azure 订阅
参数别名: azureSubscription
iothubname
IoT 中心名称
(必需) 选择 IoT 中心
deviceOption
选择单个/多个设备
(必需) 选择部署到单个设备,或选择使用标记指定到多个设备。
deviceId
IoT Edge 设备 ID
如果设备选项为 "单一设备") 指定 IoT Edge 设备 ID,则 ("必需"。
targetcondition
IoT Edge 设备目标条件
如果设备选项是多个设备,则 (必需的) 指定要部署到的设备的目标条件。 例如,tags = 9 和 tags。环境 = "test"。 不要包含双引号。 更多详细信息
deploymentid
IoT Edge 部署 ID
需要 () 输入 IoT Edge 部署 ID。 如果 ID 已存在,它将被重写。 最多128小写字母、数字和字符 - : + % _ # * ? ! ( ) , = @ ;更多详细信息
位于 Web UI Azure Pipelines高级部分。
默认值: $ (System.TeamProject) -devops-deployment。
priority
IoT Edge部署优先级
(必需) 用于解决部署冲突的正整数。 当设备被多个部署作为目标时,它将使用优先级最高的部署;如果两个部署具有相同的优先级,则使用具有最新创建时间的设备。
位于 Web UI Azure Pipelines高级部分。
默认值:0。

以下 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 容器注册表

parameters 说明
containerregistrytype
容器注册表类型
(必需) 为 ACR Azure 容器注册表通用注册表(包括 Docker 中心)选择"通用容器注册表"。
azureSubscriptionEndpoint
Azure 订阅
(为必需,如果 containerregistrytype = Azure 容器注册表) 选择 Azure 订阅。
azureContainerRegistry
Azure 容器注册表
(必需) 选择Azure 容器注册表。

其他容器注册表

parameters 说明
containerregistrytype
容器注册表类型
(必需) 为 ACR Azure 容器注册表通用注册表(包括 Docker 中心)选择"通用容器注册表"。
dockerRegistryEndpoint
Docker 注册表连接
(必需) 选择通用 Docker 注册表连接。 生成和推送所需的
参数别名: dockerRegistryConnection

示例

有关如何在 Azure Pipelines 中使用这些操作的分步示例,请参阅以下文章:

开源

此任务开放源代码上GitHub。 欢迎提供反馈和建议。