2 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
6 - container: ubuntu_1404_arm_cross_build_image
7 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-14.04-23cacb0-20190528233931
9 - container: ubuntu_1604_arm64_cross_build_image
10 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-cfdd435-20190520220848
12 - container: musl_x64_build_image
13 image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.6-WithNode-cfdd435-20190521001804
15 - container: musl_arm64_build_image
16 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20190520220848
18 - container: centos7_x64_build_image
19 image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-3e800f1-20190501005343
21 - container: centos6_x64_build_image
22 image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-6-3e800f1-20190501005338
32 ## The following is the matrix of test runs that we have. This is
33 ## duplicated for each os/arch combination in platform-matrix.yml.
36 ## Product build Test build Test run
37 ## (Azure DevOps) (Azure DevOps) (helix)
39 ## ###########################################################################################
43 ## Checked ----------> Pri0 -----------------> plain runtests
45 ## \---------> Pri1 -----------------> plain runtests
46 ## | \----------------> jitstress
47 ## | \----------------> gcstress
48 ## | \----------------> maybe more (dynamically selected runtest modes)
50 ## \---------> Pri1 crossgen --------> plain runtests
51 ## \-------> jitstress
53 ## \-------> maybe more (dynamically selected runtest modes)
55 ## Release ----------> Pri1 -----------------> plain runtests
57 ## \---------> Pri1 crossgen --------> plain runtests
61 ## Each build or test job is defined in Azure DevOps, and will show
62 ## up in the UI in the order in which they are defined here. The
63 ## build and test build job matrix is defined statically, but
64 ## queue-time inputs can be used to control whether a job executes
65 ## (used to select which jobs run in ci vs for official builds), or
66 ## to select test modes. This should eventually be used to enable
67 ## requesting specific test runs from pull requests.
71 ## Templates used to define jobs:
72 ## Please update this if the factoring changes.
74 ## This file defines the set of jobs in a platform-agnostic manner,
75 ## using the platform-matrix.yml template. This will create one job
76 ## for each platform from the passed-in jobTemplate (either a build
77 ## job or a test job). The build-job.yml and test-job.yml templates
78 ## use xplat-job.yml to handle some of the common logic for
79 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
80 ## base.yml job template, which sets up telemetry and signing support.
82 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
83 ## | (passed-in jobTemplate) | (arcade)
84 ## \------> test-job.yml ------/
86 # TODO: simplify logic surrounding official build/ci. See
87 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
92 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
93 - template: eng/platform-matrix.yml
95 jobTemplate: build-job.yml
97 ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
101 ${{ if in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}:
116 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
117 - template: eng/platform-matrix.yml
119 jobTemplate: build-job.yml
121 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
132 ${{ if in(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc', 'coreclr-outerloop-gcstress-extra', 'coreclr-outerloop-r2r-extra') }}:
139 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-arm') }}:
143 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-x86') }}:
149 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstressregs-x86') }}:
158 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
159 - template: eng/platform-matrix.yml
161 jobTemplate: build-job.yml
163 ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
171 ${{ if in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}:
180 # Release builds (Official build) - non-PullRequest
182 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
183 - template: eng/platform-matrix.yml
185 jobTemplate: build-job.yml
188 # Publishing packages to blob feeds sometimes takes a long time
189 # due to waiting for an exclusive lock on the feed.
190 # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
191 timeoutInMinutes: 120
194 # Checked test builds
196 # The test jobs that can be triggered by a PR, manually from ADO and that are scheduled
197 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual', 'Schedule')) }}:
198 - template: eng/platform-matrix.yml
200 jobTemplate: test-job.yml
202 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
213 ${{ if in(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc', 'coreclr-outerloop-gcstress-extra', 'coreclr-outerloop-r2r-extra') }}:
220 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-arm') }}:
224 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-x86') }}:
230 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstressregs-x86') }}:
236 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
238 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
240 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress') }}:
241 testGroup: outerloop-jitstress
242 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-arm') }}:
243 testGroup: outerloop-jitstress-isas-arm
244 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-x86') }}:
245 testGroup: outerloop-jitstress-isas-x86
246 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstressregs-x86') }}:
247 testGroup: outerloop-jitstressregs-x86
248 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstressregs') }}:
249 testGroup: outerloop-jitstressregs
250 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress2-jitstressregs') }}:
251 testGroup: outerloop-jitstress2-jitstressregs
252 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc') }}:
253 testGroup: outerloop-gcstress0x3-gcstress0xc
254 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress-extra') }}:
255 testGroup: outerloop-gcstress-extra
256 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-r2r-extra') }}:
257 testGroup: outerloop-r2r-extra
261 # The ReadyToRun test jobs that are triggered by default from a PR.
262 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
263 - template: eng/platform-matrix.yml
265 jobTemplate: test-job.yml
276 # The CoreFX runs against CoreCLR
277 - template: eng/platform-matrix.yml
279 jobTemplate: test-job.yml
286 displayNameArgs: CoreFX
289 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
290 - template: eng/platform-matrix.yml
292 jobTemplate: test-job.yml
297 - template: eng/platform-matrix.yml
299 jobTemplate: test-job.yml
318 # Release test builds
322 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
323 - template: eng/platform-matrix.yml
325 jobTemplate: test-job.yml
333 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
334 - template: eng/platform-matrix.yml
336 jobTemplate: test-job.yml
341 - template: eng/platform-matrix.yml
343 jobTemplate: test-job.yml
351 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
352 - template: eng/platform-matrix.yml
354 jobTemplate: format-job.yml
359 # Publish build information to Build Assets Registry
361 # This job gathers build assets from the pipeline (from each official
362 # product build job), and publishes them to the build assets
363 # registry. Its dependencies should be updated to include all of the
364 # official builds if we add more platform/arch combinations.
366 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
367 - template: /eng/finalize-publish.yml
370 - build_Linux_arm_release
371 - build_Linux_arm64_release
372 - build_Linux_musl_x64_release
373 - build_Linux_musl_arm64_release
374 - build_Linux_rhel6_x64_release
375 - build_Linux_x64_release
376 - build_OSX_x64_release
377 - build_Windows_NT_x64_release
378 - build_Windows_NT_x86_release
379 - build_Windows_NT_arm_release
380 - build_Windows_NT_arm64_release