Skip to content

Commit 74f23f1

Browse files
authored
Try moving mobile tests into their own pipelines. (#75213)
When making targeted changes to mobile platforms, you can now run more granular CI pipelines as opposed to the runtime-extra-platforms catch-all. Closes: #75002
1 parent 3de9649 commit 74f23f1

26 files changed

+743
-761
lines changed

eng/pipelines/common/variables.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,27 @@ variables:
1919
value: ${{ ne(variables['Build.DefinitionName'], 'runtime-extra-platforms') }}
2020
- name: isWasmOnlyBuild
2121
value: ${{ in(variables['Build.DefinitionName'], 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests') }}
22+
- name: isiOSLikeOnlyBuild
23+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-ios', 'runtime-tvos', 'runtime-ioslike') }}
24+
- name: isiOSLikeSimulatorOnlyBuild
25+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-iossimulator', 'runtime-tvossimulator', 'runtime-ioslikesimulator') }}
26+
- name: isAndroidOnlyBuild
27+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-android') }}
28+
- name: isAndroidEmulatorOnlyBuild
29+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-androidemulator') }}
30+
- name: isMacCatalystOnlyBuild
31+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-catalyst', 'runtime-maccatalyst') }}
32+
- name: isLinuxBionicOnlyBuild
33+
value: ${{ in(variables['Build.DefinitionName'], 'runtime-linuxbionic', 'runtime-bionic') }}
2234
- name: isRunSmokeTestsOnly
23-
value: ${{ notin(variables['Build.DefinitionName'], 'runtime-extra-platforms', 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests') }}
35+
value: ${{ notin(variables['Build.DefinitionName'], 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests', 'runtime-ios', 'runtime-tvos', 'runtime-ioslike', 'runtime-iossimulator', 'runtime-tvossimulator', 'runtime-ioslikesimulator', 'runtime-android', 'runtime-androidemulator', 'runtime-catalyst', 'runtime-maccatalyst', 'runtime-linuxbionic', 'runtime-bionic') }}
2436
- name: isNotSpecificPlatformOnlyBuild
25-
value: ${{ notin(variables['Build.DefinitionName'], 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests') }}
37+
value: ${{ notin(variables['Build.DefinitionName'], 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests', 'runtime-ios', 'runtime-tvos', 'runtime-ioslike', 'runtime-iossimulator', 'runtime-tvossimulator', 'runtime-ioslikesimulator', 'runtime-android', 'runtime-androidemulator', 'runtime-catalyst', 'runtime-maccatalyst', 'runtime-linuxbionic', 'runtime-bionic') }}
2638

2739
# We only run evaluate paths on runtime, runtime-staging and runtime-community pipelines on PRs
2840
# keep in sync with /eng/pipelines/common/xplat-setup.yml
2941
- name: dependOnEvaluatePaths
30-
value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community', 'runtime-extra-platforms', 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests', 'dotnet-linker-tests', 'runtime-dev-innerloop')) }}
42+
value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community', 'runtime-extra-platforms', 'runtime-wasm', 'runtime-wasm-libtests', 'runtime-wasm-non-libtests', 'runtime-ios', 'runtime-tvos', 'runtime-ioslike', 'runtime-iossimulator', 'runtime-tvossimulator', 'runtime-ioslikesimulator', 'runtime-android', 'runtime-androidemulator', 'runtime-catalyst', 'runtime-maccatalyst', 'runtime-linuxbionic', 'runtime-bionic', 'dotnet-linker-tests', 'runtime-dev-innerloop')) }}
3143
- name: debugOnPrReleaseOnRolling
3244
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
3345
value: Release
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# This contains only Android-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-android` name
4+
# /azp run runtime-android
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isAndroidOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
#
14+
# Build the whole product using Mono for Android and run runtime tests with Android devices
15+
#
16+
- template: /eng/pipelines/common/platform-matrix.yml
17+
parameters:
18+
jobTemplate: /eng/pipelines/common/global-build-job.yml
19+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
20+
buildConfig: Release
21+
runtimeFlavor: mono
22+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
23+
isAndroidOnlyBuild: ${{ parameters.isAndroidOnlyBuild }}
24+
platforms:
25+
- Android_arm64
26+
variables:
27+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
28+
- name: _HelixSource
29+
value: pr/dotnet/runtime/$(Build.SourceBranch)
30+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
31+
- name: _HelixSource
32+
value: ci/dotnet/runtime/$(Build.SourceBranch)
33+
- name: timeoutPerTestInMinutes
34+
value: 60
35+
- name: timeoutPerTestCollectionInMinutes
36+
value: 180
37+
jobParameters:
38+
testGroup: innerloop
39+
nameSuffix: AllSubsets_Mono_RuntimeTests
40+
buildArgs: -s mono+libs -c $(_BuildConfig)
41+
timeoutInMinutes: 240
42+
# don't run tests on PRs until we can get significantly more devices
43+
# Turn off the testing for now, until https://github.com/dotnet/runtime/issues/60128 gets resolved
44+
# ${{ if eq(variables['isRollingBuild'], true) }}:
45+
# # extra steps, run tests
46+
# extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
47+
# extraStepsParameters:
48+
# creator: dotnet-bot
49+
# testRunNamePrefixSuffix: Mono_$(_BuildConfig)
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# This contains only Android emulator-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-androidemulator` name
4+
# /azp run runtime-androidemulator
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isAndroidEmulatorOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
# Build the whole product using Mono for Android and run runtime tests with Android emulator
14+
#
15+
- template: /eng/pipelines/common/platform-matrix.yml
16+
parameters:
17+
jobTemplate: /eng/pipelines/common/global-build-job.yml
18+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
19+
buildConfig: Release
20+
runtimeFlavor: mono
21+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
22+
isAndroidEmulatorOnlyBuild: ${{ parameters.isAndroidEmulatorOnlyBuild }}
23+
platforms:
24+
- Android_x64
25+
variables:
26+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
27+
- name: _HelixSource
28+
value: pr/dotnet/runtime/$(Build.SourceBranch)
29+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
30+
- name: _HelixSource
31+
value: ci/dotnet/runtime/$(Build.SourceBranch)
32+
- name: timeoutPerTestInMinutes
33+
value: 60
34+
- name: timeoutPerTestCollectionInMinutes
35+
value: 180
36+
jobParameters:
37+
testGroup: innerloop
38+
nameSuffix: AllSubsets_Mono_RuntimeTests
39+
buildArgs: -s mono+libs -c $(_BuildConfig)
40+
timeoutInMinutes: 240
41+
# extra steps, run tests
42+
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
43+
extraStepsParameters:
44+
creator: dotnet-bot
45+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
46+
47+
#
48+
# Build the whole product using Mono for Android and run runtime tests with interpreter
49+
#
50+
- template: /eng/pipelines/common/platform-matrix.yml
51+
parameters:
52+
jobTemplate: /eng/pipelines/common/global-build-job.yml
53+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
54+
buildConfig: Release
55+
runtimeFlavor: mono
56+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
57+
isAndroidEmulatorOnlyBuild: ${{ parameters.isAndroidEmulatorOnlyBuild }}
58+
platforms:
59+
- Android_x64
60+
variables:
61+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
62+
- name: _HelixSource
63+
value: pr/dotnet/runtime/$(Build.SourceBranch)
64+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
65+
- name: _HelixSource
66+
value: ci/dotnet/runtime/$(Build.SourceBranch)
67+
- name: timeoutPerTestInMinutes
68+
value: 60
69+
- name: timeoutPerTestCollectionInMinutes
70+
value: 180
71+
jobParameters:
72+
testGroup: innerloop
73+
nameSuffix: AllSubsets_Mono_RuntimeTests_Interp
74+
buildArgs: -s mono+libs -c $(_BuildConfig)
75+
timeoutInMinutes: 240
76+
runtimeVariant: monointerpreter
77+
# extra steps, run tests
78+
extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
79+
extraStepsParameters:
80+
creator: dotnet-bot
81+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# This contains only iOS/tvOS-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-ios` name
4+
# /azp run runtime-ios
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isiOSLikeOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
#
14+
# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size
15+
# Build the whole product using Mono and run libraries tests
16+
#
17+
- template: /eng/pipelines/common/platform-matrix.yml
18+
parameters:
19+
jobTemplate: /eng/pipelines/common/global-build-job.yml
20+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
21+
buildConfig: Release
22+
runtimeFlavor: mono
23+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
24+
isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }}
25+
platforms:
26+
- iOS_arm64
27+
- tvOS_arm64
28+
variables:
29+
# map dependencies variables to local variables
30+
- name: librariesContainsChange
31+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
32+
- name: monoContainsChange
33+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
34+
jobParameters:
35+
testGroup: innerloop
36+
nameSuffix: AllSubsets_Mono
37+
isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }}
38+
buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true /p:IsManualOrRollingBuild=true
39+
timeoutInMinutes: 180
40+
# extra steps, run tests
41+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
42+
extraStepsParameters:
43+
creator: dotnet-bot
44+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
45+
extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# This contains only iOS/tvOS-simulator-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-iossimulator` name
4+
# /azp run runtime-iossimulator
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isiOSLikeSimulatorOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
#
14+
# iOS/tvOS interp - requires AOT Compilation and Interp flags
15+
# Build the whole product using Mono and run libraries tests
16+
#
17+
- template: /eng/pipelines/common/platform-matrix.yml
18+
parameters:
19+
jobTemplate: /eng/pipelines/common/global-build-job.yml
20+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
21+
buildConfig: Release
22+
runtimeFlavor: mono
23+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
24+
isiOSLikeSimulatorOnlyBuild: ${{ parameters.isiOSLikeSimulatorOnlyBuild }}
25+
platforms:
26+
- iOSSimulator_x64
27+
- tvOSSimulator_x64
28+
# don't run tests on arm64 PRs until we can get significantly more devices
29+
- ${{ if eq(variables['isRollingBuild'], true) }}:
30+
- iOSSimulator_arm64
31+
variables:
32+
# map dependencies variables to local variables
33+
- name: librariesContainsChange
34+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
35+
- name: monoContainsChange
36+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
37+
jobParameters:
38+
testGroup: innerloop
39+
nameSuffix: AllSubsets_Mono
40+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true
41+
timeoutInMinutes: 180
42+
# extra steps, run tests
43+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
44+
extraStepsParameters:
45+
creator: dotnet-bot
46+
interpreter: true
47+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# This contains only Bionic-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-bionic` name
4+
# /azp run runtime-bionic
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isLinuxBionicOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
#
14+
# Build the whole product using Mono for Android Linux with Bionic libc
15+
#
16+
- template: /eng/pipelines/common/platform-matrix.yml
17+
parameters:
18+
jobTemplate: /eng/pipelines/common/global-build-job.yml
19+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
20+
buildConfig: Release
21+
runtimeFlavor: mono
22+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
23+
isLinuxBionicOnlyBuild: ${{ parameters.isLinuxBionicOnlyBuild }}
24+
platforms:
25+
- Linux_bionic_arm64
26+
- Linux_bionic_x64
27+
variables:
28+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
29+
- name: _HelixSource
30+
value: pr/dotnet/runtime/$(Build.SourceBranch)
31+
- ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
32+
- name: _HelixSource
33+
value: ci/dotnet/runtime/$(Build.SourceBranch)
34+
- name: timeoutPerTestInMinutes
35+
value: 60
36+
- name: timeoutPerTestCollectionInMinutes
37+
value: 180
38+
jobParameters:
39+
testGroup: innerloop
40+
targetRid: Linux-bionic-x64
41+
nameSuffix: AllSubsets_Mono
42+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
43+
timeoutInMinutes: 240
44+
# extra steps, run tests
45+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
46+
extraStepsParameters:
47+
creator: dotnet-bot
48+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)_LinuxBionic
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# This contains only MacCatalyst-specific jobs
2+
# These are run as part of runtime-extra-platforms by default.
3+
# But can also be triggered manually via `runtime-maccatalyst` name
4+
# /azp run runtime-maccatalyst
5+
6+
parameters:
7+
isExtraPlatformsBuild: false
8+
isMacCatalystOnlyBuild: false
9+
isRollingBuild: false
10+
11+
jobs:
12+
13+
#
14+
# MacCatalyst interp - requires AOT Compilation and Interp flags
15+
# Build the whole product using Mono and run libraries tests
16+
#
17+
- template: /eng/pipelines/common/platform-matrix.yml
18+
parameters:
19+
jobTemplate: /eng/pipelines/common/global-build-job.yml
20+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
21+
buildConfig: Release
22+
runtimeFlavor: mono
23+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
24+
isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }}
25+
platforms:
26+
- MacCatalyst_x64
27+
- MacCatalyst_arm64
28+
variables:
29+
# map dependencies variables to local variables
30+
- name: librariesContainsChange
31+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
32+
- name: monoContainsChange
33+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
34+
jobParameters:
35+
testGroup: innerloop
36+
nameSuffix: AllSubsets_Mono
37+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true
38+
timeoutInMinutes: 180
39+
# extra steps, run tests
40+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
41+
extraStepsParameters:
42+
creator: dotnet-bot
43+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
44+
45+
#
46+
# MacCatalyst interp - requires AOT Compilation and Interp flags
47+
# Build the whole product using Mono and run libraries tests
48+
# The test app is built with the App Sandbox entitlement
49+
#
50+
- template: /eng/pipelines/common/platform-matrix.yml
51+
parameters:
52+
jobTemplate: /eng/pipelines/common/global-build-job.yml
53+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
54+
buildConfig: Release
55+
runtimeFlavor: mono
56+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
57+
isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }}
58+
platforms:
59+
- MacCatalyst_x64
60+
- MacCatalyst_arm64
61+
variables:
62+
# map dependencies variables to local variables
63+
- name: librariesContainsChange
64+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
65+
- name: monoContainsChange
66+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
67+
jobParameters:
68+
testGroup: innerloop
69+
nameSuffix: AllSubsets_Mono_AppSandbox
70+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true /p:EnableAppSandbox=true
71+
timeoutInMinutes: 180
72+
# extra steps, run tests
73+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
74+
extraStepsParameters:
75+
creator: dotnet-bot
76+
interpreter: true
77+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)

0 commit comments

Comments
 (0)