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 - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
22 ## The following is the matrix of test runs that we have. This is
23 ## duplicated for each os/arch combination in platform-matrix.yml.
26 ## Product build Test build Test run
27 ## (Azure DevOps) (Azure DevOps) (helix)
29 ## ###########################################################################################
33 ## Checked ----------> Pri0 -----------------> plain runtests
35 ## \---------> Pri1 -----------------> plain runtests
36 ## | \----------------> jitstress
37 ## | \----------------> gcstress
38 ## | \----------------> runincontext
39 ## | \----------------> maybe more (dynamically selected runtest modes)
41 ## \---------> Pri1 crossgen --------> plain runtests
42 ## \-------> jitstress
44 ## \-------> maybe more (dynamically selected runtest modes)
46 ## Release ----------> Pri1 -----------------> plain runtests
48 ## \---------> Pri1 crossgen --------> plain runtests
52 ## Each build or test job is defined in Azure DevOps, and will show
53 ## up in the UI in the order in which they are defined here. The
54 ## build and test build job matrix is defined statically, but
55 ## queue-time inputs can be used to control whether a job executes
56 ## (used to select which jobs run in ci vs for official builds), or
57 ## to select test modes. This should eventually be used to enable
58 ## requesting specific test runs from pull requests.
62 ## Templates used to define jobs:
63 ## Please update this if the factoring changes.
65 ## This file defines the set of jobs in a platform-agnostic manner,
66 ## using the platform-matrix.yml template. This will create one job
67 ## for each platform from the passed-in jobTemplate (either a build
68 ## job or a test job). The build-job.yml and test-job.yml templates
69 ## use xplat-job.yml to handle some of the common logic for
70 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
71 ## base.yml job template, which sets up telemetry and signing support.
73 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
74 ## | (passed-in jobTemplate) | (arcade)
75 ## \------> test-job.yml ------/
76 ## \------> format-job.yml ----/
78 # TODO: simplify logic surrounding official build/ci. See
79 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
84 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
85 - template: eng/platform-matrix.yml
87 jobTemplate: build-job.yml
89 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
93 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
108 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
109 - template: eng/platform-matrix.yml
111 jobTemplate: build-job.yml
113 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
124 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
126 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
132 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
133 - template: eng/platform-matrix.yml
135 jobTemplate: build-job.yml
137 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
145 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
153 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
154 - template: eng/platform-matrix.yml
156 jobTemplate: build-job.yml
160 # Publishing packages to blob feeds sometimes takes a long time
161 # due to waiting for an exclusive lock on the feed.
162 # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
163 timeoutInMinutes: 120
166 # Checked test builds
168 # The test jobs that can be triggered by a PR, manually from ADO and that are scheduled
169 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual', 'Schedule')) }}:
170 - template: eng/platform-matrix.yml
172 jobTemplate: test-job.yml
174 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
186 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
190 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
192 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
195 # ReadyToRun test jobs that are triggered by default from a PR.
197 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
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')) }}:
210 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
216 # CoreFX test runs against CoreCLR
219 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
220 - template: eng/platform-matrix.yml
222 jobTemplate: test-job.yml
224 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
228 helixQueueGroup: corefx
230 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
233 displayNameArgs: CoreFX
237 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
238 - template: eng/platform-matrix.yml
240 jobTemplate: test-job.yml
247 - template: eng/platform-matrix.yml
249 jobTemplate: test-job.yml
269 # Release test builds
273 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
274 - template: eng/platform-matrix.yml
276 jobTemplate: test-job.yml
285 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
286 - template: eng/platform-matrix.yml
288 jobTemplate: test-job.yml
295 - template: eng/platform-matrix.yml
297 jobTemplate: test-job.yml
307 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
308 - template: eng/platform-matrix.yml
310 jobTemplate: format-job.yml
315 # Publish build information to Build Assets Registry
317 # This job gathers build assets from the pipeline (from each official
318 # product build job), and publishes them to the build assets
319 # registry. Its dependencies should be updated to include all of the
320 # official builds if we add more platform/arch combinations.
322 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
323 - template: /eng/finalize-publish.yml
326 - build_Linux_arm_release
327 - build_Linux_arm64_release
328 - build_Linux_musl_x64_release
329 - build_Linux_musl_arm64_release
330 - build_Linux_rhel6_x64_release
331 - build_Linux_x64_release
332 - build_OSX_x64_release
333 - build_Windows_NT_x64_release
334 - build_Windows_NT_x86_release
335 - build_Windows_NT_arm_release
336 - build_Windows_NT_arm64_release