12 # Temporarily set a build number format that includes a large revision
13 # number that won't conflict with buildpipeline official builds.
14 name: $(Date:yyyyMMdd)$(Rev:.7r)
17 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
21 - container: ubuntu_1404_arm_cross_build_image
22 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-14.04-cross-e435274-20180426002420
24 - container: ubuntu_1604_arm64_cross_build_image
25 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180315221921
27 - container: musl_x64_build_image
28 image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.6-WithNode-f4d3fe3-20181220200247
30 - container: musl_arm64_build_image
31 image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20190403203438
33 - container: centos7_x64_build_image
34 image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-d485f41-20173404063424
36 - container: centos6_x64_build_image
37 image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-6-376e1a3-20174311014331
41 ## The following is the matrix of test runs that we have. This is
42 ## duplicated for each os/arch combination in platform-matrix.yml.
45 ## Product build Test build Test run
46 ## (Azure DevOps) (Azure DevOps) (helix)
48 ## ###########################################################################################
52 ## Checked ----------> Pri0 -----------------> plain runtests
54 ## \---------> Pri1 -----------------> plain runtests
55 ## | \----------------> jitstress
56 ## | \----------------> gcstress
57 ## | \----------------> maybe more (dynamically selected runtest modes)
59 ## \---------> Pri1 crossgen --------> plain runtests
60 ## \-------> jitstress
62 ## \-------> maybe more (dynamically selected runtest modes)
64 ## Release ----------> Pri1 -----------------> plain runtests
66 ## \---------> Pri1 crossgen --------> plain runtests
70 ## Each build or test job is defined in Azure DevOps, and will show
71 ## up in the UI in the order in which they are defined here. The
72 ## build and test build job matrix is defined statically, but
73 ## queue-time inputs can be used to control whether a job executes
74 ## (used to select which jobs run in ci vs for official builds), or
75 ## to select test modes. This should eventually be used to enable
76 ## requesting specific test runs from pull requests.
80 ## Templates used to define jobs:
81 ## Please update this if the factoring changes.
83 ## This file defines the set of jobs in a platform-agnostic manner,
84 ## using the platform-matrix.yml template. This will create one job
85 ## for each platform from the passed-in jobTemplate (either a build
86 ## job or a test job). The build-job.yml and test-job.yml templates
87 ## use xplat-job.yml to handle some of the common logic for
88 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
89 ## base.yml job template, which sets up telemetry and signing support.
91 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
92 ## | (passed-in jobTemplate) | (arcade)
93 ## \------> test-job.yml ------/
95 # TODO: simplify logic surrounding official build/ci. See
96 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
101 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
102 - template: eng/platform-matrix.yml
104 jobTemplate: build-job.yml
106 ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
110 ${{ if in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}:
125 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
126 - template: eng/platform-matrix.yml
128 jobTemplate: build-job.yml
130 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
141 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc') }}:
152 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
153 - template: eng/platform-matrix.yml
155 jobTemplate: build-job.yml
157 ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
165 ${{ if in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}:
174 # Release builds (Official build) - non-PullRequest
176 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
177 - template: eng/platform-matrix.yml
179 jobTemplate: build-job.yml
182 # Publishing packages to blob feeds sometimes takes a long time
183 # due to waiting for an exclusive lock on the feed.
184 # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
185 timeoutInMinutes: 120
188 # Checked test builds
190 # The test jobs that can be triggered by a PR, manually from ADO and that are scheduled
191 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual', 'Schedule')) }}:
192 - template: eng/platform-matrix.yml
194 jobTemplate: test-job.yml
196 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
207 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc') }}:
215 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
217 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
219 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitminopts-jitstress1-jitstress2') }}:
220 testGroup: outerloop-jitminopts-jitstress1-jitstress2
221 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstressregs') }}:
222 testGroup: outerloop-jitstressregs
223 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress2-jitstressregs') }}:
224 testGroup: outerloop-jitstress2-jitstressregs
225 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-gcstress0x3-gcstress0xc') }}:
226 testGroup: outerloop-gcstress0x3-gcstress0xc
228 # The ReadyToRun test jobs that are triggered by default from a PR.
229 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
230 - template: eng/platform-matrix.yml
232 jobTemplate: test-job.yml
244 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
245 - template: eng/platform-matrix.yml
247 jobTemplate: test-job.yml
252 - template: eng/platform-matrix.yml
254 jobTemplate: test-job.yml
272 # Release test builds
276 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
277 - template: eng/platform-matrix.yml
279 jobTemplate: test-job.yml
287 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
288 - template: eng/platform-matrix.yml
290 jobTemplate: test-job.yml
295 - template: eng/platform-matrix.yml
297 jobTemplate: test-job.yml
304 # Publish build information to Build Assets Registry
306 # This job gathers build assets from the pipeline (from each official
307 # product build job), and publishes them to the build assets
308 # registry. Its dependencies should be updated to include all of the
309 # official builds if we add more platform/arch combinations.
311 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
312 - template: /eng/finalize-publish.yml
315 - build_Linux_arm_release
316 - build_Linux_arm64_release
317 - build_Linux_musl_x64_release
318 - build_Linux_musl_arm64_release
319 - build_Linux_rhel6_x64_release
320 - build_Linux_x64_release
321 - build_OSX_x64_release
322 - build_Windows_NT_x64_release
323 - build_Windows_NT_x86_release
324 - build_Windows_NT_arm_release
325 - build_Windows_NT_arm64_release