builds/service/service-deployment.yaml (99 lines of code) (raw):

# Run a simple smoke test against a dogfood deployment of the IoT Hub service pr: none trigger: none schedules: - cron: '0 3 * * *' displayName: Nightly run 1.5 LTS branches: include: - main always: true variables: Codeql.Enabled: false DisableDockerDetector: true pool: name: $(pool.linux.name) demands: - ImageOverride -equals agent-aziotedge-ubuntu-22.04-msmoby steps: - checkout: self fetchDepth: 1 - task: AzureKeyVault@2 displayName: Get secrets inputs: azureSubscription: $(az.subscription) keyVaultName: $(az.keyVault) secretsFilter: >- TestIotHubConnectionString, TestEventHubCompatibleEndpoint, TestRootCaCertificate, TestRootCaKey, TestRootCaPassword - pwsh: | $certsDir = '$(System.ArtifactsDirectory)/certs' New-Item "$certsDir" -ItemType Directory -Force | Out-Null $env:ROOT_CERT | Out-File -Encoding Utf8 "$certsDir/rsa_root_ca.cert.pem" $env:ROOT_KEY | Out-File -Encoding Utf8 "$certsDir/rsa_root_ca.key.pem" Write-Output "##vso[task.setvariable variable=certsDir]$certsDir" displayName: Install CA keys env: ROOT_CERT: $(TestRootCaCertificate) ROOT_KEY: $(TestRootCaKey) - pwsh: | $testDir = '$(Build.SourcesDirectory)/test/Microsoft.Azure.Devices.Edge.Test' dotnet build $testDir $binDir = Convert-Path "$testDir/bin/Debug/net8.0" Write-Output "##vso[task.setvariable variable=binDir]$binDir" displayName: Build tests - pwsh: | $context = @{ logFile = Join-Path '$(binDir)' 'testoutput.log'; caCertScriptPath = Convert-Path '$(Build.SourcesDirectory)/tools/CACertificates'; rootCaCertificatePath = Convert-Path '$(certsDir)/rsa_root_ca.cert.pem'; rootCaPrivateKeyPath = Convert-Path '$(certsDir)/rsa_root_ca.key.pem'; } $context | ConvertTo-Json | Out-File -Encoding Utf8 '$(binDir)/context.json' displayName: Create test arguments file (context.json) - pwsh: | if ($env:EH_ARG -and $env:IH_ARG) { $env:E2E_EVENT_HUB_ENDPOINT = $env:EH_ARG $env:E2E_IOT_HUB_CONNECTION_STRING = $env:IH_ARG } else { $env:E2E_EVENT_HUB_ENDPOINT = $env:EH_KV $env:E2E_IOT_HUB_CONNECTION_STRING = $env:IH_KV } $testFile = '$(binDir)/Microsoft.Azure.Devices.Edge.Test.dll' sudo --preserve-env dotnet vstest $testFile --logger:trx --testcasefilter:Name=TempSensor displayName: Run tests env: EH_ARG: $(connstr.eventHub) EH_KV: $(TestEventHubCompatibleEndpoint) IH_ARG: $(connstr.iotHub) IH_KV: $(TestIotHubConnectionString) E2E_ROOT_CA_PASSWORD: $(TestRootCaPassword) - task: PublishTestResults@2 displayName: Publish test results inputs: testResultsFormat: vstest testResultsFiles: '**/*.trx' searchFolder: $(Build.SourcesDirectory)/TestResults testRunTitle: Service deployment build ($(Build.BuildNumber) linux amd64) buildPlatform: amd64 condition: succeededOrFailed() - pwsh: | $logDir = '$(Build.ArtifactStagingDirectory)/logs' New-Item $logDir -ItemType Directory -Force | Out-Null Out-File "$logDir/$(Build.DefinitionName)-$(Build.BuildNumber)" Copy-Item "$(Build.SourcesDirectory)/TestResults" "$logDir/" -Recurse # The setup fixture runs outside the scope of any test, so its logs (*-test-*.log) aren't # included in the TRX. Copy them manually here. Copy-Item "$(binDir)/*-test-*.log" "$logDir/" Copy-Item "$(binDir)/testoutput.log" "$logDir/" displayName: Collect Logs condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: Publish logs inputs: PathtoPublish: $(Build.ArtifactStagingDirectory)/logs ArtifactName: logs-service-deployment-$(Build.BuildNumber)-linux-amd64 condition: succeededOrFailed()