-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add `runtime-wasm` pipeline This adds support for a `runtime-wasm` pipeline, which uses `runtime-extra-platforms.yml`. The wasm jobs have been moved to `runtime-extra-platforms-wasm.yml`, and the rest to `runtime-extra-platforms-other.yml`. And the two files are included conditionally. Effectively, this still runs all these jobs when `runtime-extra-platforms` is run (same as before). But it allows running just the wasm jobs, triggered manually with: `/azp run runtime-wasm` When `runtime-wasm` is manually run: - LibraryTests will run all the tests on linux+windows - LibraryTests_EAT will run all the tests on linux - LibraryTests_AOT will run all the tests on linux+windows - Wasm.Build.Tests, and Wasm debugger tests will run on linux+windows - Runtime tests will run on linux When `runtime-extra-platforms` is manually run: - LibraryTests will run all the tests, if paths changed - LibraryTests_EAT will run all the tests on linux, if paths changed - LibraryTests_AOT will run all the tests on linux+windows, if paths changed - Wasm.Build.Tests, and Wasm debugger tests will never run - Runtime tests will never run On rolling builds, `runtime-extra-platforms` runs by default: - LibraryTests will run all the tests - LibraryTests_EAT will run all the tests on linux - LibraryTests_AOT will run all the tests on linux+windows - Wasm.Build.Tests, and Wasm debugger tests will never run - Runtime tests will never run With feedback from @steveisok, and @safern. * Flow `isExtraPlatformsBuild` to the new *-wasm, and *-other templates ``` /mnt/vss/_work/1/s/.packages/microsoft.dotnet.helix.sdk/7.0.0-beta.22080.1/tools/Microsoft.DotNet.Helix.Sdk.MultiQueue.targets(18,5): error : You must specify at least one target queue to send a job to helix. Use the HelixTargetQueues property or HelixTargetQueue items. [/mnt/vss/_work/1/s/src/libraries/sendtohelixhelp.proj] ``` Fix suggested by @safern * Update condition, based on feedback * Fix typo * Rename the var `RunSmokeTestsOnly` to *not* the match msbuild property .. used to control smoke tests. The variables in yml seem to get converted to environment variables which can affect the build. Like causing unrelated builds to get `RUNSMOKETESTSONLY=true`, and breaking the build.
- Loading branch information
Showing
5 changed files
with
620 additions
and
479 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,371 @@ | ||
# This contains only jobs that are not runnable by a platform specific | ||
# pipeline, like runtime-wasm | ||
# These are run as part of runtime-extra-platforms by default. | ||
|
||
parameters: | ||
isExtraPlatformsBuild: '' | ||
|
||
jobs: | ||
|
||
# | ||
# Build CoreCLR release | ||
# Always as they are needed by Installer and we always build and test the Installer. | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml | ||
buildConfig: release | ||
platforms: | ||
- Linux_x64 | ||
- Linux_arm | ||
- Linux_arm64 | ||
- Linux_musl_x64 | ||
- OSX_x64 | ||
- windows_x64 | ||
- windows_x86 | ||
- windows_arm64 | ||
jobParameters: | ||
testGroup: innerloop | ||
|
||
# | ||
# Build libraries using live CoreLib | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/libraries/build-job.yml | ||
buildConfig: Release | ||
platforms: | ||
- Linux_x64 | ||
- Linux_arm | ||
- Linux_arm64 | ||
- Linux_musl_x64 | ||
- OSX_x64 | ||
- windows_x64 | ||
- windows_x86 | ||
- windows_arm64 | ||
|
||
# | ||
# Libraries Release Test Execution against a release coreclr runtime | ||
# Only when the PR contains a libraries change | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/libraries/run-test-job.yml | ||
buildConfig: Release | ||
platforms: | ||
- Linux_x64 | ||
- Linux_arm | ||
- Linux_arm64 | ||
- Linux_musl_x64 | ||
- OSX_x64 | ||
- windows_x64 | ||
- windows_x86 | ||
- windows_arm64 | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
jobParameters: | ||
isOfficialBuild: false | ||
isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} | ||
testScope: innerloop | ||
liveRuntimeBuildConfig: release | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# Run net48 tests on win-x64 | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/libraries/build-job.yml | ||
buildConfig: Release | ||
platforms: | ||
- windows_x64 | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
jobParameters: | ||
framework: net48 | ||
runTests: true | ||
testScope: innerloop | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
#### MONO LEGS | ||
|
||
# | ||
# Build the whole product using Mono and run libraries tests | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Windows_x64 | ||
variables: | ||
# map dependencies variables to local variables | ||
- name: librariesContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] | ||
- name: monoContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] | ||
jobParameters: | ||
testScope: innerloop | ||
nameSuffix: AllSubsets_Mono | ||
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true | ||
timeoutInMinutes: 120 | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# extra steps, run tests | ||
extraStepsTemplate: /eng/pipelines/libraries/helix.yml | ||
extraStepsParameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||
condition: >- | ||
or( | ||
eq(variables['librariesContainsChange'], true), | ||
eq(variables['monoContainsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# | ||
# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size | ||
# Build the whole product using Mono and run libraries tests | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: mono | ||
platforms: | ||
- iOS_arm64 | ||
- tvOS_arm64 | ||
variables: | ||
# map dependencies variables to local variables | ||
- name: librariesContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] | ||
- name: monoContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] | ||
jobParameters: | ||
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono | ||
buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true | ||
timeoutInMinutes: 180 | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# extra steps, run tests | ||
extraStepsTemplate: /eng/pipelines/libraries/helix.yml | ||
extraStepsParameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||
extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true | ||
condition: >- | ||
or( | ||
eq(variables['librariesContainsChange'], true), | ||
eq(variables['monoContainsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Android_arm | ||
- Android_arm64 | ||
variables: | ||
# map dependencies variables to local variables | ||
- name: librariesContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] | ||
- name: monoContainsChange | ||
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] | ||
jobParameters: | ||
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono | ||
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) | ||
timeoutInMinutes: 180 | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# extra steps, run tests | ||
extraStepsTemplate: /eng/pipelines/libraries/helix.yml | ||
extraStepsParameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||
condition: >- | ||
or( | ||
eq(variables['librariesContainsChange'], true), | ||
eq(variables['monoContainsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# | ||
# Build the whole product using Mono and run runtime tests | ||
# Build Mono release | ||
# Only when libraries, mono, or the runtime tests changed | ||
# Currently only these architectures are needed for the runtime tests. | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/mono/templates/build-job.yml | ||
runtimeFlavor: mono | ||
buildConfig: release | ||
platforms: | ||
- Linux_arm64 | ||
jobParameters: | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# | ||
# Mono Test builds with CoreCLR runtime tests using live libraries debug build | ||
# Only when Mono is changed | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml | ||
buildConfig: release | ||
runtimeFlavor: mono | ||
platforms: | ||
- CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 | ||
jobParameters: | ||
testGroup: innerloop | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# | ||
# Build the whole product using Mono for Android and run runtime tests with Android emulator | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Android_x64 | ||
variables: | ||
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: | ||
- name: _HelixSource | ||
value: pr/dotnet/runtime/$(Build.SourceBranch) | ||
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: | ||
- name: _HelixSource | ||
value: ci/dotnet/runtime/$(Build.SourceBranch) | ||
- name: timeoutPerTestInMinutes | ||
value: 60 | ||
- name: timeoutPerTestCollectionInMinutes | ||
value: 180 | ||
jobParameters: | ||
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono_RuntimeTests | ||
buildArgs: -s mono+libs -c $(_BuildConfig) | ||
timeoutInMinutes: 240 | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# extra steps, run tests | ||
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml | ||
extraStepsParameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||
|
||
# | ||
# Build the whole product using Mono for Android and run runtime tests with interpreter | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Android_x64 | ||
variables: | ||
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: | ||
- name: _HelixSource | ||
value: pr/dotnet/runtime/$(Build.SourceBranch) | ||
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: | ||
- name: _HelixSource | ||
value: ci/dotnet/runtime/$(Build.SourceBranch) | ||
- name: timeoutPerTestInMinutes | ||
value: 60 | ||
- name: timeoutPerTestCollectionInMinutes | ||
value: 180 | ||
jobParameters: | ||
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono_RuntimeTests_Interp | ||
buildArgs: -s mono+libs -c $(_BuildConfig) | ||
timeoutInMinutes: 240 | ||
runtimeVariant: monointerpreter | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# NOTE: Per PR test execution is not recommended for runtime tests | ||
${{ if eq(variables['isRollingBuild'], true) }}: | ||
# extra steps, run tests | ||
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml | ||
extraStepsParameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||
|
||
# | ||
# Mono CoreCLR runtime Test executions using live libraries in jit mode | ||
# Only when Mono is changed | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml | ||
buildConfig: release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Linux_arm64 | ||
helixQueueGroup: pr | ||
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml | ||
jobParameters: | ||
testGroup: innerloop | ||
liveLibrariesBuildConfig: Release | ||
liveRuntimeBuildConfig: release | ||
runtimeVariant: minijit | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# | ||
# Mono CoreCLR runtime Test executions using live libraries in interpreter mode | ||
# Only when Mono is changed | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml | ||
buildConfig: release | ||
runtimeFlavor: mono | ||
platforms: | ||
- Linux_arm64 | ||
helixQueueGroup: pr | ||
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml | ||
jobParameters: | ||
testGroup: innerloop | ||
liveLibrariesBuildConfig: Release | ||
liveRuntimeBuildConfig: release | ||
runtimeVariant: monointerpreter | ||
condition: >- | ||
or( | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), | ||
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) |
Oops, something went wrong.