Skip to content

Commit 9fcbd12

Browse files
halliprRickWinterheaths
authored
Refactor yaml structure and test invocation (Azure#2153)
* Fan out to test legs faster * Remove unused parameters * Remove --all-features for now --------- Co-authored-by: Rick Winter <[email protected]> Co-authored-by: Heath Stewart <[email protected]>
1 parent c8332fd commit 9fcbd12

File tree

9 files changed

+207
-240
lines changed

9 files changed

+207
-240
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
parameters:
2+
- name: ServiceDirectory
3+
type: string
4+
- name: Toolchain
5+
type: string
6+
- name: TimeoutInMinutes
7+
type: number
8+
9+
jobs:
10+
- job: "Analyze"
11+
condition: and(succeededOrFailed(), ne(variables['Skip.Analyze'], 'true'))
12+
timeoutInMinutes: ${{ parameters.TimeoutInMinutes }}
13+
14+
pool:
15+
os: linux
16+
name: $(LINUXPOOL)
17+
image: $(LINUXVMIMAGE)
18+
19+
steps:
20+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
21+
parameters:
22+
paths:
23+
- "/*"
24+
25+
- ${{ if ne(parameters.Toolchain, 'nightly') }}:
26+
- template: /eng/pipelines/templates/steps/use-rust.yml@self
27+
parameters:
28+
Toolchain: nightly
29+
30+
- template: /eng/pipelines/templates/steps/use-rust.yml@self
31+
parameters:
32+
Toolchain: ${{ parameters.Toolchain }}
33+
34+
- template: /eng/common/pipelines/templates/steps/save-package-properties.yml
35+
36+
- task: Powershell@2
37+
displayName: "Run source analysis"
38+
inputs:
39+
pwsh: true
40+
filePath: $(Build.SourcesDirectory)/eng/scripts/Analyze-Code.ps1
41+
arguments: >
42+
-Toolchain '$(Toolchain)'
43+
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'
44+
-SkipPackageAnalysis:('$(NoPackagesChanged)' -eq 'true')
45+
46+
- template: /eng/common/pipelines/templates/steps/check-spelling.yml
47+
parameters:
48+
ContinueOnError: false
49+
50+
- template: /eng/common/pipelines/templates/steps/verify-links.yml
51+
parameters:
52+
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
53+
Directory: ""
54+
Urls: (eng/common/scripts/get-markdown-files-from-changed-files.ps1)
55+
${{ elseif eq(parameters.ServiceDirectory, 'auto') }}:
56+
Directory: ""
57+
${{ else }}:
58+
Directory: sdk/${{ parameters.ServiceDirectory }}
59+
CheckLinkGuidance: $true
60+
Condition: succeededOrFailed()

eng/pipelines/templates/jobs/ci.yml

Lines changed: 18 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,12 @@ parameters:
88
- name: PipelineArtifactName
99
type: string
1010
default: packages
11-
- name: BeforeTestSteps
12-
type: object
13-
default: []
14-
- name: AfterTestSteps
15-
type: object
16-
default: []
1711
- name: TestTimeoutInMinutes
1812
type: number
1913
default: 60
20-
- name: TestProxy
21-
type: boolean
22-
default: false
2314
- name: TestPipeline
2415
type: boolean
2516
default: false
26-
- name: GenerateApiReviewForManualOnly
27-
type: boolean
28-
default: false
2917
- name: BuildMatrix
3018
type: object
3119
default:
@@ -49,128 +37,24 @@ parameters:
4937
default: stable
5038

5139
jobs:
52-
- job: Pack
53-
displayName: "Pack Crates"
54-
timeoutInMinutes: 90
55-
56-
pool:
57-
name: $(LINUXPOOL)
58-
image: $(LINUXVMIMAGE)
59-
os: linux
60-
61-
templateContext:
62-
sdl:
63-
sbom:
64-
enabled: true
65-
additionalComponentDetectorArgs: '--DirectoryExclusionList **/target/vendor/**'
66-
67-
steps:
68-
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
69-
parameters:
70-
paths:
71-
- "/*"
72-
73-
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], '')) }}:
74-
- script: |
75-
echo "##vso[build.addbuildtag]$(Build.Reason)"
76-
displayName: Tag build reason
77-
78-
- ${{ if eq(parameters.TestPipeline, 'true') }}:
79-
- template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml
80-
parameters:
81-
PackageNames: ${{ join(',', parameters.Artifacts.*.name) }}
82-
ServiceDirectory: ${{parameters.ServiceDirectory}}
83-
# Crate names contain '_' and prerelease versions contain '-' e.g., `[email protected]`.
84-
TagSeparator: '@'
85-
TestPipeline: true
86-
87-
- template: /eng/pipelines/templates/steps/pack-crates.yml
88-
parameters:
89-
ServiceDirectory: ${{ parameters.ServiceDirectory }}
90-
91-
- template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml
92-
parameters:
93-
ArtifactPath: $(Build.ArtifactStagingDirectory)
94-
ArtifactName: ${{ parameters.PipelineArtifactName }}
95-
CustomCondition: and(succeededOrFailed(), ne(variables['NoPackagesChanged'],'true'))
40+
- template: /eng/pipelines/templates/jobs/pack.yml
41+
parameters:
42+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
43+
Artifacts: ${{ parameters.Artifacts }}
44+
TestPipeline: ${{ parameters.TestPipeline }}
45+
PipelineArtifactName: ${{ parameters.PipelineArtifactName }}
9646

