|
1 | | -# The purpose of this pipeline is to exercise various developer workflows in the repo. |
2 | | -# Primarily, it is meant to cover local (non-cross) build scenarios and |
3 | | -# source-build scenarios that commonly cause build breaks. |
| 1 | +# This pipeline is used for running the VMR verification of the PR changes in repo-level PRs. |
| 2 | +# If there are changes in flight that intentionally create cross-repo breaking changes in the VMR ingestion, |
| 3 | +# this pipeline is expected to fail until the conflicts are resolved in the VMR. |
4 | 4 |
|
5 | 5 | trigger: none |
6 | 6 |
|
|
18 | 18 | - .devcontainer/* |
19 | 19 | - .github/* |
20 | 20 | - docs/* |
| 21 | + # Don't trigger VMR builds for changes to Mono. |
| 22 | + # Mono-based stage 2 source-build is not blocking for the VMR and is only done as a basic validation |
| 23 | + # for our partners. Interesting Mono-based stage 2 source-build legs are for architectures that are not |
| 24 | + # supported on CoreCLR, like S390X, which we don't build ourselves. |
| 25 | + - src/mono/* |
21 | 26 | - eng/pipelines/coreclr/*.* |
22 | 27 | - eng/pipelines/libraries/*.* |
23 | 28 | - eng/pipelines/installer/*.* |
24 | 29 | - PATENTS.TXT |
25 | 30 | - THIRD-PARTY-NOTICES.TXT |
26 | 31 |
|
27 | 32 | variables: |
28 | | - - template: /eng/pipelines/common/variables.yml |
| 33 | +- template: /eng/common/templates/variables/pool-providers.yml@self |
29 | 34 |
|
30 | | -extends: |
31 | | - template: /eng/pipelines/common/templates/pipeline-with-resources.yml |
32 | | - parameters: |
33 | | - isOfficialBuild: false |
34 | | - stages: |
35 | | - - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: |
36 | | - - stage: EvaluatePaths |
37 | | - displayName: Evaluate Paths |
38 | | - jobs: |
39 | | - - template: /eng/pipelines/common/evaluate-default-paths.yml |
40 | | - |
41 | | - - stage: Build |
42 | | - jobs: |
| 35 | +- name: skipComponentGovernanceDetection # we run CG on internal builds only |
| 36 | + value: true |
43 | 37 |
|
44 | | - # |
45 | | - # Build with Release config and runtimeConfiguration with MSBuild generator |
46 | | - # |
47 | | - - template: /eng/pipelines/common/platform-matrix.yml |
48 | | - parameters: |
49 | | - jobTemplate: /eng/pipelines/common/global-build-job.yml |
50 | | - buildConfig: release |
51 | | - platforms: |
52 | | - - windows_x86 |
53 | | - jobParameters: |
54 | | - testGroup: innerloop |
55 | | - nameSuffix: MSBuild_CMake |
56 | | - buildArgs: -c Release -msbuild |
57 | | - timeoutInMinutes: 120 |
58 | | - condition: |
59 | | - or( |
60 | | - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), |
61 | | - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), |
62 | | - eq(variables['isRollingBuild'], true)) |
| 38 | +- name: Codeql.Enabled # we run CodeQL on internal builds only |
| 39 | + value: false |
63 | 40 |
|
64 | | - # |
65 | | - # Build with RuntimeFlavor only. This exercise code paths where only RuntimeFlavor is |
66 | | - # specified. Catches cases where we depend on Configuration also being specified |
67 | | - # |
68 | | - - template: /eng/pipelines/common/platform-matrix.yml |
69 | | - parameters: |
70 | | - jobTemplate: /eng/pipelines/common/global-build-job.yml |
71 | | - buildConfig: debug |
72 | | - platforms: |
73 | | - - linux_x64_dev_innerloop |
74 | | - jobParameters: |
75 | | - testGroup: innerloop |
76 | | - nameSuffix: RuntimeFlavor_Mono |
77 | | - buildArgs: /p:RuntimeFlavor=Mono |
78 | | - timeoutInMinutes: 120 |
79 | | - condition: |
80 | | - or( |
81 | | - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_wasm.containsChange'], true), |
82 | | - eq(variables['isRollingBuild'], true)) |
| 41 | +resources: |
| 42 | + repositories: |
| 43 | + - repository: vmr |
| 44 | + type: github |
| 45 | + name: dotnet/dotnet |
| 46 | + endpoint: dotnet |
83 | 47 |
|
84 | | - # |
85 | | - # Build Libraries (all TFMs) and create packages on a non Windows operating system. |
86 | | - # |
87 | | - - template: /eng/pipelines/common/platform-matrix.yml |
88 | | - parameters: |
89 | | - jobTemplate: /eng/pipelines/common/global-build-job.yml |
90 | | - buildConfig: debug |
91 | | - platforms: |
92 | | - - linux_x64_dev_innerloop |
93 | | - jobParameters: |
94 | | - nameSuffix: Libraries_WithPackages |
95 | | - buildArgs: -subset libs -pack |
96 | | - timeoutInMinutes: 120 |
97 | | - condition: |
98 | | - or( |
99 | | - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), |
100 | | - eq(variables['isRollingBuild'], true)) |
| 48 | +stages: |
| 49 | +- template: /eng/pipelines/templates/stages/vmr-build.yml@vmr |
| 50 | + parameters: |
| 51 | + isBuiltFromVmr: false |
| 52 | + scope: lite |
| 53 | + verifications: [ "source-build-stage1", "source-build-stage2" ] |
101 | 54 |
|
102 | | - # |
103 | | - # Build native assets on Alpine. This exercises more modern musl libc changes that have a tendendy to break source-build. |
104 | | - # We don't add this as a source-build job as the repo source-build infrastructure isn't set up to run on alpine effectively. |
105 | | - # |
106 | | - - template: /eng/pipelines/common/platform-matrix.yml |
107 | | - parameters: |
108 | | - jobTemplate: /eng/pipelines/common/global-build-job.yml |
109 | | - buildConfig: debug |
110 | | - platforms: |
111 | | - - linux_musl_x64_dev_innerloop |
112 | | - jobParameters: |
113 | | - nameSuffix: Musl_Validation |
114 | | - buildArgs: -subset clr.native+libs.native+host.native -c $(_BuildConfig) |
115 | | - timeoutInMinutes: 120 |
116 | | - condition: |
117 | | - or( |
118 | | - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), |
119 | | - eq(variables['isRollingBuild'], true)) |
0 commit comments