name: PR-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr) trigger: # Batch merge builds together while a merge build is running batch: true branches: include: - master - release* - feature* paths: include: - '*' exclude: - /.vsts-ci/misc-analysis.yml - /.github/ISSUE_TEMPLATE/* - /.dependabot/config.yml pr: branches: include: - master - release* - feature* paths: include: - '*' exclude: - /.vsts-ci/misc-analysis.yml - /.github/ISSUE_TEMPLATE/* - /.dependabot/config.yml variables: GIT_CONFIG_PARAMETERS: "'core.autocrlf=false'" DOTNET_CLI_TELEMETRY_OPTOUT: 1 POWERSHELL_TELEMETRY_OPTOUT: 1 # Avoid expensive initialization of dotnet cli, see: https://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 __SuppressAnsiEscapeSequences: 1 resources: - repo: self clean: true stages: - stage: BuildWin displayName: Build for Windows jobs: - template: templates/ci-build.yml - stage: TestWin displayName: Test for Windows variables: - group: CLR-CAP jobs: - job: win_test pool: vmImage: vs2017-win2016 displayName: Windows Test timeoutInMinutes: 90 steps: - pwsh: | Get-ChildItem -Path env: displayName: 'Capture Environment' condition: succeededOrFailed() - task: DownloadBuildArtifacts@0 displayName: 'Download Build Artifacts' inputs: downloadType: specific itemPattern: | build/**/* xunit/**/* downloadPath: '$(System.ArtifactsDirectory)' - pwsh: | Get-ChildItem "$(System.ArtifactsDirectory)\*" -Recurse displayName: 'Capture Artifacts Directory' continueOnError: true - pwsh: | $capRootDir = Join-Path ([System.IO.Path]::GetTempPath()) "CAP" $capUtilDir = Join-Path $capRootDir "Utils" if (Test-Path $capRootDir) { Remove-Item $capRootDir -Recurse -Force } New-Item $capUtilDir -ItemType Directory > $null $capZipFile = Join-Path $capRootDir "cap.zip" Invoke-WebRequest -Uri https://pscoretestdata.blob.core.windows.net/dotnet-cap/windows.zip -OutFile $capZipFile Unblock-File -Path $capZipFile Expand-Archive -Path $capZipFile -DestinationPath $capUtilDir -Force Write-Host "=== Capture CAP Util Directory ===" Get-ChildItem $capUtilDir -Recurse Write-Host "##vso[task.setvariable variable=CapRootDir]$capRootDir" Write-Host "##vso[task.setvariable variable=CapUtilDir]$capUtilDir" displayName: 'Download CAP package' condition: succeededOrFailed() # must be run frow Windows PowerShell - powershell: | # Remove "Program Files\dotnet" from the env variable PATH, so old SDKs won't affect us. Write-Host "Old Path:" Write-Host $env:Path $dotnetPath = Join-Path $env:SystemDrive 'Program Files\dotnet' $paths = $env:Path -split ";" | Where-Object { -not $_.StartsWith($dotnetPath) } $env:Path = $paths -join ";" Write-Host "New Path:" Write-Host $env:Path Import-Module .\tools\ci.psm1 Invoke-CIInstall displayName: Bootstrap condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' $path = Split-Path -Parent (Get-PSOutput -Options (Get-PSOptions)) $rootPath = Split-Path -Path $path Expand-Archive -Path '$(System.ArtifactsDirectory)\build\build.zip' -DestinationPath $rootPath -Force displayName: 'Unzip Build' condition: succeeded() - pwsh: | Import-Module $(CapUtilDir)\CAPService.psm1 $dataDir = Start-TraceCollection -RootDir $(CapRootDir) Write-Host "##vso[task.setvariable variable=CapDataDir]$dataDir" displayName: 'Start CLR Trace Collection' condition: succeeded() - pwsh: | Import-Module .\build.psm1 Start-PSBootstrap Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose UnelevatedPesterTests -TagSet CI displayName: Test - UnelevatedPesterTests - CI condition: succeeded() - pwsh: | Import-Module .\build.psm1 Start-PSBootstrap Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose ElevatedPesterTests -TagSet CI displayName: Test - ElevatedPesterTests - CI condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 Start-PSBootstrap Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose UnelevatedPesterTests -TagSet Others displayName: Test - UnelevatedPesterTests - Others condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 Start-PSBootstrap Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose ElevatedPesterTests -TagSet Others displayName: Test - ElevatedPesterTests - Others condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 $xUnitTestResultsFile = '$(System.ArtifactsDirectory)\xunit\xUnitTestResults.xml' Test-XUnitTestResults -TestResultsFile $xUnitTestResultsFile displayName: Verify xUnit Test Results condition: succeededOrFailed() - pwsh: | $capDataDir = '$(CapDataDir)' $capModuleFile = '$(CapUtilDir)\CAPService.psm1' if ((Test-Path $capModuleFile) -and (Test-Path $capDataDir)) { Import-Module $capModuleFile Stop-TraceCollection -DataDir $capDataDir -RepoRoot $pwd -IngressToken '$(CapIngressToken)' } displayName: 'Upload CLR Trace' condition: always()