2 # Temporarily set a build number format that includes a large revision
3 # number that won't conflict with buildpipeline official builds.
4 name: $(Date:yyyyMMdd)$(Rev:.7r)
7 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
11 - container: ubuntu_1404_arm_cross_build_image
12 image: microsoft/dotnet-buildtools-prereqs:ubuntu-14.04-cross-e435274-20180426002420
14 - container: ubuntu_1604_arm64_cross_build_image
15 image: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180315221921
17 - container: musl_x64_build_image
18 image: microsoft/dotnet-buildtools-prereqs:alpine-3.6-WithNode-f4d3fe3-20181220200247
20 - container: musl_arm64_build_image
21 image: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-arm64-alpine10fcdcf-20190208200917
23 - container: centos7_x64_build_image
24 image: microsoft/dotnet-buildtools-prereqs:centos-7-d485f41-20173404063424
26 - container: centos6_x64_build_image
27 image: microsoft/dotnet-buildtools-prereqs:centos-6-376e1a3-20174311014331
37 ## The following is the matrix of test runs that we have. This is
38 ## duplicated for each os/arch combination in platform-matrix.yml.
41 ## Product build Test build Test run
42 ## (Azure DevOps) (Azure DevOps) (helix)
44 ## ###########################################################################################
48 ## Checked ----------> Pri0 -----------------> plain runtests
50 ## \---------> Pri1 -----------------> plain runtests
51 ## | \----------------> jitstress
52 ## | \----------------> gcstress
53 ## | \----------------> maybe more (dynamically selected runtest modes)
55 ## \---------> Pri1 crossgen --------> plain runtests
56 ## \-------> jitstress
58 ## \-------> maybe more (dynamically selected runtest modes)
60 ## Release ----------> Pri1 -----------------> plain runtests
62 ## \---------> Pri1 crossgen --------> plain runtests
66 ## Each build or test job is defined in Azure DevOps, and will show
67 ## up in the UI in the order in which they are defined here. The
68 ## build and test build job matrix is defined statically, but
69 ## queue-time inputs can be used to control whether a job executes
70 ## (used to select which jobs run in ci vs for official builds), or
71 ## to select test modes. This should eventually be used to enable
72 ## requesting specific test runs from pull requests.
76 ## Templates used to define jobs:
77 ## Please update this if the factoring changes.
79 ## This file defines the set of jobs in a platform-agnostic manner,
80 ## using the platform-matrix.yml template. This will create one job
81 ## for each platform from the passed-in jobTemplate (either a build
82 ## job or a test job). The build-job.yml and test-job.yml templates
83 ## use xplat-job.yml to handle some of the common logic for
84 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
85 ## base.yml job template, which sets up telemetry and signing support.
87 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
88 ## | (passed-in jobTemplate) | (arcade)
89 ## \------> test-job.yml ------/
91 # TODO: simplify logic surrounding official build/ci. See
92 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
95 # Debug build (Pull Request)
97 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
98 - template: eng/platform-matrix.yml
100 jobTemplate: build-job.yml
106 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
107 - template: eng/platform-matrix.yml
109 jobTemplate: build-job.yml
113 # Release build (Pull Request)
115 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
116 - template: eng/platform-matrix.yml
118 jobTemplate: build-job.yml
122 # Release build (Official Build)
124 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
125 - template: eng/platform-matrix.yml
127 jobTemplate: build-job.yml
130 # Publishing packages to blob feeds sometimes takes a long time
131 # due to waiting for an exclusive lock on the feed.
132 # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
133 timeoutInMinutes: 120
136 # Checked test builds
139 # Pri0 (Pull Request)
140 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
141 - template: eng/platform-matrix.yml
143 jobTemplate: test-job.yml
148 asString: 'normal,no_tiered_compilation'
151 - no_tiered_compilation
152 # "Total" includes building tests, waiting for a queue in Helix to become available, and running the tests.
153 # In case test-job.yml gets split into two separate jobs (e.g. build-test-job.yml and run-test.yml)
154 # this number should be adjusted accordingly.
155 timeoutTotalInMinutes: 240
156 # "PerCollection" is time needed for the "biggest" xUnit test collection to complete.
157 # In case xUnit test wrappers get refactored this number should also be adjusted.
158 timeoutPerTestCollectionInMinutes: 30
159 # "PerTest" corresponds to individual test running time (i.e. __TestTimeout).
160 timeoutPerTestInMinutes: 10
162 # Pri1 (Pull Request, Outerloop)
163 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-outerloop')) }}:
164 - template: eng/platform-matrix.yml
166 jobTemplate: test-job.yml
171 asString: 'normal,no_tiered_compilation'
174 - no_tiered_compilation
175 timeoutTotalInMinutes: 360
176 timeoutPerTestCollectionInMinutes: 60
177 timeoutPerTestInMinutes: 10
180 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
181 - template: eng/platform-matrix.yml
183 jobTemplate: test-job.yml
188 asString: 'normal,no_tiered_compilation'
191 - no_tiered_compilation
192 timeoutTotalInMinutes: 360
193 timeoutPerTestCollectionInMinutes: 60
194 timeoutPerTestInMinutes: 10
196 # Pri1 ReadyToRun (CI)
197 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
198 - template: eng/platform-matrix.yml
200 jobTemplate: test-job.yml
206 asString: 'normal,no_tiered_compilation'
209 - no_tiered_compilation
210 timeoutTotalInMinutes: 360
211 timeoutPerTestCollectionInMinutes: 60
212 timeoutPerTestInMinutes: 10
214 # Pri1 (Schedule, Manual)
215 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule', 'Manual')) }}:
216 - template: eng/platform-matrix.yml
218 jobTemplate: test-job.yml
223 asString: 'normal,no_tiered_compilation,jitstress1,jitstress2,jitstress1_tiered,jitstress2_tiered,jitstressregs1,jitstressregs2,jitstressregs3,jitstressregs4,jitstressregs8,jitstressregs0x10,jitstressregs0x80,jitstressregs0x1000,jitminopts'
226 - no_tiered_compilation
238 - jitstressregs0x1000
240 timeoutTotalInMinutes: 480
241 # TODO: Adjust this number as soon as we have more data on how long it takes to run these jobs in Helix.
242 timeoutPerTestCollectionInMinutes: 120
243 timeoutPerTestInMinutes: 30
247 # Release test builds
250 # Pri1 (Official Build)
251 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
252 - template: eng/platform-matrix.yml
254 jobTemplate: test-job.yml
259 asString: 'normal,no_tiered_compilation'
262 - no_tiered_compilation
263 timeoutTotalInMinutes: 360
264 timeoutPerTestCollectionInMinutes: 60
265 timeoutPerTestInMinutes: 10
267 # Pri1 ReadyToRun (Official Build)
268 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
269 - template: eng/platform-matrix.yml
271 jobTemplate: test-job.yml
277 asString: 'normal,no_tiered_compilation'
280 - no_tiered_compilation
281 timeoutTotalInMinutes: 360
282 timeoutPerTestCollectionInMinutes: 60
283 timeoutPerTestInMinutes: 10
286 # Publish build information to Build Assets Registry
288 # This job gathers build assets from the pipeline (from each official
289 # product build job), and publishes them to the build assets
290 # registry. Its dependencies should be updated to include all of the
291 # official builds if we add more platform/arch combinations.
293 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
294 - template: /eng/finalize-publish.yml
297 - build_Linux_arm_release
298 - build_Linux_arm64_release
299 - build_Linux_musl_x64_release
300 - build_Linux_musl_arm64_release
301 - build_Linux_rhel6_x64_release
302 - build_Linux_x64_release
303 - build_OSX_x64_release
304 - build_Windows_NT_x64_release
305 - build_Windows_NT_x86_release
306 - build_Windows_NT_arm_release
307 - build_Windows_NT_arm64_release