vsts/test-release-nuget.yaml (264 lines of code) (raw):

name: $(BuildID)_$(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r) resources: - repo: self clean: true jobs: ### Linux build ### - job: LINUX displayName: Linux timeoutInMinutes: 75 strategy: # Change maxParallel to 1 make builds run in serial rather than in parallel maxParallel: 100 matrix: .Net 6.0: FRAMEWORK: net6.0 .Net 8.0: FRAMEWORK: net8.0 .Net Core 3.1: FRAMEWORK: netcoreapp3.1 .Net Core 2.1.30: FRAMEWORK: netcoreapp2.1.30 condition: succeeded() pool: vmImage: ubuntu-20.04 steps: - task: UseDotNet@2 displayName: 'Use .NET Core SDK 2.1' inputs: packageType: sdk version: 2.1.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: 'Use .NET Core SDK 3.1' inputs: packageType: sdk version: 3.1.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: 'Use .NET SDK 8.0' inputs: packageType: sdk version: 8.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: 'Use .NET SDK 6.0' inputs: packageType: sdk version: 6.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: DownloadBuildArtifacts@0 inputs: buildType: 'specific' project: 'f9b79625-2860-4d92-a4ee-57b03fabfd10' pipeline: '278' # csharp-release-build buildVersionToDownload: 'latest' downloadType: 'single' downloadPath: '$(System.ArtifactsDirectory)' artifactName: 'nuget' - task: CopyFiles@2 inputs: SourceFolder: '$(System.ArtifactsDirectory)' Contents: '**' TargetFolder: '$(Build.SourcesDirectory)/bin/pkg' OverWrite: true - task: Docker@1 displayName: "Start TPM Simulator" inputs: containerregistrytype: "Container Registry" command: "Run an image" imageName: aziotbld/testtpm containerName: "testtpm-instance" ports: | 127.0.0.1:2321:2321 127.0.0.1:2322:2322 restartPolicy: unlessStopped - task: Docker@1 displayName: 'Start Test Proxy' inputs: containerregistrytype: 'Container Registry' command: 'Run an image' imageName: aziotbld/testproxy containerName: 'testproxy-instance' ports: '127.0.0.1:8888:8888' restartPolicy: unlessStopped - powershell: ./vsts/releaseTest.ps1 displayName: Test release nugets env: # Environment variables for IoT Hub E2E tests IOTHUB_CONNECTION_STRING: $(IOTHUB-CONNECTION-STRING) IOTHUB_X509_DEVICE_PFX_CERTIFICATE: $(IOTHUB-X509-DEVICE-PFX-CERTIFICATE) IOTHUB_X509_CHAIN_DEVICE_NAME: $(IOTHUB-X509-CHAIN-DEVICE-NAME) IOTHUB_X509_CHAIN_DEVICE_PFX_CERTIFICATE: $(IOTHUB-X509-CHAIN-DEVICE-PFX-CERTIFICATE) IOTHUB_USER_ASSIGNED_MSI_RESOURCE_ID: $(IOTHUB-USER-ASSIGNED-MSI-RESOURCE-ID) # Environment variables for DPS E2E tests DPS_IDSCOPE: $(DPS-IDSCOPE) PROVISIONING_CONNECTION_STRING: $(PROVISIONING-CONNECTION-STRING) DPS_GLOBALDEVICEENDPOINT: $(DPS-GLOBALDEVICEENDPOINT) DPS_X509_PFX_CERTIFICATE_PASSWORD: $(DPS-X509-PFX-CERTIFICATE-PASSWORD) DPS_X509_GROUP_ENROLLMENT_NAME: $(DPS-X509-GROUP-ENROLLMENT-NAME) # Environment variables for Azure resources used for E2E tests (common) X509_CHAIN_ROOT_CA_CERTIFICATE: $(X509-CHAIN-ROOT-CA-CERTIFICATE) X509_CHAIN_INTERMEDIATE1_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE1-CERTIFICATE) X509_CHAIN_INTERMEDIATE2_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE2-CERTIFICATE) X509_CHAIN_INTERMEDIATE2_PFX_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE2-PFX-CERTIFICATE) STORAGE_ACCOUNT_CONNECTION_STRING: $(STORAGE-ACCOUNT-CONNECTION-STRING) MSFT_TENANT_ID: $(MSFT-TENANT-ID) E2E_TEST_AAD_APP_CLIENT_ID: $(E2E-TEST-AAD-APP-CLIENT-ID) E2E_TEST_AAD_APP_CLIENT_SECRET: $(E2E-TEST-AAD-APP-CLIENT-SECRET) E2E_IKEY: $(E2E-IKEY) # Environment variables for the DevOps pipeline PROXY_SERVER_ADDRESS: 127.0.0.1:8888 TARGET_BRANCH: $(System.PullRequest.TargetBranch) FRAMEWORK: $(FRAMEWORK) AZURE_IOT_LOCALPACKAGES: $(Build.ArtifactStagingDirectory)/nuget # Environment variables for invalid certificate tests IOTHUB_DEVICE_CONN_STRING_INVALIDCERT: $(IOTHUB-DEVICE-CONN-STRING-INVALIDCERT) IOTHUB_CONN_STRING_INVALIDCERT: $(IOTHUB-CONN-STRING-INVALIDCERT) DPS_GLOBALDEVICEENDPOINT_INVALIDCERT: $(DPS-GLOBALDEVICEENDPOINT-INVALIDCERT) PROVISIONING_CONNECTION_STRING_INVALIDCERT: $(PROVISIONING-CONNECTION-STRING-INVALIDCERT) # Environment variables used by Log Analytics Workspace for Azure Security Center LA_AAD_APP_ID: $(LA-AAD-APP-ID) LA_AAD_APP_CERT_BASE64: $(LA-AAD-APP-CERT-BASE64) LA_WORKSPACE_ID: $(LA-WORKSPACE-ID) - task: CopyFiles@2 displayName: 'Copy files to the artifacts folder' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: '**/*.trx' TargetFolder: '$(Build.ArtifactStagingDirectory)' condition: always() - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: testresults_linux' inputs: ArtifactName: testresults_linux_$(FRAMEWORK) condition: always() - task: PublishTestResults@2 displayName: 'Publish Test Results **/*.trx' inputs: testRunner: VSTest testRunTitle: "Linux Tests ($(FRAMEWORK)) (Attempt $(System.JobAttempt))" testResultsFiles: '**/*.trx' condition: always() ### Windows build ### - job: WINDOWS displayName: Windows timeoutInMinutes: 75 strategy: # Change maxParallel to 1 make builds run in serial rather than in parallel maxParallel: 100 matrix: .Net 6.0: FRAMEWORK: net6.0 .Net 8.0: FRAMEWORK: net8.0 .Net Core 3.1: FRAMEWORK: netcoreapp3.1 .Net Core 2.1.30: FRAMEWORK: netcoreapp2.1.30 .Net Framework 4.7.2: FRAMEWORK: net472 condition: succeeded() pool: vmImage: windows-2022 steps: - task: UseDotNet@2 displayName: 'Use .NET Core SDK 2.1' inputs: packageType: sdk version: 2.1.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: 'Use .NET Core SDK 3.1' inputs: packageType: sdk version: 3.1.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: 'Use .NET SDK 8.0' inputs: packageType: sdk version: 8.x performMultiLevelLookup: true installationPath: $(Agent.ToolsDirectory)/dotnet - task: DownloadBuildArtifacts@0 inputs: buildType: 'specific' project: 'f9b79625-2860-4d92-a4ee-57b03fabfd10' # azure-iot-sdk pipeline: '278' # csharp-release-build buildVersionToDownload: 'latest' downloadType: 'single' downloadPath: '$(System.ArtifactsDirectory)' artifactName: 'nuget' - task: CopyFiles@2 inputs: SourceFolder: '$(System.ArtifactsDirectory)' Contents: '**' TargetFolder: '$(Build.SourcesDirectory)/bin/pkg' OverWrite: true - script: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" sn -Vr *,31bf3856ad364e35 displayName: 'Disable strong name validation' - script: | choco install -y squid displayName: 'Install Squid' - powershell: ./vsts/start_tpm_windows.ps1 displayName: "Start TPM Simulator" - powershell: ./vsts/releaseTest.ps1 displayName: Test release nugets env: # Environment variables for IoT Hub E2E tests IOTHUB_CONNECTION_STRING: $(IOTHUB-CONNECTION-STRING) IOTHUB_X509_DEVICE_PFX_CERTIFICATE: $(IOTHUB-X509-DEVICE-PFX-CERTIFICATE) IOTHUB_X509_CHAIN_DEVICE_NAME: $(IOTHUB-X509-CHAIN-DEVICE-NAME) IOTHUB_X509_CHAIN_DEVICE_PFX_CERTIFICATE: $(IOTHUB-X509-CHAIN-DEVICE-PFX-CERTIFICATE) IOTHUB_USER_ASSIGNED_MSI_RESOURCE_ID: $(IOTHUB-USER-ASSIGNED-MSI-RESOURCE-ID) # Environment variables for DPS E2E tests DPS_IDSCOPE: $(DPS-IDSCOPE) PROVISIONING_CONNECTION_STRING: $(PROVISIONING-CONNECTION-STRING) DPS_GLOBALDEVICEENDPOINT: $(DPS-GLOBALDEVICEENDPOINT) DPS_X509_PFX_CERTIFICATE_PASSWORD: $(DPS-X509-PFX-CERTIFICATE-PASSWORD) DPS_X509_GROUP_ENROLLMENT_NAME: $(DPS-X509-GROUP-ENROLLMENT-NAME) # Environment variables for Azure resources used for E2E tests (common) X509_CHAIN_ROOT_CA_CERTIFICATE: $(X509-CHAIN-ROOT-CA-CERTIFICATE) X509_CHAIN_INTERMEDIATE1_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE1-CERTIFICATE) X509_CHAIN_INTERMEDIATE2_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE2-CERTIFICATE) X509_CHAIN_INTERMEDIATE2_PFX_CERTIFICATE: $(X509-CHAIN-INTERMEDIATE2-PFX-CERTIFICATE) STORAGE_ACCOUNT_CONNECTION_STRING: $(STORAGE-ACCOUNT-CONNECTION-STRING) MSFT_TENANT_ID: $(MSFT-TENANT-ID) E2E_TEST_AAD_APP_CLIENT_ID: $(E2E-TEST-AAD-APP-CLIENT-ID) E2E_TEST_AAD_APP_CLIENT_SECRET: $(E2E-TEST-AAD-APP-CLIENT-SECRET) E2E_IKEY: $(E2E-IKEY) # Environment variables for the DevOps pipeline PROXY_SERVER_ADDRESS: 127.0.0.1:3128 TARGET_BRANCH: $(System.PullRequest.TargetBranch) FRAMEWORK: $(FRAMEWORK) AZURE_IOT_LOCALPACKAGES: $(Build.ArtifactStagingDirectory)/nuget # Environment variables for invalid certificate tests IOTHUB_DEVICE_CONN_STRING_INVALIDCERT: $(IOTHUB-DEVICE-CONN-STRING-INVALIDCERT) IOTHUB_CONN_STRING_INVALIDCERT: $(IOTHUB-CONN-STRING-INVALIDCERT) DPS_GLOBALDEVICEENDPOINT_INVALIDCERT: $(DPS-GLOBALDEVICEENDPOINT-INVALIDCERT) PROVISIONING_CONNECTION_STRING_INVALIDCERT: $(PROVISIONING-CONNECTION-STRING-INVALIDCERT) # Environment variables used by Log Analytics Workspace for Azure Security Center LA_AAD_APP_ID: $(LA-AAD-APP-ID) LA_AAD_APP_CERT_BASE64: $(LA-AAD-APP-CERT-BASE64) LA_WORKSPACE_ID: $(LA-WORKSPACE-ID) - task: CopyFiles@2 displayName: 'Copy TRX files to the artifacts folder' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: '**/*.trx' TargetFolder: '$(Build.ArtifactStagingDirectory)' condition: always() - task: CopyFiles@2 displayName: 'Copy ETL files to the artifacts folder' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: '**/*.etl' TargetFolder: '$(Build.ArtifactStagingDirectory)' condition: always() - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: testresults' inputs: ArtifactName: testresults_windows_$(FRAMEWORK) condition: always() - task: PublishTestResults@2 displayName: 'Publish Test Results **/*.trx' inputs: testRunner: VSTest testResultsFiles: '**/*.trx' testRunTitle: "Windows Tests ($(FRAMEWORK)) (Attempt $(System.JobAttempt))" platform: Windows configuration: 'Debug UT + Release E2E ($(FRAMEWORK))' condition: always()