mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
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:
+64
-62
@@ -26,77 +26,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()
|
||||
|
||||
@@ -30,8 +30,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
|
||||
|
||||
Reference in New Issue
Block a user