fix dwarf-based unwinding to the end of stack
[platform/upstream/coreclr.git] / azure-pipelines.yml
1 trigger:
2   batch: true
3   branches:
4     include:
5     - master
6     - release/3.0
7     - internal/release/3.*
8
9 pr:
10 - master
11 - release/3.0
12 - internal/release/3.*
13
14 # Temporarily set a build number format that includes a large revision
15 # number that won't conflict with buildpipeline official builds.
16 name: $(Date:yyyyMMdd)$(Rev:.7r)
17
18 variables:
19 - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
20   value: true
21
22 jobs:
23
24 ##   The following is the matrix of test runs that we have. This is
25 ##   duplicated for each os/arch combination in platform-matrix.yml.
26
27 ##
28 ##   Product build       Test build              Test run
29 ##   (Azure DevOps)      (Azure DevOps)          (helix)
30 ##
31 ##   ###########################################################################################
32 ##
33 ##   Debug
34 ##
35 ##   Checked ----------> Pri0 -----------------> plain runtests
36 ##           |
37 ##           \---------> Pri1 -----------------> plain runtests
38 ##           |                \----------------> jitstress
39 ##           |                \----------------> gcstress
40 ##           |                \----------------> runincontext
41 ##           |                \----------------> maybe more (dynamically selected runtest modes)
42 ##           |
43 ##           \---------> Pri1 crossgen --------> plain runtests
44 ##                                     \-------> jitstress
45 ##                                     \-------> gcstress
46 ##                                     \-------> maybe more (dynamically selected runtest modes)
47 ##
48 ##   Release ----------> Pri1 -----------------> plain runtests
49 ##           |
50 ##           \---------> Pri1 crossgen --------> plain runtests
51 ##
52 ##
53
54 ## Each build or test job is defined in Azure DevOps, and will show
55 ## up in the UI in the order in which they are defined here. The
56 ## build and test build job matrix is defined statically, but
57 ## queue-time inputs can be used to control whether a job executes
58 ## (used to select which jobs run in ci vs for official builds), or
59 ## to select test modes. This should eventually be used to enable
60 ## requesting specific test runs from pull requests.
61
62
63 ##
64 ## Templates used to define jobs:
65 ## Please update this if the factoring changes.
66 ##
67 ## This file defines the set of jobs in a platform-agnostic manner,
68 ## using the platform-matrix.yml template. This will create one job
69 ## for each platform from the passed-in jobTemplate (either a build
70 ## job or a test job). The build-job.yml and test-job.yml templates
71 ## use xplat-job.yml to handle some of the common logic for
72 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
73 ## base.yml job template, which sets up telemetry and signing support.
74
75 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
76 ##                                            |  (passed-in jobTemplate)  |                    (arcade)
77 ##                                            \------> test-job.yml ------/
78 ##                                            \------> format-job.yml ----/
79
80 # TODO: simplify logic surrounding official build/ci. See
81 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
82
83 #
84 # Debug builds
85 #
86 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
87   - template: eng/platform-matrix.yml
88     parameters:
89       jobTemplate: build-job.yml
90       buildConfig: debug
91       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
92         platforms:
93         - Windows_NT_x64
94         - Windows_NT_x86
95       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
96         platforms:
97         - Linux_arm
98         - Linux_arm64
99         - Linux_musl_arm64
100         - Linux_musl_x64
101         - Linux_rhel6_x64
102         - Linux_x64
103         - OSX_x64
104         - Windows_NT_arm
105         - Windows_NT_arm64
106
107 #
108 # Checked builds
109 #
110 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
111   - template: eng/platform-matrix.yml
112     parameters:
113       jobTemplate: build-job.yml
114       buildConfig: checked
115       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
116         platforms:
117         - Linux_arm
118         - Linux_arm64
119         - Linux_musl_x64
120         - Linux_x64
121         - OSX_x64
122         - Windows_NT_arm
123         - Windows_NT_arm64
124         - Windows_NT_x64
125         - Windows_NT_x86
126       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
127         platformGroup: all
128       ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
129         platformGroup: all
130
131 #
132 # Release builds
133 #
134 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
135   - template: eng/platform-matrix.yml
136     parameters:
137       jobTemplate: build-job.yml
138       buildConfig: release
139       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
140         platforms:
141         - Linux_arm64
142         - Linux_musl_x64
143         - Linux_rhel6_x64
144         - Windows_NT_arm
145         - Windows_NT_arm64
146         - Windows_NT_x64
147       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
148         platforms:
149         - Linux_arm
150         - Linux_musl_arm64
151         - Linux_x64
152         - OSX_x64
153         - Windows_NT_x86
154
155 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
156   - template: eng/platform-matrix.yml
157     parameters:
158       jobTemplate: build-job.yml
159       buildConfig: release
160       platformGroup: all
161       jobParameters:
162         # Publishing packages to blob feeds sometimes takes a long time
163         # due to waiting for an exclusive lock on the feed.
164         # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
165         timeoutInMinutes: 120
166
167 #
168 # Checked test builds
169 #
170 # The test jobs that can be triggered by a PR, manually from ADO and that are scheduled
171 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual', 'Schedule')) }}:
172   - template: eng/platform-matrix.yml
173     parameters:
174       jobTemplate: test-job.yml
175       buildConfig: checked
176       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
177         platforms:
178         - Linux_arm
179         - Linux_arm64
180         - Linux_musl_x64
181         - Linux_x64
182         - OSX_x64
183         - Windows_NT_arm
184         - Windows_NT_arm64
185         - Windows_NT_x64
186         - Windows_NT_x86
187         helixQueueGroup: pr
188       ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
189         platformGroup: all
190         helixQueueGroup: all
191       jobParameters:
192         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
193           testGroup: innerloop
194         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
195           testGroup: outerloop
196         
197 # ReadyToRun test jobs that are triggered by default from a PR.
198
199 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
200   - template: eng/platform-matrix.yml
201     parameters:
202       jobTemplate: test-job.yml
203       buildConfig: checked
204       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
205         platforms:
206         - Linux_x64
207         - OSX_x64
208         - Windows_NT_x64
209         - Windows_NT_x86
210         helixQueueGroup: pr
211       jobParameters:
212         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
213           testGroup: innerloop
214         readyToRun: true
215         displayNameArgs: R2R
216
217 #
218 # CoreFX test runs against CoreCLR
219 #
220
221 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
222   - template: eng/platform-matrix.yml
223     parameters:
224       jobTemplate: test-job.yml
225       buildConfig: checked
226       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
227         platforms:
228         - Linux_x64
229         - Windows_NT_x64
230       helixQueueGroup: corefx
231       jobParameters:
232         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
233           testGroup: innerloop
234         corefxTests: true
235         displayNameArgs: CoreFX
236
237 # CI (merge) jobs
238
239 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
240   - template: eng/platform-matrix.yml
241     parameters:
242       jobTemplate: test-job.yml
243       buildConfig: checked
244       platformGroup: all
245       helixQueueGroup: ci
246       jobParameters:
247         testGroup: outerloop
248
249   - template: eng/platform-matrix.yml
250     parameters:
251       jobTemplate: test-job.yml
252       buildConfig: checked
253       platforms:
254       - Linux_arm64
255       - Linux_musl_x64
256       - Linux_musl_arm64
257       - Linux_rhel6_x64
258       - Linux_x64
259       - OSX_x64
260       - Windows_NT_x64
261       - Windows_NT_x86
262       - Windows_NT_arm
263       - Windows_NT_arm64
264       helixQueueGroup: ci
265       jobParameters:
266         testGroup: outerloop
267         readyToRun: true
268         displayNameArgs: R2R
269
270 #
271 # Release test builds
272 #
273
274 # Pull-Request test
275 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
276   - template: eng/platform-matrix.yml
277     parameters:
278       jobTemplate: test-job.yml
279       buildConfig: release
280       platforms:
281       - Linux_musl_x64
282       helixQueueGroup: pr
283       jobParameters:
284         testGroup: innerloop
285
286 # Official test
287 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
288   - template: eng/platform-matrix.yml
289     parameters:
290       jobTemplate: test-job.yml
291       buildConfig: release
292       platformGroup: all
293       helixQueueGroup: all
294       jobParameters:
295         testGroup: outerloop
296
297   - template: eng/platform-matrix.yml
298     parameters:
299       jobTemplate: test-job.yml
300       buildConfig: release
301       platformGroup: all
302       helixQueueGroup: all
303       jobParameters:
304         testGroup: outerloop
305         readyToRun: true
306         displayNameArgs: R2R
307
308 # Format
309 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
310   - template: eng/platform-matrix.yml
311     parameters:
312       jobTemplate: format-job.yml
313       platforms:
314       - Linux_x64
315       - Windows_NT_x64
316
317 # Publish build information to Build Assets Registry
318
319 # This job gathers build assets from the pipeline (from each official
320 # product build job), and publishes them to the build assets
321 # registry. Its dependencies should be updated to include all of the
322 # official builds if we add more platform/arch combinations.
323
324 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
325   - template: /eng/finalize-publish.yml
326     parameters:
327       dependsOn:
328       - build_Linux_arm_release
329       - build_Linux_arm64_release
330       - build_Linux_musl_x64_release
331       - build_Linux_musl_arm64_release
332       - build_Linux_rhel6_x64_release
333       - build_Linux_x64_release
334       - build_OSX_x64_release
335       - build_Windows_NT_x64_release
336       - build_Windows_NT_x86_release
337       - build_Windows_NT_arm_release
338       - build_Windows_NT_arm64_release