-
Notifications
You must be signed in to change notification settings - Fork 4.6k
/
global-build.yml
177 lines (165 loc) · 6.19 KB
/
global-build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# The purpose of this pipeline is to exercise local developer workflow in the consolidated
# runtime repo. In particular, it is supposed to run the root "build" script just like any
# normal developer normally would and monitor regressions w.r.t. this fundamental scenario.
trigger: none
pr:
branches:
include:
- main
- release/*.*
paths:
include:
- '*'
- eng/pipelines/global-build.yml
exclude:
- '**.md'
- .devcontainer/*
- .github/*
- docs/*
- eng/pipelines/coreclr/*.*
- eng/pipelines/libraries/*.*
- eng/pipelines/installer/*.*
- PATENTS.TXT
- THIRD-PARTY-NOTICES.TXT
variables:
- template: /eng/pipelines/common/variables.yml
extends:
template: /eng/pipelines/common/templates/pipeline-with-resources.yml
parameters:
stages:
- stage: Build
jobs:
#
# Evaluate paths
#
- ${{ if eq(variables.dependOnEvaluatePaths, true) }}:
- template: /eng/pipelines/common/evaluate-default-paths.yml
#
# Build with Release config and Debug runtimeConfiguration
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- windows_x86
- osx_x64
- osx_arm64
jobParameters:
testGroup: innerloop
nameSuffix: Runtime_Debug
buildArgs: -c release -runtimeConfiguration debug
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# Build with Release config and runtimeConfiguration with MSBuild generator
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- windows_x86
jobParameters:
testGroup: innerloop
nameSuffix: MSBuild_CMake
buildArgs: -c Release -msbuild
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# Build with Debug config and Release runtimeConfiguration
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: debug
platforms:
- linux_x64_dev_innerloop
jobParameters:
testGroup: innerloop
nameSuffix: Runtime_Release
buildArgs: -c debug -runtimeConfiguration release
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is
# specified. Catches cases where we depend on Configuration also being specified
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: debug
platforms:
- linux_x64_dev_innerloop
jobParameters:
testGroup: innerloop
nameSuffix: RuntimeFlavor_Mono
buildArgs: /p:RuntimeFlavor=Mono
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# Build Mono + Libraries. This exercises the code path where we build libraries without
# first building CoreCLR
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: debug
platforms:
- windows_x64
jobParameters:
testGroup: innerloop
nameSuffix: Mono_Libraries
buildArgs: -subset mono+libs /p:RuntimeFlavor=Mono
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# Build Libraries AllConfigurations. This exercises the code path where we build libraries for all
# configurations on a non Windows operating system.
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: debug
platforms:
- linux_x64_dev_innerloop
jobParameters:
nameSuffix: Libraries_AllConfigurations
buildArgs: -subset libs -allconfigurations
timeoutInMinutes: 120
condition:
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),
eq(variables['isRollingBuild'], true))
#
# SourceBuild Build
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: Release
platforms:
- SourceBuild_linux_x64
jobParameters:
nameSuffix: PortableSourceBuild
timeoutInMinutes: 95
condition:
eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true)