다음을 통해 공유


AzureIoTEdge@2 - Azure IoT Edge v2 작업

이 작업을 사용하여 Azure IoT Edge 이미지를 빠르고 효율적으로 빌드하고 배포할 수 있습니다.

이 작업은 사용자 지정 변수를 지원합니다. 파이프라인에서 변수를 사용하는 방법을 잘 모르는 경우 변수 정의를 참조하세요.

Syntax

# 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).
# 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.
  # 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, , , Generate deployment manifest. Deploy to IoT Edge devicesPush module images 기본값은 Build module images입니다.

Azure IoT Edge 작업을 선택합니다.

Build module images모듈만 빌드합니다(컴파일 오류를 검사 데 사용할 수 있습니다).

Push module images 는 모듈을 컨테이너 레지스트리에 푸시합니다.

Deploy to IoT Edge devices는 생성된 배포 파일을 IoT Hub 배포합니다. (릴리스 파이프라인에 Deploy 작업을 배치하는 것이 좋습니다.)


deploymentFilePath - 배포 파일
string. 필요한 경우 action == Deploy to IoT Edge devices입니다. 기본값은 $(System.DefaultWorkingDirectory)/config/deployment.json입니다.

배포 json 파일을 선택합니다. 이 작업이 에 있는 release pipeline경우 아티팩트에서 배포 파일의 위치를 설정해야 합니다. (기본값은 대부분의 조건에서 작동합니다.) 이 작업이 빌드 파이프라인에 있는 경우 배포 매니페스트 출력 경로를 지정해야 합니다.


azureSubscription - Azure 구독에 IoT Hub 포함
입력 별칭: connectedServiceNameARM. string. 필요한 경우 action == Deploy to IoT Edge devices입니다.

IoT Hub 포함된 Azure 구독을 선택합니다.


iothubname - IoT Hub 이름
string. 필요한 경우 action == Deploy to IoT Edge devices입니다.

IoT Hub 선택합니다.


deploymentid - IoT Edge 배포 ID
string. 필요한 경우 action = Deploy to IoT Edge devices입니다. 기본값은 $(System.TeamProject)-devops-deployment입니다.

IoT Edge 배포 ID를 입력합니다. ID가 이미 있는 경우 재정의됩니다. 여기에는 최대 128개의 소문자와 숫자가 있으며, 다음 문자가 허용 -:+%_#*?!(),=@;'됩니다. 자세한 내용은 Azure IoT Edge 배포를 참조하세요.


priority - IoT Edge 배포 우선 순위
string. 필요한 경우 action = Deploy to IoT Edge devices입니다. 기본값은 0입니다.

priority 배포 충돌을 resolve 위해 를 양의 정수로 설정합니다. 이 작업이 여러 배포의 대상이 되는 경우 디바이스는 우선 순위가 가장 높은 배포를 사용하거나, 우선 순위가 동일한 두 배포의 경우 최신 생성 시간을 사용합니다. 자세한 내용은 Azure IoT Edge 배포를 참조하세요.


deviceOption - 단일/다중 디바이스 선택
string. 필요한 경우 action == Deploy to IoT Edge devices입니다. 허용되는 값: Single Device, Multiple Devices.

태그에 따라 단일 또는 여러 디바이스에 배포하도록 선택합니다.


deviceId - IoT Edge 디바이스 ID
string. 필요한 경우 deviceOption == Single Device입니다.

IoT Edge device ID입력합니다.


targetcondition - 디바이스 대상 조건 IoT Edge
string. 필요한 경우 deviceOption == Multiple Devices입니다.

target condition 배포하려는 디바이스의 를 입력합니다. 큰따옴표를 사용하지 마세요. 예: tags.building=9tags.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 구독을 선택합니다.


azureContainerRegistry - Azure Container Registry
string. 필요한 경우 containerregistrytype = Azure Container Registry입니다.

Azure Container Registry 선택합니다.


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, , , arm32v7. arm64v8windows-amd64 기본값은 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입니다.

생성된 배포 매니페스트가 스키마 유효성 검사를 통과하지 못하면 이 단계에 실패합니다. JSON 스키마 저장소에서 검색 Azure IoT Edge deployment 하여 최신 스키마를 찾습니다.


bypassModules - 모듈 무시
string. 선택 사항입니다. 을 사용할 때 action = Push module images사용합니다.

에서 빌드하거나 푸시 .template.json할 필요가 없는 모듈을 선택하고 모듈 이름을 지정하고 쉼표로 구분합니다. 예: 에 및 SampleModule2 가 있고 만 빌드하거나 푸시SampleModule1하려는 경우 SampleModule1 바이패스 모듈을 로 SampleModule2.template.json 설정합니다. 에서 모든 모듈을 빌드하려면 이 항목을 비워 둡니다 .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에서 이러한 작업을 사용하는 방법에 대한 단계별 예제는 다음 문서를 참조하세요.

요구 사항

요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드, 클래식 릴리스
실행 중 에이전트, DeploymentGroup
요청 없음
Capabilities 이 작업은 작업의 후속 작업에 대한 요구를 충족하지 않습니다.
명령 제한 사항 모두
설정 가능한 변수 모두
에이전트 버전 지원되는 모든 에이전트 버전.
작업 범주 빌드