Skip to content

Commit b80375f

Browse files
authored
Update the CI builds (PowerShell#12830)
Include the following changes: - Use stages for Linux & macOS CI - Change windows-daily to run tests in one agent
1 parent 99da109 commit b80375f

3 files changed

Lines changed: 167 additions & 108 deletions

File tree

.vsts-ci/linux.yml

Lines changed: 52 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -40,59 +40,62 @@ variables:
4040
resources:
4141
- repo: self
4242
clean: true
43-
jobs:
44-
- template: templates/ci-build.yml
45-
parameters:
46-
pool: ubuntu-16.04
47-
jobName: linux_build
48-
displayName: linux Build
4943

50-
- template: templates/nix-test.yml
51-
parameters:
52-
name: Linux
53-
pool: ubuntu-16.04
54-
purpose: UnelevatedPesterTests
55-
tagSet: CI
56-
parentJobs:
57-
- linux_build
44+
stages:
45+
- stage: BuildLinux
46+
displayName: Build for Linux
47+
jobs:
48+
- template: templates/ci-build.yml
49+
parameters:
50+
pool: ubuntu-16.04
51+
jobName: linux_build
52+
displayName: linux Build
5853

59-
- template: templates/nix-test.yml
60-
parameters:
61-
name: Linux
62-
pool: ubuntu-16.04
63-
purpose: ElevatedPesterTests
64-
tagSet: CI
65-
parentJobs:
66-
- linux_build
54+
- stage: TestLinux
55+
displayName: Test for Linux
56+
jobs:
57+
- template: templates/nix-test.yml
58+
parameters:
59+
name: Linux
60+
pool: ubuntu-16.04
61+
purpose: UnelevatedPesterTests
62+
tagSet: CI
6763

68-
- template: templates/nix-test.yml
69-
parameters:
70-
name: Linux
71-
pool: ubuntu-16.04
72-
purpose: UnelevatedPesterTests
73-
tagSet: Others
74-
parentJobs:
75-
- linux_build
64+
- template: templates/nix-test.yml
65+
parameters:
66+
name: Linux
67+
pool: ubuntu-16.04
68+
purpose: ElevatedPesterTests
69+
tagSet: CI
7670

77-
- template: templates/nix-test.yml
78-
parameters:
79-
name: Linux
80-
pool: ubuntu-16.04
81-
purpose: ElevatedPesterTests
82-
tagSet: Others
83-
parentJobs:
84-
- linux_build
71+
- template: templates/nix-test.yml
72+
parameters:
73+
name: Linux
74+
pool: ubuntu-16.04
75+
purpose: UnelevatedPesterTests
76+
tagSet: Others
8577

86-
- template: templates/verify-xunit.yml
87-
parameters:
88-
pool: ubuntu-16.04
89-
parentJobs:
90-
- linux_build
78+
- template: templates/nix-test.yml
79+
parameters:
80+
name: Linux
81+
pool: ubuntu-16.04
82+
purpose: ElevatedPesterTests
83+
tagSet: Others
9184

92-
- job: CodeCovTestPackage
85+
- template: templates/verify-xunit.yml
86+
parameters:
87+
pool: ubuntu-16.04
88+
89+
- stage: CodeCovTestPackage
9390
displayName: CodeCoverage and Test Packages
94-
steps:
95-
- powershell: |
96-
Import-Module .\tools\ci.psm1
97-
New-CodeCoverageAndTestPackage
98-
displayName: CodeCoverage and Test Package
91+
dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it
92+
jobs:
93+
- job: CodeCovTestPackage
94+
displayName: CodeCoverage and Test Packages
95+
pool:
96+
vmImage: ubuntu-16.04
97+
steps:
98+
- pwsh: |
99+
Import-Module .\tools\ci.psm1
100+
New-CodeCoverageAndTestPackage
101+
displayName: CodeCoverage and Test Package

.vsts-ci/mac.yml

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -42,51 +42,54 @@ variables:
4242
resources:
4343
- repo: self
4444
clean: true
45-
jobs:
46-
- template: templates/ci-build.yml
47-
parameters:
48-
pool: macOS-latest
49-
jobName: mac_build
50-
displayName: macOS Build
5145

52-
- template: templates/nix-test.yml
53-
parameters:
54-
purpose: UnelevatedPesterTests
55-
tagSet: CI
56-
parentJobs:
57-
- mac_build
46+
stages:
47+
- stage: BuildMac
48+
displayName: Build for macOS
49+
jobs:
50+
- template: templates/ci-build.yml
51+
parameters:
52+
pool: macOS-latest
53+
jobName: mac_build
54+
displayName: macOS Build
5855

59-
- template: templates/nix-test.yml
60-
parameters:
61-
purpose: ElevatedPesterTests
62-
tagSet: CI
63-
parentJobs:
64-
- mac_build
56+
- stage: TestMac
57+
displayName: Test for macOS
58+
jobs:
59+
- template: templates/nix-test.yml
60+
parameters:
61+
purpose: UnelevatedPesterTests
62+
tagSet: CI
6563

66-
- template: templates/nix-test.yml
67-
parameters:
68-
purpose: UnelevatedPesterTests
69-
tagSet: Others
70-
parentJobs:
71-
- mac_build
64+
- template: templates/nix-test.yml
65+
parameters:
66+
purpose: ElevatedPesterTests
67+
tagSet: CI
7268

73-
- template: templates/nix-test.yml
74-
parameters:
75-
purpose: ElevatedPesterTests
76-
tagSet: Others
77-
parentJobs:
78-
- mac_build
69+
- template: templates/nix-test.yml
70+
parameters:
71+
purpose: UnelevatedPesterTests
72+
tagSet: Others
7973

80-
- template: templates/verify-xunit.yml
81-
parameters:
82-
pool: macOS-latest
83-
parentJobs:
84-
- mac_build
74+
- template: templates/nix-test.yml
75+
parameters:
76+
purpose: ElevatedPesterTests
77+
tagSet: Others
8578

86-
- job: CodeCovTestPackage
79+
- template: templates/verify-xunit.yml
80+
parameters:
81+
pool: macOS-latest
82+
83+
- stage: CodeCovTestPackage
8784
displayName: CodeCoverage and Test Packages
88-
steps:
89-
- powershell: |
90-
Import-Module .\tools\ci.psm1
91-
New-CodeCoverageAndTestPackage
92-
displayName: CodeCoverage and Test Package
85+
dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it
86+
jobs:
87+
- job: CodeCovTestPackage
88+
displayName: CodeCoverage and Test Packages
89+
pool:
90+
vmImage: macOS-latest
91+
steps:
92+
- pwsh: |
93+
Import-Module .\tools\ci.psm1
94+
New-CodeCoverageAndTestPackage
95+
displayName: CodeCoverage and Test Package

.vsts-ci/windows-daily.yml

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,31 +49,84 @@ stages:
4949
- stage: TestWin
5050
displayName: Test for Windows
5151
jobs:
52-
- template: templates/windows-test.yml
53-
parameters:
54-
purpose: UnelevatedPesterTests
55-
tagSet: CI
52+
- job: win_test
53+
pool:
54+
vmImage: vs2017-win2016
55+
displayName: Windows Test
5656

57-
- template: templates/windows-test.yml
58-
parameters:
59-
purpose: ElevatedPesterTests
60-
tagSet: CI
57+
steps:
58+
- pwsh: |
59+
Get-ChildItem -Path env:
60+
displayName: 'Capture Environment'
61+
condition: succeededOrFailed()
6162
62-
- template: templates/windows-test.yml
63-
parameters:
64-
purpose: UnelevatedPesterTests
65-
tagSet: Others
63+
- task: DownloadBuildArtifacts@0
64+
displayName: 'Download Build Artifacts'
65+
inputs:
66+
downloadType: specific
67+
itemPattern: |
68+
build/**/*
69+
xunit/**/*
70+
downloadPath: '$(System.ArtifactsDirectory)'
6671

67-
- template: templates/windows-test.yml
68-
parameters:
69-
purpose: ElevatedPesterTests
70-
tagSet: Others
72+
- pwsh: |
73+
Get-ChildItem "$(System.ArtifactsDirectory)\*" -Recurse
74+
displayName: 'Capture Artifacts Directory'
75+
continueOnError: true
7176
72-
- template: templates/verify-xunit.yml
77+
# must be run frow Windows PowerShell
78+
- powershell: |
79+
Import-Module .\tools\ci.psm1
80+
Invoke-CIInstall
81+
displayName: Bootstrap
82+
condition: succeededOrFailed()
83+
84+
- pwsh: |
85+
Import-Module .\build.psm1
86+
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
87+
$path = Split-Path -Parent (Get-PSOutput -Options (Get-PSOptions))
88+
$rootPath = Split-Path -Path $path
89+
Expand-Archive -Path '$(System.ArtifactsDirectory)\build\build.zip' -DestinationPath $rootPath -Force
90+
displayName: 'Unzip Build'
91+
condition: succeeded()
92+
93+
- pwsh: |
94+
Import-Module .\tools\ci.psm1
95+
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
96+
Invoke-CITest -Purpose UnelevatedPesterTests -TagSet CI
97+
displayName: Test - UnelevatedPesterTests - CI
98+
condition: succeeded()
99+
100+
- pwsh: |
101+
Import-Module .\tools\ci.psm1
102+
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
103+
Invoke-CITest -Purpose ElevatedPesterTests -TagSet CI
104+
displayName: Test - ElevatedPesterTests - CI
105+
condition: succeededOrFailed()
106+
107+
- pwsh: |
108+
Import-Module .\tools\ci.psm1
109+
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
110+
Invoke-CITest -Purpose UnelevatedPesterTests -TagSet Others
111+
displayName: Test - UnelevatedPesterTests - Others
112+
condition: succeededOrFailed()
113+
114+
- pwsh: |
115+
Import-Module .\tools\ci.psm1
116+
Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json'
117+
Invoke-CITest -Purpose ElevatedPesterTests -TagSet Others
118+
displayName: Test - ElevatedPesterTests - Others
119+
condition: succeededOrFailed()
120+
121+
- pwsh: |
122+
Import-Module .\build.psm1
123+
$xUnitTestResultsFile = "$(System.ArtifactsDirectory)\xunit\xUnitTestResults.xml"
124+
Test-XUnitTestResults -TestResultsFile $xUnitTestResultsFile
125+
displayName: Verify xUnit Test Results
126+
condition: succeededOrFailed()
73127
74128
- stage: PackagingWin
75129
displayName: Packaging for Windows
76130
jobs:
77131
# Unlike daily builds, we do not upload nuget package to MyGet so we do not wait on tests to finish.
78132
- template: templates/windows-packaging.yml
79-

0 commit comments

Comments
 (0)