[Tizen] Add crossgen and coreconsole to coreclr package
[platform/upstream/coreclr.git] / azure-pipelines.yml
1 trigger:
2   batch: true
3   branches:
4     include:
5     - master
6     - release/3.0
7
8 pr:
9 - master
10 - release/3.0
11
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)
15
16 variables:
17 - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
18   value: true
19
20 jobs:
21
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.
24
25 ##
26 ##   Product build       Test build              Test run
27 ##   (Azure DevOps)      (Azure DevOps)          (helix)
28 ##
29 ##   ###########################################################################################
30 ##
31 ##   Debug
32 ##
33 ##   Checked ----------> Pri0 -----------------> plain runtests
34 ##           |
35 ##           \---------> Pri1 -----------------> plain runtests
36 ##           |                \----------------> jitstress
37 ##           |                \----------------> gcstress
38 ##           |                \----------------> runincontext
39 ##           |                \----------------> maybe more (dynamically selected runtest modes)
40 ##           |
41 ##           \---------> Pri1 crossgen --------> plain runtests
42 ##                                     \-------> jitstress
43 ##                                     \-------> gcstress
44 ##                                     \-------> maybe more (dynamically selected runtest modes)
45 ##
46 ##   Release ----------> Pri1 -----------------> plain runtests
47 ##           |
48 ##           \---------> Pri1 crossgen --------> plain runtests
49 ##
50 ##
51
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.
59
60
61 ##
62 ## Templates used to define jobs:
63 ## Please update this if the factoring changes.
64 ##
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.
72
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 ----/
77
78 # TODO: simplify logic surrounding official build/ci. See
79 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
80
81 #
82 # Debug builds
83 #
84 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
85   - template: eng/platform-matrix.yml
86     parameters:
87       jobTemplate: build-job.yml
88       buildConfig: debug
89       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
90         platforms:
91         - Windows_NT_x64
92         - Windows_NT_x86
93       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
94         platforms:
95         - Linux_arm
96         - Linux_arm64
97         - Linux_musl_arm64
98         - Linux_musl_x64
99         - Linux_rhel6_x64
100         - Linux_x64
101         - OSX_x64
102         - Windows_NT_arm
103         - Windows_NT_arm64
104
105 #
106 # Checked builds
107 #
108 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
109   - template: eng/platform-matrix.yml
110     parameters:
111       jobTemplate: build-job.yml
112       buildConfig: checked
113       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
114         platforms:
115         - Linux_arm
116         - Linux_arm64
117         - Linux_musl_x64
118         - Linux_x64
119         - OSX_x64
120         - Windows_NT_arm
121         - Windows_NT_arm64
122         - Windows_NT_x64
123         - Windows_NT_x86
124       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
125         platformGroup: all
126       ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
127         platformGroup: all
128
129 #
130 # Release builds
131 #
132 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
133   - template: eng/platform-matrix.yml
134     parameters:
135       jobTemplate: build-job.yml
136       buildConfig: release
137       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
138         platforms:
139         - Linux_arm64
140         - Linux_musl_x64
141         - Linux_rhel6_x64
142         - Windows_NT_arm
143         - Windows_NT_arm64
144         - Windows_NT_x64
145       ${{ if and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
146         platforms:
147         - Linux_arm
148         - Linux_musl_arm64
149         - Linux_x64
150         - OSX_x64
151         - Windows_NT_x86
152
153 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
154   - template: eng/platform-matrix.yml
155     parameters:
156       jobTemplate: build-job.yml
157       buildConfig: release
158       platformGroup: all
159       jobParameters:
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
164
165 #
166 # Checked test builds
167 #
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
171     parameters:
172       jobTemplate: test-job.yml
173       buildConfig: checked
174       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
175         platforms:
176         - Linux_arm
177         - Linux_arm64
178         - Linux_musl_x64
179         - Linux_x64
180         - OSX_x64
181         - Windows_NT_arm
182         - Windows_NT_arm64
183         - Windows_NT_x64
184         - Windows_NT_x86
185         helixQueueGroup: pr
186       ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
187         platformGroup: all
188         helixQueueGroup: all
189       jobParameters:
190         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
191           testGroup: innerloop
192         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop') }}:
193           testGroup: outerloop
194         
195 # ReadyToRun test jobs that are triggered by default from a PR.
196
197 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
198   - template: eng/platform-matrix.yml
199     parameters:
200       jobTemplate: test-job.yml
201       buildConfig: checked
202       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
203         platforms:
204         - Linux_x64
205         - OSX_x64
206         - Windows_NT_x64
207         - Windows_NT_x86
208         helixQueueGroup: pr
209       jobParameters:
210         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
211           testGroup: innerloop
212         readyToRun: true
213         displayNameArgs: R2R
214
215 #
216 # CoreFX test runs against CoreCLR
217 #
218
219 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
220   - template: eng/platform-matrix.yml
221     parameters:
222       jobTemplate: test-job.yml
223       buildConfig: checked
224       ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'coreclr-ci')) }}:
225         platforms:
226         - Linux_x64
227         - Windows_NT_x64
228       helixQueueGroup: corefx
229       jobParameters:
230         ${{ if eq(variables['Build.DefinitionName'], 'coreclr-ci') }}:
231           testGroup: innerloop
232         corefxTests: true
233         displayNameArgs: CoreFX
234
235 # CI (merge) jobs
236
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
239     parameters:
240       jobTemplate: test-job.yml
241       buildConfig: checked
242       platformGroup: all
243       helixQueueGroup: ci
244       jobParameters:
245         testGroup: outerloop
246
247   - template: eng/platform-matrix.yml
248     parameters:
249       jobTemplate: test-job.yml
250       buildConfig: checked
251       platforms:
252       - Linux_arm64
253       - Linux_musl_x64
254       - Linux_musl_arm64
255       - Linux_rhel6_x64
256       - Linux_x64
257       - OSX_x64
258       - Windows_NT_x64
259       - Windows_NT_x86
260       - Windows_NT_arm
261       - Windows_NT_arm64
262       helixQueueGroup: ci
263       jobParameters:
264         testGroup: outerloop
265         readyToRun: true
266         displayNameArgs: R2R
267
268 #
269 # Release test builds
270 #
271
272 # Pull-Request test
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
275     parameters:
276       jobTemplate: test-job.yml
277       buildConfig: release
278       platforms:
279       - Linux_musl_x64
280       helixQueueGroup: pr
281       jobParameters:
282         testGroup: innerloop
283
284 # Official test
285 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
286   - template: eng/platform-matrix.yml
287     parameters:
288       jobTemplate: test-job.yml
289       buildConfig: release
290       platformGroup: all
291       helixQueueGroup: all
292       jobParameters:
293         testGroup: outerloop
294
295   - template: eng/platform-matrix.yml
296     parameters:
297       jobTemplate: test-job.yml
298       buildConfig: release
299       platformGroup: all
300       helixQueueGroup: all
301       jobParameters:
302         testGroup: outerloop
303         readyToRun: true
304         displayNameArgs: R2R
305
306 # Format
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
309     parameters:
310       jobTemplate: format-job.yml
311       platforms:
312       - Linux_x64
313       - Windows_NT_x64
314
315 # Publish build information to Build Assets Registry
316
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.
321
322 - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
323   - template: /eng/finalize-publish.yml
324     parameters:
325       dependsOn:
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