178 lines
5.8 KiB
YAML
178 lines
5.8 KiB
YAML
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 .\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 .\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 .\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 .\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()
|