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