2 - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
13 ## The following is the matrix of test runs that we have. This is
14 ## duplicated for each os/arch combination in platform-matrix.yml.
17 ## Product build Test build Test run
18 ## (Azure DevOps) (Azure DevOps) (helix)
20 ## ###########################################################################################
24 ## Checked ----------> Pri0 -----------------> plain runtests
26 ## \---------> Pri1 -----------------> plain runtests
27 ## | \----------------> jitstress
28 ## | \----------------> gcstress
29 ## | \----------------> runincontext
30 ## | \----------------> maybe more (dynamically selected runtest modes)
32 ## \---------> Pri1 crossgen --------> plain runtests
33 ## \-------> jitstress
35 ## \-------> maybe more (dynamically selected runtest modes)
37 ## Release ----------> Pri1 -----------------> plain runtests
39 ## \---------> Pri1 crossgen --------> plain runtests
43 ## Each build or test job is defined in Azure DevOps, and will show
44 ## up in the UI in the order in which they are defined here. The
45 ## build and test build job matrix is defined statically, but
46 ## queue-time inputs can be used to control whether a job executes
47 ## (used to select which jobs run in ci vs for official builds), or
48 ## to select test modes. This should eventually be used to enable
49 ## requesting specific test runs from pull requests.
53 ## Templates used to define jobs:
54 ## Please update this if the factoring changes.
56 ## This file defines the set of jobs in a platform-agnostic manner,
57 ## using the platform-matrix.yml template. This will create one job
58 ## for each platform from the passed-in jobTemplate (either a build
59 ## job or a test job). The build-job.yml and test-job.yml templates
60 ## use xplat-job.yml to handle some of the common logic for
61 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
62 ## base.yml job template, which sets up telemetry and signing support.
64 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
65 ## | (passed-in jobTemplate) | (arcade)
66 ## \------> test-job.yml ------/
67 ## \------> format-job.yml ----/
69 # TODO: simplify logic surrounding official build/ci. See
70 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
75 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
76 - template: eng/platform-matrix.yml
78 jobTemplate: build-job.yml
80 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
84 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
99 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
100 - template: eng/platform-matrix.yml
102 jobTemplate: build-job.yml
104 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
115 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
117 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
123 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
124 - template: eng/platform-matrix.yml
126 jobTemplate: build-job.yml
128 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
136 ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
144 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
145 - template: eng/platform-matrix.yml
147 jobTemplate: build-job.yml
151 # Publishing packages to blob feeds sometimes takes a long time
152 # due to waiting for an exclusive lock on the feed.
153 # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
154 timeoutInMinutes: 120
157 # Checked test builds
159 # The test jobs that can be triggered by a PR, manually from ADO and that are scheduled
160 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual', 'Schedule')) }}:
161 - template: eng/platform-matrix.yml
163 jobTemplate: test-job.yml
165 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
177 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
181 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
183 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
186 # ReadyToRun test jobs that are triggered by default from a PR.
188 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
189 - template: eng/platform-matrix.yml
191 jobTemplate: test-job.yml
193 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
201 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
207 # CoreFX test runs against CoreCLR
210 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
211 - template: eng/platform-matrix.yml
213 jobTemplate: test-job.yml
215 ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
219 helixQueueGroup: corefx
221 ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
224 displayNameArgs: CoreFX
228 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
229 - template: eng/platform-matrix.yml
231 jobTemplate: test-job.yml
238 - template: eng/platform-matrix.yml
240 jobTemplate: test-job.yml
260 # Release test builds
264 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
265 - template: eng/platform-matrix.yml
267 jobTemplate: test-job.yml
276 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
277 - template: eng/platform-matrix.yml
279 jobTemplate: test-job.yml
286 - template: eng/platform-matrix.yml
288 jobTemplate: test-job.yml
298 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
299 - template: eng/platform-matrix.yml
301 jobTemplate: format-job.yml
306 # Publish build information to Build Assets Registry
308 # This job gathers build assets from the pipeline (from each official
309 # product build job), and publishes them to the build assets
310 # registry. Its dependencies should be updated to include all of the
311 # official builds if we add more platform/arch combinations.
313 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
314 - template: /eng/finalize-publish.yml
317 - build_Linux_arm_release
318 - build_Linux_arm64_release
319 - build_Linux_musl_x64_release
320 - build_Linux_musl_arm64_release
321 - build_Linux_rhel6_x64_release
322 - build_Linux_x64_release
323 - build_OSX_x64_release
324 - build_Windows_NT_x64_release
325 - build_Windows_NT_x86_release
326 - build_Windows_NT_arm_release
327 - build_Windows_NT_arm64_release