blob: 6a4622ee59dbc6a59e8cf409c5fe7b7eca43d9f7 (
plain)
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
|
<Project Sdk="Microsoft.DotNet.Helix.Sdk" DefaultTargets="SubmitTestsToHelix">
<!-- This project uses the helix SDK, documented at
https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk,
to send test jobs to helix. -->
<Import Project="..\dir.props" />
<PropertyGroup>
<HelixArchitecture>$(BuildArch)</HelixArchitecture>
<HelixConfiguration>$(BuildType)</HelixConfiguration>
<IsExternal>$(_IsExternal)</IsExternal>
<IsExternal Condition=" '$(IsExternal)' == '' ">true</IsExternal>
<Creator Condition=" '$(IsExternal)' == 'true' ">$(_Creator)</Creator>
<HelixAccessToken Condition=" '$(IsExternal)' != 'true' ">$(_HelixAccessToken)</HelixAccessToken>
<HelixTargetQueues>$(_HelixTargetQueues)</HelixTargetQueues>
<EnableAzurePipelinesReporter>$(_PublishTestResults)</EnableAzurePipelinesReporter>
<EnableAzurePipelinesReporter Condition=" '$(EnableAzurePipelinesReporter)' == '' ">false</EnableAzurePipelinesReporter>
<HelixBuild>$(_HelixBuild)</HelixBuild>
<HelixSource>$(_HelixSource)</HelixSource>
<HelixType>$(_HelixType)</HelixType>
<TimeoutInMinutes>$(_TimeoutInMinutes)</TimeoutInMinutes>
<TimeoutInMinutes Condition=" '$(TimeoutInMinutes)' == '' ">5</TimeoutInMinutes>
<WaitForWorkItemCompletion>true</WaitForWorkItemCompletion>
<CoreRootDirectory>$(TestWorkingDir)\Tests\Core_Root</CoreRootDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetsWindows)' == 'true' ">
<HelixPythonPath>%HELIX_PYTHONPATH%</HelixPythonPath>
<RunnerScript>%HELIX_CORRELATION_PAYLOAD%\runtest_helix.py</RunnerScript>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetsWindows)' != 'true' ">
<HelixPythonPath>$HELIX_PYTHONPATH</HelixPythonPath>
<RunnerScript>$HELIX_CORRELATION_PAYLOAD/runtest_helix.py</RunnerScript>
</PropertyGroup>
<ItemGroup>
<HelixCorrelationPayload Include="$(CoreRootDirectory)" />
<XUnitWrapperDlls Include="$(TestWorkingDir)\**\*.XUnitWrapper.dll" />
</ItemGroup>
<Target Name="CopyRunnerScriptToCoreRootDirectory" BeforeTargets="SubmitTestsToHelix">
<Copy SourceFiles="$(MSBuildThisFileDirectory)\runtest_helix.py" DestinationFolder="$(CoreRootDirectory)" />
</Target>
<Target Name="SubmitTestsToHelix">
<ItemGroup>
<Scenarios Include="$(_Scenarios.Split(','))" />
<ProjectsToBuild Include="$(MSBuildProjectFile)">
<Properties>Scenario=%(_Scenarios.Identity)</Properties>
</ProjectsToBuild>
</ItemGroup>
<PropertyGroup>
<BuildInParallel>false</BuildInParallel>
<BuildInParallel Condition=" '@(ProjectsToBuild->Count())' > '1' ">true</BuildInParallel>
</PropertyGroup>
<MSBuild Projects="@(ProjectsToBuild)" Targets="Test" BuildInParallel="$(BuildInParallel)" StopOnFirstFailure="false" UnloadProjectsOnCompletion="true" />
</Target>
<Target Name="BuildHelixWorkItem" BeforeTargets="Test">
<PropertyGroup>
<!-- The "normal" scenario is just a way to include the default
(empty) scenario when specifying multiple scenarios at
once. From here, on, treat it as the empty scenario so that
job names will not have a scenario prefix and the runtest
script doesn't have to define a "normal" scenario. -->
<Scenario Condition=" '$(Scenario)' == 'normal' "></Scenario>
<TestRunNamePrefix Condition=" '$(Scenario)' == '' ">$(BuildOS) $(BuildArch) $(BuildType) @ </TestRunNamePrefix>
<TestRunNamePrefix Condition=" '$(Scenario)' != '' ">$(BuildOS) $(BuildArch) $(BuildType) $(Scenario) @ </TestRunNamePrefix>
</PropertyGroup>
<ItemGroup>
<HelixWorkItem Include="@(XUnitWrapperDlls->'%(FileName)'->Replace('.XUnitWrapper', ''))">
<PayloadDirectory>%(RootDir)%(Directory)</PayloadDirectory>
<Command Condition=" '$(Scenario)' == '' ">$(HelixPythonPath) $(RunnerScript) -wrapper %(FileName)%(Extension)</Command>
<Command Condition=" '$(Scenario)' != '' ">$(HelixPythonPath) $(RunnerScript) -wrapper %(FileName)%(Extension) -scenario $(Scenario)</Command>
<Timeout>$([System.TimeSpan]::FromMinutes($(TimeoutInMinutes)))</Timeout>
</HelixWorkItem>
</ItemGroup>
</Target>
</Project>
|