12 - internal/release/3.*
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)
19 - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
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.
28 ## Product build Test build Test run
29 ## (Azure DevOps) (Azure DevOps) (helix)
31 ## ###########################################################################################
35 ## Checked ----------> Pri0 -----------------> plain runtests
37 ## \---------> Pri1 -----------------> plain runtests
38 ## | \----------------> jitstress
39 ## | \----------------> gcstress
40 ## | \----------------> runincontext
41 ## | \----------------> maybe more (dynamically selected runtest modes)
43 ## \---------> Pri1 crossgen --------> plain runtests
44 ## \-------> jitstress
46 ## \-------> maybe more (dynamically selected runtest modes)
48 ## Release ----------> Pri1 -----------------> plain runtests
50 ## \---------> Pri1 crossgen --------> plain runtests
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.
64 ## Templates used to define jobs:
65 ## Please update this if the factoring changes.
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.
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 ----/
80 # TODO: simplify logic surrounding official build/ci. See
81 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
86 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
87 - template: eng/platform-matrix.yml
89 jobTemplate: build-job.yml
91 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
95 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
110 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
111 - template: eng/platform-matrix.yml
113 jobTemplate: build-job.yml
115 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
126 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
128 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
134 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
135 - template: eng/platform-matrix.yml
137 jobTemplate: build-job.yml
139 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
147 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
155 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
156 - template: eng/platform-matrix.yml
158 jobTemplate: build-job.yml
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
168 # Checked test builds
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
174 jobTemplate: test-job.yml
176 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
188 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
192 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
194 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
197 # ReadyToRun test jobs that are triggered by default from a PR.
199 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
200 - template: eng/platform-matrix.yml
202 jobTemplate: test-job.yml
204 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
212 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
218 # CoreFX test runs against CoreCLR
221 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
222 - template: eng/platform-matrix.yml
224 jobTemplate: test-job.yml
226 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
230 helixQueueGroup: corefx
232 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
235 displayNameArgs: CoreFX
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
242 jobTemplate: test-job.yml
249 - template: eng/platform-matrix.yml
251 jobTemplate: test-job.yml
271 # Release test builds
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
278 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
297 - template: eng/platform-matrix.yml
299 jobTemplate: test-job.yml
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
312 jobTemplate: format-job.yml
317 # Publish build information to Build Assets Registry
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.
324 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
325 - template: /eng/finalize-publish.yml
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