Make Linux CI parallel (#9209)

Make the Linux CI build once and then run the tests on 4 different machines, by tag.

## PR Context

Running in parallel allows us to run all tests in about the same amount of clock time
This commit is contained in:
Travis Plunk
2019-03-23 18:23:07 -07:00
committed by GitHub
parent c0cce1030c
commit 5aed18dc93
2 changed files with 64 additions and 64 deletions
+64 -62
View File
@@ -28,77 +28,79 @@ pr:
variables:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
POWERSHELL_TELEMETRY_OPTOUT: 1
# Avoid expensive initialization of dotnet cli, see: http://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds
# Avoid expensive initialization of dotnet cli, see: https://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
resources:
- repo: self
clean: true
jobs:
- job: Linux_CI
- template: templates/ci-build.yml
parameters:
pool: Hosted Ubuntu 1604
jobName: linux_build
displayName: linux Build
- template: templates/nix-test.yml
parameters:
name: Linux
pool: Hosted Ubuntu 1604
purpose: UnelevatedPesterTests
tagSet: CI
parentJobs:
- linux_build
- template: templates/nix-test.yml
parameters:
name: Linux
pool: Hosted Ubuntu 1604
purpose: ElevatedPesterTests
tagSet: CI
parentJobs:
- linux_build
- template: templates/nix-test.yml
parameters:
name: Linux
pool: Hosted Ubuntu 1604
purpose: UnelevatedPesterTests
tagSet: Others
parentJobs:
- linux_build
- template: templates/nix-test.yml
parameters:
name: Linux
pool: Hosted Ubuntu 1604
purpose: ElevatedPesterTests
tagSet: Others
parentJobs:
- linux_build
- job: verify_xunit
displayName: Verify xUnit Results
pool:
name: Hosted Ubuntu 1604
timeoutInMinutes: 120
dependsOn:
- linux_build
steps:
- powershell: |
Get-Process
displayName: Capture Processes
condition: succeededOrFailed()
- task: DownloadBuildArtifacts@0
displayName: 'Download build artifacts'
inputs:
downloadType: specific
itemPattern: |
xunit/**/*
downloadPath: '$(System.ArtifactsDirectory)'
- powershell: |
Get-ChildItem -Path env:
displayName: Capture environment
condition: succeededOrFailed()
- powershell: |
# sometimes the file is locked and we must wait or things will fail
$filePath = '/var/lib/dpkg/lock'
$lockList = sudo lsof '/var/lib/dpkg/lock'
while($lockList)
{
Write-Verbose "waiting..." -verbose
Write-Verbose ($lockList -join "`n") -verbose
Start-Sleep -Second 30
$lockList = sudo lsof $filePath
}
exit 0
displayName: Wait for /var/lib/dpkg/lock
condition: succeededOrFailed()
- powershell: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))"
displayName: Set Build Name for Non-PR
condition: ne(variables['Build.Reason'], 'PullRequest')
# Several scripts require TMPDIR to exist
# Set it to AGENT_TEMPDIRECTORY so that we know it exists
- powershell: |
Write-Host "##vso[task.setvariable variable=TEMP]$env:AGENT_TEMPDIRECTORY"
displayName: Set TEMP to AGENT_TEMPDIRECTORY
condition: succeededOrFailed()
- template: ../tools/releaseBuild/azureDevOps/templates/insert-nuget-config-azfeed.yml
- powershell: |
Import-Module ./tools/ci.psm1
Invoke-BootstrapStage
displayName: Bootstrap
condition: succeeded()
- powershell: |
Import-Module ./tools/ci.psm1
$env:NugetKey = '$(NUGET_KEY)'
Invoke-LinuxTests
displayName: Build and Test
condition: succeeded()
# Uploads any packages as an artifact
- powershell: |
Get-ChildItem -Path ${env:BUILD_ARTIFACTSTAGINGDIRECTORY} -Include *.nupkg, *.rpm, *.deb, *.tar.gz, TestPackage.zip -Recurse | Select-Object -ExpandProperty FullName | ForEach-Object {
Write-Host "##vso[artifact.upload containerfolder=artifacts;artifactname=artifacts]$_"
}
displayName: Publish Artifacts
condition: succeededOrFailed()
- pwsh: |
Get-ChildItem "$(System.ArtifactsDirectory)\*" -Recurse
displayName: 'Capture artifacts directory'
continueOnError: true
- pwsh: |
Import-Module .\tools\ci.psm1
$xUnitTestResultsFile = "$(System.ArtifactsDirectory)\xunit\xUnitTestResults.xml"
Test-XUnitTestResults -TestResultsFile $xUnitTestResultsFile
displayName: Test
condition: succeeded()
-2
View File
@@ -32,8 +32,6 @@ variables:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
# Turn off Homebrew analytics
HOMEBREW_NO_ANALYTICS: 1
# Enable VSTS debug mode until stabilitized
system.debug: 'true'
resources:
- repo: self