eng/testing/scenarios/BuildWasmAppsJobsList.txt
eng/testing/tests.wasm.targets
src/libraries/sendtohelix-wasm.targets
+ src/mono/mono/**/*wasm*
src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/*
src/mono/nuget/Microsoft.NET.Runtime.wasm.Sample.Mono/*
+ src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/*
+ src/mono/nuget/Microsoft.NET.Workload*
src/mono/sample/wasm/*
src/mono/wasi/*
src/mono/wasm/*
_wasm_pipelines: [
eng/pipelines/**/*wasm*
]
+ _wasm_src_native: [
+ src/native/minipal/*
+ src/native/libs/CMakeLists.txt
+ src/native/libs/configure.cmake
+ src/native/libs/build*
+ src/native/libs/Common/*
+ src/native/libs/System.Globalization.Native/*
+ src/native/libs/System.IO.Compression.Native/*
+ src/native/libs/System.Native/*
+ ]
+
# src/workloads is only used in runtime-official builds
# where evaluate-paths is not used
_always_exclude: [
eng/pipelines/common/evaluate-default-paths.yml
+ '*.md'
+ LICENSE.TXT
+ PATENTS.TXT
+ THIRD-PARTY-NOTICES.TXT
src/workloads/*
]
- src/native/libs/System.IO.Compression.Native/*
exclude:
- eng/Version.Details.xml
- - '*.md'
- - LICENSE.TXT
- - PATENTS.TXT
- - THIRD-PARTY-NOTICES.TXT
- docs/*
- src/installer/*
- src/mono/*
- ${{ parameters._const_paths._always_exclude }}
- eng/Version.Details.xml
- - '*.md'
- - LICENSE.TXT
- - PATENTS.TXT
- - THIRD-PARTY-NOTICES.TXT
- docs/*
- src/installer/*
- src/coreclr/*
- subset: libraries
exclude:
- eng/Version.Details.xml
- - '*.md'
- - LICENSE.TXT
- - PATENTS.TXT
- - THIRD-PARTY-NOTICES.TXT
- docs/*
- src/installer/*
- src/mono/*
include:
- src/tools/illink/*
- - subset: non_runtimetests
- exclude:
- - src/tests/*
- - ${{ parameters._const_paths._wasm_pipelines }}
- - ${{ parameters._const_paths._always_exclude }}
-
- subset: installer
include:
- docs/manpages/*
exclude:
- eng/Version.Details.xml
- - '*.md'
- - LICENSE.TXT
- - PATENTS.TXT
- - THIRD-PARTY-NOTICES.TXT
- docs/*
- src/coreclr/*
- src/mono/*
- eng/pipelines/coreclr/*
- eng/pipelines/mono/*
- eng/pipelines/libraries/*
+ - ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
#
# ** WASM **
- # Changes in *only* Wasm.Build.Tests, or debugger, are very self-contained,
- # so we try to avoid triggering only those relevants tests
+ # Changes in *only* Wasm.Build.Tests, debugger, or runtime-tests are very
+ # self-contained, so we try to trigger only those relevants tests
#
- subset: wasmbuildtests
+ combined: true
include:
- eng/Version.Details.xml
- eng/Versions.props
- src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/*
- src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/*
- src/mono/nuget/Microsoft.NET.Runtime.wasm.Sample.Mono/*
- - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Current.Manifest/*
- - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/*
- - src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/*
+ - src/mono/nuget/Microsoft.NET.Workload*
- src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/*
- src/mono/wasm/build/*
- src/mono/wasm/emscripten-version.txt
- src/mono/wasm/runtime/*
- src/mono/wasm/templates/*
- src/mono/wasm/Wasm.Build.Tests/*
+ - ${{ parameters._const_paths._wasm_src_native }}
- src/tasks/*
- ${{ parameters._const_paths._wasm_pipelines }}
+ exclude:
+ - ${{ parameters._const_paths._always_exclude }}
- subset: wasmdebuggertests
+ combined: true
include:
- eng/testing/ProvisioningVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/mono/mono/*
- src/mono/wasm/debugger/*
- src/mono/wasm/runtime/*
+ - ${{ parameters._const_paths._wasm_src_native }}
- ${{ parameters._const_paths._wasm_pipelines }}
-
- - subset: any_other_than_wasm_wbt_dbg
exclude:
- - src/mono/wasm/Wasm.Build.Tests/*
- - src/mono/wasm/debugger/*
- - ${{ parameters._const_paths._wasm_pipelines }}
+ - src/mono/nuget/*
- ${{ parameters._const_paths._always_exclude }}
- - subset: wasm_wbt_or_dbg
+ # wasm/runtimetests need to be run
+ - subset: wasm_runtimetests
+ combined: true
include:
- - src/mono/wasm/Wasm.Build.Tests/*
+ - src/tests/*
+ - src/mono/*
+ - ${{ parameters._const_paths._wasm_src_native }}
+ exclude:
+ - src/mono/nuget/*
+ - src/mono/sample/*
+ - src/mono/tests/*
+ - src/mono/tools/*
+ - src/mono/wasi/*
- src/mono/wasm/debugger/*
+ - src/mono/wasm/Wasm.Build.Tests/*
+ - ${{ parameters._const_paths._wasm_pipelines }}
+ - ${{ parameters._const_paths._always_exclude }}
- - subset: wasm
+ # Wasm except Wasm.build.Tests, and debugger
+ - subset: wasm_specific_except_wbt_dbg
+ combined: true
include:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
# other paths that should also trigger wasm jobs
- src/mono/*
-
- # libraries with some wasm specific code
- - subset: wasm_libraries
- include:
- - src/libraries/Common/*
- - src/libraries/System.Console/*
- - src/libraries/System.Diagnostics.FileVersionInfo/tests/*
- - src/libraries/System.IO.Compression/*
- - src/libraries/System.IO.MemoryMappedFiles/*
- - src/libraries/System.Net.Http/*
- - src/libraries/System.Net.Mail/*
- - src/libraries/System.Net.Primitives/*
- - src/libraries/System.Net.WebClient/*
- - src/libraries/System.Net.WebProxy/*
- - src/libraries/System.Net.WebSockets.Client/*
- - src/libraries/System.Net.WebSockets/*
- - src/libraries/System.Runtime.InteropServices.JavaScript/*
- - src/libraries/System.Runtime.InteropServices/*
- - src/libraries/System.Runtime.Serialization.Formatters/*
- - src/libraries/System.Security.Cryptography/*
- - src/libraries/System.Text.Encodings.Web/*
-
- # anything other than wasm-specific paths
- - subset: non_wasm
exclude:
- - ${{ parameters._const_paths._wasm_specific_only }}
- - ${{ parameters._const_paths._wasm_pipelines }}
+ - eng/testing/scenarios/BuildWasmAppsJobsList.txt
+ - eng/testing/workloads-testing.targets
+ - src/mono/mono/component/mini-wasm-debugger.c
+ - src/mono/wasm/debugger/*
+ - src/mono/wasm/Wasm.Build.Tests/*
+ - src/mono/nuget/Microsoft.NET.Runtime*
+ - src/mono/nuget/Microsoft.NET.Workload*
+ - src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/*
- ${{ parameters._const_paths._always_exclude }}
# anything other than mono, or wasm specific paths
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
-
- eng/testing/tests.mobile.targets
- src/mono/*
- src/tasks/AndroidAppBuilder/*
parameters:
subsetName: ${{ path.subset }}
arguments:
+ - ${{ if eq(path.combined, true) }}:
+ - --combined
# The commit that we're building is always a merge commit that is merging into the target branch.
# So the first parent of the commit is on the target branch and the second parent is on the source branch.
- --difftarget HEAD^1
or(
eq(variables['wasmDarcDependenciesChanged'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- and(
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_non_runtimetests.containsChange'], true)),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_libraries.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true))
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true))
]
jobParameters:
isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }}
nameSuffix: WasmBuildTests
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:TestWasmBuildTests=true /p:TestAssemblies=false /p:BrowserHost=$(_hostedOs)
timeoutInMinutes: 180
- # if !alwaysRun, then:
- # if this is runtime-wasm (isWasmOnlyBuild):
- # - then run only if it would not have run on default pipelines (based
- # on path changes)
- # - else run based on path changes
condition: >-
or(
eq(variables['alwaysRunVar'], true),
value: $[
or(
eq(variables['wasmDarcDependenciesChanged'], true),
+ eq(dependencies.evaluate_paths_outputs['DarcDependenciesChanged.Microsoft_DotNet_HotReload_Utils_Generator_BuildTool'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_wasmdebuggertests.containsChange'], true))
]
jobParameters:
# map dependencies variables to local variables
- name: alwaysRunVar
value: ${{ parameters.alwaysRun }}
+ # - wasm darc deps changed
+ # - any libs that can have wasm specific changes
+ # - any other wasm specific changes that are not wbt, or dbg
- name: shouldRunOnDefaultPipelines
value: $[
or(
eq(variables['wasmDarcDependenciesChanged'], true),
- and(
- ne(variables['onlyWBTOrDbgTestHaveChanges'], true),
- or(
- eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_libraries.containsChange'], true),
- and(
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_non_runtimetests.containsChange'], true)))))
- ]
- - name: onlyWBTOrDbgTestHaveChanges
- value:
- and(
- eq(dependencies.evaluate_paths.outputs.SetPathVars_wasm_wbt_or_dbg.containsChange, true),
- ne(dependencies.evaluate_paths.outputs.SetPathVars_any_other_than_wasm_wbt_dbg.containsChange, true))
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true))
+ ]
- name: _wasmRunSmokeTestsOnlyArg
value: /p:RunSmokeTestsOnly=${{ eq(parameters.shouldRunSmokeOnly, true) }}
- name: chromeInstallArg
value: $[
or(
eq(variables['wasmDarcDependenciesChanged'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm.containsChange'], true))
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_runtimetests.containsChange'], true))
]
jobParameters:
testGroup: innerloop
runtimeVariant: monointerpreter
buildArgs: -s mono+libs -c $(_BuildConfig)
timeoutInMinutes: 180
- # FIXME: will get triggered by only wbt/dbg changes
- # if !alwaysRun, then:
- # if this is runtime-wasm (isWasmOnlyBuild):
- # - then run only if it would not have run on default pipelines (based
- # on path changes)
- # - else run based on path changes
condition: >-
or(
eq(variables['alwaysRunVar'], true),
2. include paths are specified
Will only include paths specified in the list.
3. exclude + include:
+ a. `--combined` is passed:
+ Will use the include paths, then use exclude paths on that set, and if that has any changes
+ then a variable will be set to true.
+ b. `--combined` is not passed (default):
1st we evaluate changes for all paths except ones in excluded list. If we can not find
any applicable changes like that, then we evaluate changes for included paths
if any of these two finds changes, then a variable will be set to true.
echo " --difftarget <value> SHA or branch to diff against. (i.e: HEAD^1, origin/main, 0f4hd36, etc.)"
echo " --excludepaths <value> Escaped list of paths to exclude from diff separated by '+'. (i.e: 'src/libraries/*+'src/installer/*')"
echo " --includepaths <value> Escaped list of paths to include on diff separated by '+'. (i.e: 'src/libraries/System.Private.CoreLib/*')"
+ echo " --combined Uses both exclude, and include paths"
echo " --subset Subset name for which we're evaluating in order to include it in logs"
echo " --azurevariable Name of azure devops variable to create if change meets filter criteria"
echo ""
subset_name=''
azure_variable=''
diff_target=''
+combined=false
while [[ $# > 0 ]]; do
opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
include_paths+=(${tmp[@]})
shift
;;
+ -combined)
+ combined=true
+ ;;
-subset)
subset_name=$2
shift
if [[ ${#exclude_paths[@]} -gt 0 ]]; then
echo ""
- echo "******* Probing $_subset exclude paths *******";
+ echo "******* Collecting $_subset exclude paths *******";
for _path in "${exclude_paths[@]}"; do
echo "$_path"
if [[ -z "$exclude_path_string" ]]; then
exclude_path_string="$exclude_path_string :!$_path"
fi
done
-
- if ! probePathsWithExitCode $exclude_path_string; then
- found_applying_changes=true
- printMatchedPaths $exclude_path_string
- fi
fi
- if [[ $found_applying_changes != true && ${#include_paths[@]} -gt 0 ]]; then
+ if [[ ${#include_paths[@]} -gt 0 ]]; then
echo ""
- echo "******* Probing $_subset include paths *******";
+ echo "******* Collecting $_subset include paths *******";
for _path in "${include_paths[@]}"; do
echo "$_path"
if [[ -z "$include_path_string" ]]; then
include_path_string="$include_path_string :$_path"
fi
done
+ fi
- if ! probePathsWithExitCode $include_path_string; then
+ if [[ "$combined" == "true" ]]; then
+ # Try both include, and exclude
+ # finds all the changes in include files, then excludes the exclude files
+ local combined_path_string="$include_path_string $exclude_path_string"
+ echo "******* Probing $_subset combined paths *******";
+ if ! probePathsWithExitCode $combined_path_string; then
found_applying_changes=true
- printMatchedPaths $include_path_string
+ printMatchedPaths $combined_path_string
+ fi
+ else
+ # First try exclude
+ if [[ ${#exclude_paths[@]} -gt 0 ]]; then
+ echo "******* Probing $_subset exclude paths *******";
+ if ! probePathsWithExitCode $exclude_path_string; then
+ found_applying_changes=true
+ printMatchedPaths $exclude_path_string
+ fi
+ fi
+
+ # if no changes found, then try include
+ if [[ $found_applying_changes != true && ${#include_paths[@]} -gt 0 ]]; then
+ echo "******* Probing $_subset include paths *******";
+ if ! probePathsWithExitCode $include_path_string; then
+ found_applying_changes=true
+ printMatchedPaths $include_path_string
+ fi
fi
fi
extraStepsParameters:
name: SourceBuildPackages
timeoutInMinutes: 95
+ condition:
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true)
condition:
or(
eq(variables['isRollingBuild'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_libraries.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true),
eq(dependencies.evaluate_paths.outputs['DarcDependenciesChanged.Microsoft_NET_ILLink_Tasks'], true))
extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml
extraStepsParameters: