Skip to content

Commit 50648ac

Browse files
authored
add a 'Run Flaky Tests' step that does not fail the build (#1239)
2 parents 31e7944 + d7be876 commit 50648ac

File tree

8 files changed

+80
-36
lines changed

8 files changed

+80
-36
lines changed

Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
<OutDirName Condition="'$(IsReferenceAssemblyProject)' == 'true'">$(MSBuildProjectName)-ref</OutDirName>
1818
</PropertyGroup>
1919

20+
<Import Project="eng\FlakyTests.BeforeArcade.props" />
2021
<Import Project="eng\Workarounds.BeforeArcade.props" />
2122
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
2223
<Import Project="eng\Workarounds.AfterArcade.props" />
24+
<Import Project="eng\FlakyTests.AfterArcade.props" />
2325

2426
<PropertyGroup Condition="'$(CopyrightMicrosoft)' != ''">
2527
<Copyright>$(CopyrightMicrosoft)</Copyright>

Directory.Build.targets

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,5 @@
4747
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
4848
<Import Project="eng\Workarounds.AfterArcade.targets" />
4949

50-
<!-- Only needed on AzDO: Flaky Test handling -->
51-
<Import Project="eng\FlakyTests.targets" Condition="'$(BUILD_BUILDNUMBER)' != ''" />
52-
5350
<Import Project="eng\targets\Npm.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
5451
</Project>

azure-pipelines.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ jobs:
9191
-prepareMachine
9292
$(_BuildArgs)
9393
displayName: Build and Publish
94+
- script: eng\scripts\ci-flaky-tests.cmd
95+
displayName: Run Flaky Tests
96+
continueOnError: true
9497
- powershell: eng\common\msbuild.ps1 eng/repo.targets /t:TagCiBuilds '/p:IsFinalBuild=$(IsFinalBuild)' '/p:CI=true'
9598
displayName: Set CI Tags
9699
condition: eq(variables['_BuildConfig'], 'Release')
@@ -101,6 +104,14 @@ jobs:
101104
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
102105
displayName: Detect components
103106
condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false), eq(variables['_BuildConfig'], 'Release'))
107+
- task: PublishTestResults@2
108+
displayName: Publish Flaky Test Results
109+
inputs:
110+
testResultsFormat: 'xUnit'
111+
testResultsFiles: '*.xml'
112+
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Flaky'
113+
continueOnError: true
114+
condition: always()
104115
- task: PublishBuildArtifacts@1
105116
displayName: Upload package artifacts
106117
condition: and(eq(variables['system.pullrequest.isfork'], false), eq(variables['_BuildConfig'], 'Release'))
@@ -133,9 +144,20 @@ jobs:
133144
--configuration $(_BuildConfig)
134145
--prepareMachine
135146
displayName: Build
147+
- script: eng/scripts/ci-flaky-tests.sh
148+
displayName: Run Flaky Tests
149+
continueOnError: true
136150
- script: eng/scripts/KillProcesses.sh
137151
displayName: Kill processes
138152
condition: always()
153+
- task: PublishTestResults@2
154+
displayName: Publish Flaky Test Results
155+
inputs:
156+
testResultsFormat: 'xUnit'
157+
testResultsFiles: '*.xml'
158+
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Flaky'
159+
continueOnError: true
160+
condition: always()
139161

140162
- job: OSX_10_13
141163
displayName: 'OSX'
@@ -160,6 +182,18 @@ jobs:
160182
--configuration $(_BuildConfig)
161183
--prepareMachine
162184
displayName: Build
185+
- script: eng/scripts/ci-flaky-tests.sh
186+
displayName: Run Flaky Tests
187+
continueOnError: true
163188
- script: eng/scripts/KillProcesses.sh
164189
displayName: Kill processes
165190
condition: always()
191+
- task: PublishTestResults@2
192+
displayName: Publish Flaky Test Results
193+
inputs:
194+
testResultsFormat: 'xUnit'
195+
testResultsFiles: '*.xml'
196+
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Flaky'
197+
continueOnError: true
198+
condition: always()
199+

eng/FlakyTests.AfterArcade.props

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<Project>
2+
<!-- Override where xUnit logs and results go if we're doing the flaky run -->
3+
<PropertyGroup Condition="'$(RunFlakyTests)' == 'true'">
4+
<ArtifactsLogDir>$(ArtifactsDir)log\$(Configuration)\Flaky\</ArtifactsLogDir>
5+
<ArtifactsTestResultsDir>$(ArtifactsDir)TestResults\$(Configuration)\Flaky\</ArtifactsTestResultsDir>
6+
</PropertyGroup>
7+
</Project>

eng/FlakyTests.BeforeArcade.props

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project>
2+
<!-- Local Dev Flakiness -->
3+
<PropertyGroup>
4+
<_FlakyRunAdditionalArgs>-trait "Flaky:All=true"</_FlakyRunAdditionalArgs>
5+
<_NonFlakyRunAdditionalArgs>-notrait "Flaky:All=true"</_NonFlakyRunAdditionalArgs>
6+
</PropertyGroup>
7+
8+
<!-- Azure Pipelines Flakiness -->
9+
<PropertyGroup Condition="'$(AGENT_OS)' != ''">
10+
<_FlakyRunAdditionalArgs>$(_FlakyRunAdditionalArgs) -trait "Flaky:AzP:All=true" -trait "Flaky:AzP:OS:$(AGENT_OS)=true"</_FlakyRunAdditionalArgs>
11+
<_NonFlakyRunAdditionalArgs>$(_NonFlakyRunAdditionalArgs) -notrait "Flaky:AzP:All=true" -notrait "Flaky:AzP:OS:$(AGENT_OS)=true"</_NonFlakyRunAdditionalArgs>
12+
</PropertyGroup>
13+
14+
<PropertyGroup>
15+
<TestRunnerAdditionalArguments Condition="'$(RunFlakyTests)' == ''">$(_NonFlakyRunAdditionalArgs)</TestRunnerAdditionalArguments>
16+
<TestRunnerAdditionalArguments Condition="'$(RunFlakyTests)' == 'true'">$(_FlakyRunAdditionalArgs)</TestRunnerAdditionalArguments>
17+
</PropertyGroup>
18+
</Project>

eng/FlakyTests.targets

Lines changed: 0 additions & 33 deletions
This file was deleted.

eng/scripts/ci-flaky-tests.cmd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@echo off
2+
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0..\common\Build.ps1""" -test -ci /p:RunFlakyTests=true %*"
3+
exit /b %ErrorLevel%

eng/scripts/ci-flaky-tests.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
source="${BASH_SOURCE[0]}"
4+
5+
# resolve $SOURCE until the file is no longer a symlink
6+
while [[ -h $source ]]; do
7+
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8+
source="$(readlink "$source")"
9+
10+
# if $source was a relative symlink, we need to resolve it relative to the path where
11+
# the symlink file was located
12+
[[ $source != /* ]] && source="$scriptroot/$source"
13+
done
14+
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
15+
16+
. "$scriptroot/../common/build.sh" --ci --test -p:RunFlakyTests=true $@

0 commit comments

Comments
 (0)