9747
- ${{ each matrix in parameters.BuildMatrix }}:
9848
- ${{ each toolchain in matrix.Toolchains }}:
99-
- job: Test_${{ matrix.pool.os }}_${{ toolchain }}
100-
displayName: "Test: ${{ matrix.pool.os }} ${{ toolchain }}"
101-
timeoutInMinutes: 90
102-
dependsOn: Pack
103-
condition: and(succeeded(), ne(variables['SkipTests'],'true'))
104-
105-
pool: ${{ matrix.pool }}
106-
107-
steps:
108-
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
109-
parameters:
110-
paths:
111-
- "/*"
112-
113-
- download: current
114-
artifact: ${{ parameters.PipelineArtifactName }}
115-
116-
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml@self
117-
118-
- template: /eng/pipelines/templates/steps/test-packages.yml
119-
parameters:
120-
Toolchain: ${{ toolchain }}
121-
BuildArtifactName: ${{ parameters.PipelineArtifactName }}
122-
UnitTests: true
123-
FunctionalTests: true
124-
125-
- job: "Analyze"
126-
condition: and(succeededOrFailed(), ne(variables['Skip.Analyze'], 'true'))
127-
timeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
128-
129-
pool:
130-
os: linux
131-
name: $(LINUXPOOL)
132-
image: $(LINUXVMIMAGE)
133-
134-
steps:
135-
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
136-
parameters:
137-
paths:
138-
- "/*"
139-
140-
- ${{ if ne(parameters.AnalyzeToolchain, 'nightly') }}:
141-
- template: /eng/pipelines/templates/steps/use-rust.yml@self
142-
parameters:
143-
Toolchain: nightly
144-
145-
- template: /eng/pipelines/templates/steps/use-rust.yml@self
146-
parameters:
147-
Toolchain: ${{ parameters.AnalyzeToolchain }}
148-
149-
- template: /eng/common/pipelines/templates/steps/save-package-properties.yml
150-
151-
- task: Powershell@2
152-
displayName: "Run source analysis"
153-
inputs:
154-
pwsh: true
155-
filePath: $(Build.SourcesDirectory)/eng/scripts/Analyze-Code.ps1
156-
arguments: >
157-
-Toolchain '$(Toolchain)'
158-
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'
159-
-SkipPackageAnalysis:('$(NoPackagesChanged)' -eq 'true')
160-
161-
- template: /eng/common/pipelines/templates/steps/check-spelling.yml
162-
parameters:
163-
ContinueOnError: false
164-
165-
# Disabled until we fix crates.io link checking
166-
# - template: /eng/common/pipelines/templates/steps/verify-links.yml
167-
# parameters:
168-
# ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
169-
# Directory: ""
170-
# Urls: (eng/common/scripts/get-markdown-files-from-changed-files.ps1)
171-
# ${{ elseif eq(parameters.ServiceDirectory, 'auto') }}:
172-
# Directory: ""
173-
# ${{ else }}:
174-
# Directory: sdk/${{ parameters.ServiceDirectory }}
175-
# CheckLinkGuidance: $true
176-
# Condition: succeededOrFailed()
49+
- template: /eng/pipelines/templates/jobs/test.yml
50+
parameters:
51+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
52+
Toolchain: ${{ toolchain }}
53+
Matrix: ${{ matrix }}
54+
TimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
55+
56+
- template: /eng/pipelines/templates/jobs/analyze.yml
57+
parameters:
58+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
59+
Toolchain: ${{ parameters.AnalyzeToolchain }}
60+
TimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
parameters:
2+
- name: ServiceDirectory
3+
type: string
4+
- name: Artifacts
5+
type: object
6+
- name: TestPipeline
7+
type: boolean
8+
- name: PipelineArtifactName
9+
type: string
10+
11+
jobs:
12+
- job: Pack
13+
displayName: "Pack Crates"
14+
timeoutInMinutes: 90
15+
16+
pool:
17+
name: $(LINUXPOOL)
18+
image: $(LINUXVMIMAGE)
19+
os: linux
20+
21+
steps:
22+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
23+
parameters:
24+
paths:
25+
- "/*"
26+
27+
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], '')) }}:
28+
- script: |
29+
echo "##vso[build.addbuildtag]$(Build.Reason)"
30+
displayName: Tag build reason
31+
32+
- template: /eng/pipelines/templates/steps/use-rust.yml@self
33+
parameters:
34+
Toolchain: stable
35+
36+
- ${{ if eq(parameters.TestPipeline, 'true') }}:
37+
- template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml
38+
parameters:
39+
PackageNames: ${{ join(',', parameters.Artifacts.*.name) }}
40+
ServiceDirectory: ${{parameters.ServiceDirectory}}
41+
# Crate names contain '_' and prerelease versions contain '-' e.g., `[email protected]`.
42+
TagSeparator: '@'
43+
TestPipeline: true
44+
45+
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml@self
46+
47+
- template: /eng/common/pipelines/templates/steps/save-package-properties.yml@self
48+
parameters:
49+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
50+
PackageInfoDirectory: $(Build.ArtifactStagingDirectory)/PackageInfo
51+
52+
- task: Powershell@2
53+
displayName: "Pack Crates"
54+
condition: and(succeeded(), ne(variables['NoPackagesChanged'],'true'))
55+
inputs:
56+
pwsh: true
57+
filePath: $(Build.SourcesDirectory)/eng/scripts/Pack-Crates.ps1
58+
arguments: >
59+
-OutputPath '$(Build.ArtifactStagingDirectory)'
60+
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'
61+
62+
- template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml
63+
parameters:
64+
ArtifactPath: $(Build.ArtifactStagingDirectory)
65+
ArtifactName: ${{ parameters.PipelineArtifactName }}
66+
CustomCondition: and(succeededOrFailed(), ne(variables['NoPackagesChanged'],'true'))
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
parameters:
2+
- name: ServiceDirectory
3+
type: string
4+
- name: Toolchain
5+
type: string
6+
- name: Matrix
7+
type: object
8+
- name: TimeoutInMinutes
9+
type: number
10+
- name: TestProxy
11+
type: boolean
12+
default: true
13+
14+
jobs:
15+
- job: Test_${{ parameters.Matrix.pool.os }}_${{ parameters.Toolchain }}
16+
displayName: "Test: ${{ parameters.Matrix.pool.os }} ${{ parameters.Toolchain }}"
17+
timeoutInMinutes: ${{ parameters.TimeoutInMinutes }}
18+
condition: and(succeeded(), ne(variables['Skip.Tests'],'true'))
19+
20+
pool: ${{ parameters.Matrix.pool }}
21+
22+
steps:
23+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
24+
parameters:
25+
paths:
26+
- "/*"
27+
28+
- template: /eng/pipelines/templates/steps/use-rust.yml@self
29+
parameters:
30+
Toolchain: ${{ parameters.Toolchain }}
31+
32+
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml@self
33+
34+
- template: /eng/common/pipelines/templates/steps/save-package-properties.yml@self
35+
parameters:
36+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
37+
PackageInfoDirectory: $(Build.ArtifactStagingDirectory)/PackageInfo
38+
39+
- ${{ if eq(parameters.TestProxy, true) }}:
40+
- template: /eng/common/testproxy/test-proxy-standalone-tool.yml
41+
42+
- task: Powershell@2
43+
displayName: "Test Packages"
44+
condition: and(succeeded(), ne(variables['NoPackagesChanged'],'true'))
45+
timeoutInMinutes: ${{ parameters.TimeoutInMinutes }}
46+
env:
47+
CIBW_BUILD_VERBOSITY: 3
48+
inputs:
49+
pwsh: true
50+
filePath: $(Build.SourcesDirectory)/eng/scripts/Test-Packages.ps1
51+
arguments: >
52+
-PackageInfoDirectory '$(Build.ArtifactStagingDirectory)/PackageInfo'
53+
-Toolchain '$(Toolchain)'

eng/pipelines/templates/stages/archetype-sdk-client.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,6 @@ parameters:
77
- name: TestTimeoutInMinutes
88
type: number
99
default: 60
10-
- name: TestProxy
11-
type: boolean
12-
default: true
13-
- name: GenerateApiReviewForManualOnly
14-
type: boolean
15-
default: false
1610
- name: oneESTemplateTag
1711
type: string
1812
default: release
@@ -33,9 +27,7 @@ extends:
3327
${{ if eq(parameters.ServiceDirectory, 'template') }}:
3428
TestPipeline: true
3529
TestTimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
36-
TestProxy: ${{ parameters.TestProxy }}
3730
PipelineArtifactName: packages
38-
GenerateApiReviewForManualOnly: ${{ parameters.GenerateApiReviewForManualOnly }}
3931

4032
- template: archetype-rust-release.yml
4133
parameters:

0 commit comments

Comments
 (0)