Update CoreClr, CoreFx to preview-27223-01, preview.18622.2, respectively (master...
[platform/upstream/coreclr.git] / azure-pipelines.yml
1
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)
5
6 variables:
7   DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
8
9 resources:
10   containers:
11   - container: ubuntu_1404_arm_cross_build_image
12     image: microsoft/dotnet-buildtools-prereqs:ubuntu-14.04-cross-e435274-20180426002420
13
14   - container: ubuntu_1604_arm64_cross_build_image
15     image: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180315221921
16
17   - container: ubuntu_1604_x64_build_image
18     image: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-c103199-20180628134544
19
20   - container: musl_x64_build_image
21     image: microsoft/dotnet-buildtools-prereqs:alpine-3.6-e2521f8-20180716231200
22
23   - container: centos7_x64_build_image
24     image: microsoft/dotnet-buildtools-prereqs:centos-7-d485f41-20173404063424
25
26   - container: centos6_x64_build_image
27     image: microsoft/dotnet-buildtools-prereqs:centos-6-376e1a3-20174311014331
28
29 jobs:
30
31 ##   The following is the matrix of test runs that we have. This is
32 ##   duplicated for each os/arch combination in platform-matrix.yml.
33
34 ##
35 ##   Product build       Test build              Test run
36 ##   (Azure DevOps)      (Azure DevOps)          (helix)
37 ##
38 ##   ###########################################################################################
39 ##
40 ##   Debug
41 ##
42 ##   Checked ----------> Pri0 -----------------> plain runtests
43 ##           |
44 ##           \---------> Pri1 -----------------> plain runtests
45 ##           |                \----------------> jitstress
46 ##           |                \----------------> gcstress
47 ##           |                \----------------> maybe more (dynamically selected runtest modes)
48 ##           |
49 ##           \---------> Pri1 crossgen --------> plain runtests
50 ##                                     \-------> jitstress
51 ##                                     \-------> gcstress
52 ##                                     \-------> maybe more (dynamically selected runtest modes)
53 ##
54 ##   Release ----------> Pri1 -----------------> plain runtests
55 ##           |
56 ##           \---------> Pri1 crossgen --------> plain runtests
57 ##
58 ##
59
60 ## Each build or test job is defined in Azure DevOps, and will show
61 ## up in the UI in the order in which they are defined here. The
62 ## build and test build job matrix is defined statically, but
63 ## queue-time inputs can be used to control whether a job executes
64 ## (used to select which jobs run in ci vs for official builds), or
65 ## to select test modes. This should eventually be used to enable
66 ## requesting specific test runs from pull requests.
67
68
69 ##
70 ## Templates used to define jobs:
71 ## Please update this if the factoring changes.
72 ##
73 ## This file defines the set of jobs in a platform-agnostic manner,
74 ## using the platform-matrix.yml template. This will create one job
75 ## for each platform from the passed-in jobTemplate (either a build
76 ## job or a test job). The build-job.yml and test-job.yml templates
77 ## use xplat-job.yml to handle some of the common logic for
78 ## abstracting over platforms. Finally, xplat-job.yml uses the arcade
79 ## base.yml job template, which sets up telemetry and signing support.
80
81 ## azure-pipelines.yml -> platform-matrix.yml -------> build-job.yml -------> xplat-job.yml -> base.yml
82 ##                                            |  (passed-in jobTemplate)  |                    (arcade)
83 ##                                            \------> test-job.yml ------/
84
85 # TODO: simplify logic surrounding official build/ci. See
86 # https://github.com/Microsoft/azure-pipelines-yaml/pull/46 for more information
87
88 #
89 # Debug build (CI)
90 #
91 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
92   - template: eng/platform-matrix.yml
93     parameters:
94       jobTemplate: build-job.yml
95       buildConfig: debug
96
97 #
98 # Checked build (CI)
99 #
100 - ${{ if eq(variables['System.TeamProject'], 'public') }}:
101   - template: eng/platform-matrix.yml
102     parameters:
103       jobTemplate: build-job.yml
104       buildConfig: checked
105
106 #
107 # Release build (Official Build)
108 #
109 - template: eng/platform-matrix.yml
110   parameters:
111     jobTemplate: build-job.yml
112     buildConfig: release
113     jobParameters:
114       # Publishing packages to blob feeds sometimes takes a long time
115       # due to waiting for an exclusive lock on the feed.
116       # See https://github.com/dotnet/arcade/blob/master/Documentation/CorePackages/AsyncPublishing.md
117       timeoutInMinutes: 120
118
119 #
120 # Checked test builds
121 #
122
123 # Pri0 (PullRequest)
124 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
125   - template: eng/platform-matrix.yml
126     parameters:
127       jobTemplate: test-job.yml
128       buildConfig: checked
129       jobParameters:
130         priority: 0
131         timeoutInMinutes: 120
132
133 # Pri1 (CI)
134 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
135   - template: eng/platform-matrix.yml
136     parameters:
137       jobTemplate: test-job.yml
138       buildConfig: checked
139       jobParameters:
140         priority: 1
141         timeoutInMinutes: 240
142
143 # Pri1 crossgen (CI)
144 - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) }}:
145   - template: eng/platform-matrix.yml
146     parameters:
147       jobTemplate: test-job.yml
148       buildConfig: checked
149       jobParameters:
150         priority: 1
151         crossgen: true
152         timeoutInMinutes: 240
153
154 # Pri1 (Manual)
155 - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'Manual')) }}:
156   - template: eng/platform-matrix.yml
157     parameters:
158       jobTemplate: test-job.yml
159       buildConfig: checked
160       jobParameters:
161         priority: 1
162         scenarios: 'normal,jitstress1,jitstress2,gcstress0x3,gcstress0xc'
163         timeoutInMinutes: 300
164
165 #
166 # Release test builds (Official Build)
167 #
168
169 # Pri1
170 - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
171   - template: eng/platform-matrix.yml
172     parameters:
173       jobTemplate: test-job.yml
174       buildConfig: release
175       jobParameters:
176         priority: 1
177
178 # Pri1 crossgen (Official Build)
179 - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
180   - template: eng/platform-matrix.yml
181     parameters:
182       jobTemplate: test-job.yml
183       buildConfig: release
184       jobParameters:
185         priority: 1
186         crossgen: true
187
188
189 # Publish build information to Build Assets Registry
190
191 # This job gathers build assets from the pipeline (from each official
192 # product build job), and publishes them to the build assets
193 # registry. Its dependencies should be updated to include all of the
194 # official builds if we add more platform/arch combinations.
195
196 - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
197   - template: /eng/common/templates/job/publish-build-assets.yml
198     parameters:
199       configuration: Release
200       pool:
201         name: dotnet-internal-temp
202       dependsOn:
203       - build_Linux_arm_release
204       - build_Linux_arm64_release
205       # TODO: depend on musl job once the glibc container issue is fixed
206       # https://dnceng.visualstudio.com/internal/_workitems/edit/109
207       # - build_Linux_musl_x64_release
208       - build_Linux_rhel6_x64_release
209       - build_Linux_rhel7_x64_release
210       - build_Linux_x64_release
211       - build_OSX_x64_release
212       - build_Windows_NT_x64_release
213       - build_Windows_NT_x86_release
214       - build_Windows_NT_arm_release
215       - build_Windows_NT_arm64_release