Update Linux daily CI to run in a single agent & collect traces (#12866)

This commit is contained in:
Dongbo Wang 2020-06-02 11:33:27 -07:00 committed by GitHub
parent c233b30a6a
commit 8f79ce1d29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 255 additions and 60 deletions

157
.vsts-ci/linux-daily.yml Normal file
View file

@ -0,0 +1,157 @@
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:
- tools/releaseBuild/*
- tools/releaseBuild/azureDevOps/templates/*
- /.vsts-ci/misc-analysis.yml
- /.github/ISSUE_TEMPLATE/*
- /.dependabot/config.yml
variables:
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: BuildLinux
displayName: Build for Linux
jobs:
- template: templates/ci-build.yml
parameters:
pool: ubuntu-16.04
jobName: linux_build
displayName: linux Build
- stage: TestLinux
displayName: Test for Linux
jobs:
- job: linux_test
pool:
vmImage: ubuntu-16.04
displayName: Linux Test
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: |
Import-Module .\tools\ci.psm1
Invoke-CIInstall -SkipUser
displayName: Bootstrap
condition: succeededOrFailed()
- pwsh: |
Import-Module .\build.psm1
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
$output = (Get-PSOptions).Output
$rootPath = Split-Path (Split-Path $output)
Expand-Archive -Path '$(System.ArtifactsDirectory)\build\build.zip' -DestinationPath $rootPath -Force
## Fix permissions
Get-ChildItem $rootPath -Recurse | ForEach-Object {
if ($_ -is [System.IO.DirectoryInfo]) {
chmod +rwx $_.FullName
} else {
chmod +rw $_.FullName
}
}
chmod a+x $output
Write-Host "=== Capture Unzipped Directory ==="
Get-ChildItem $rootPath -Recurse
displayName: 'Unzip Build and Fix Permissions'
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()
- stage: CodeCovTestPackage
displayName: CodeCoverage and Test Packages
dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it
jobs:
- job: CodeCovTestPackage
displayName: CodeCoverage and Test Packages
pool:
vmImage: ubuntu-16.04
steps:
- pwsh: |
Import-Module .\tools\ci.psm1
New-CodeCoverageAndTestPackage
displayName: CodeCoverage and Test Package

View file

@ -55,75 +55,113 @@ stages:
displayName: Windows Test
steps:
- pwsh: |
Get-ChildItem -Path env:
displayName: 'Capture Environment'
condition: succeededOrFailed()
- 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)'
- 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: |
Get-ChildItem "$(System.ArtifactsDirectory)\*" -Recurse
displayName: 'Capture Artifacts Directory'
continueOnError: true
# must be run frow Windows PowerShell
- powershell: |
Import-Module .\tools\ci.psm1
Invoke-CIInstall
displayName: Bootstrap
condition: succeededOrFailed()
- pwsh: |
$capRootDir = Join-Path ([System.IO.Path]::GetTempPath()) "CAP"
$capUtilDir = Join-Path $capRootDir "Utils"
- 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()
if (Test-Path $capRootDir) { Remove-Item $capRootDir -Recurse -Force }
New-Item $capUtilDir -ItemType Directory > $null
- 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()
$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
- 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()
Write-Host "=== Capture CAP Util Directory ==="
Get-ChildItem $capUtilDir -Recurse
- 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()
Write-Host "##vso[task.setvariable variable=CapRootDir]$capRootDir"
Write-Host "##vso[task.setvariable variable=CapUtilDir]$capUtilDir"
displayName: 'Download CAP package'
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()
# must be run frow Windows PowerShell
- powershell: |
Import-Module .\tools\ci.psm1
Invoke-CIInstall
displayName: Bootstrap
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: |
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
}
displayName: 'Upload CLR Trace'
condition: always()
- stage: PackagingWin
displayName: Packaging for Windows