diff --git a/.github/workflows/specialized-test-runner.yml b/.github/workflows/specialized-test-runner.yml
index 719cf4da480..d390a68d534 100644
--- a/.github/workflows/specialized-test-runner.yml
+++ b/.github/workflows/specialized-test-runner.yml
@@ -38,6 +38,7 @@ jobs:
outputs:
runsheet: ${{ steps.generate_tests_matrix.outputs.runsheet }}
requiresNugets: ${{ steps.check_nugets.outputs.requiresNugets }}
+ requiresCliArchive: ${{ steps.check_cli_archive.outputs.requiresCliArchive }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -83,6 +84,16 @@ jobs:
echo "requiresNugets=false" >> $GITHUB_OUTPUT
fi
+ - name: Check if any test requires CLI archives
+ id: check_cli_archive
+ run: |
+ RUNSHEET='${{ steps.generate_tests_matrix.outputs.runsheet }}'
+ if echo "$RUNSHEET" | jq -e 'any(.[]; .requiresCliArchive == true)' > /dev/null 2>&1; then
+ echo "requiresCliArchive=true" >> $GITHUB_OUTPUT
+ else
+ echo "requiresCliArchive=false" >> $GITHUB_OUTPUT
+ fi
+
- name: Upload logs, and test results
if: ${{ always() }}
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
@@ -104,7 +115,7 @@ jobs:
build_cli_archives:
name: Build native CLI archives
needs: [generate_tests_matrix]
- if: ${{ github.repository_owner == 'dotnet' && needs.generate_tests_matrix.outputs.requiresNugets == 'true' }}
+ if: ${{ github.repository_owner == 'dotnet' && (needs.generate_tests_matrix.outputs.requiresNugets == 'true' || needs.generate_tests_matrix.outputs.requiresCliArchive == 'true') }}
uses: ./.github/workflows/build-cli-native-archives.yml
run_tests:
@@ -124,6 +135,7 @@ jobs:
enablePlaywrightInstall: ${{ inputs.enablePlaywrightInstall }}
extraTestArgs: ${{ inputs.extraTestArgs }}
ignoreTestFailures: ${{ inputs.ignoreTestFailures }}
+ requiresCliArchive: ${{ matrix.tests.requiresCliArchive == true }}
results:
if: ${{ always() && github.repository_owner == 'dotnet' }}
diff --git a/eng/SpecializedTestRunsheetBuilderBase.targets b/eng/SpecializedTestRunsheetBuilderBase.targets
index 866dca2e594..3d27af668e8 100644
--- a/eng/SpecializedTestRunsheetBuilderBase.targets
+++ b/eng/SpecializedTestRunsheetBuilderBase.targets
@@ -34,12 +34,12 @@
-->
<_IsUnsupportedProject>false
- <_IsUnsupportedProject Condition="$(MSBuildProjectName.Contains('Templates')) or $(MSBuildProjectName.Contains('Playground')) or $(MSBuildProjectName.Contains('EndToEnd'))">true
+ <_IsUnsupportedProject Condition="$(MSBuildProjectName.Contains('Playground'))">true
$([System.String]::Copy('$(MSBuildProjectFullPath)').Replace('$(RepoRoot)', '%24(pwd)/'))
<_RelativeTestBinLog>$([System.String]::Copy('$(_TestBinLog)').Replace('$(RepoRoot)', '%24(pwd)/'))
-
<_RequiresNugets>false
- <_RequiresNugets Condition="$(MSBuildProjectName.Contains('Templates')) or $(MSBuildProjectName.Contains('Playground')) or $(MSBuildProjectName.Contains('EndToEnd'))">true
+ <_RequiresNugets Condition="'$(RequiresNugets)' == 'true'">true
-
<_RequiresTestSdk>false
- <_RequiresTestSdk Condition="$(MSBuildProjectName.Contains('Templates'))">true
+ <_RequiresTestSdk Condition="'$(RequiresTestSdk)' == 'true'">true
+
+ <_RequiresCliArchive>false
+ <_RequiresCliArchive Condition="'$(RequiresCliArchive)' == 'true'">true
+
+ <_GithubActionsRunnerWindows>windows-latest
+ <_GithubActionsRunnerWindows Condition="'$(GithubActionsRunnerWindows)' != ''">$(GithubActionsRunnerWindows)
+
+ <_GithubActionsRunnerLinux>ubuntu-latest
+ <_GithubActionsRunnerLinux Condition="'$(GithubActionsRunnerLinux)' != ''">$(GithubActionsRunnerLinux)
+
+ <_GithubActionsRunnerMacOS>macos-latest
+ <_GithubActionsRunnerMacOS Condition="'$(GithubActionsRunnerMacOS)' != ''">$(GithubActionsRunnerMacOS)
<_TestRunnerWindows>./eng/build.ps1
<_TestRunnerLinux>./eng/build.sh
@@ -149,9 +153,9 @@
<_TestCommand>$([System.String]::Copy($(_TestCommand)).Replace("\", "/").Replace('"', '\"'))
- <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) }
- <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) }
- <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) }
+ <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerWindows)", "command": "./eng/build.ps1 $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) }
+ <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerLinux)", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) }
+ <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerMacOS)", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) }
true
+
+ true
+
true
true
diff --git a/eng/Testing.targets b/eng/Testing.targets
index a24b8dd0bd9..9ed87561724 100644
--- a/eng/Testing.targets
+++ b/eng/Testing.targets
@@ -2,7 +2,6 @@
-
- true
-
true
diff --git a/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj b/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj
index 7567e9a0d4b..3d3e9ed343b 100644
--- a/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj
+++ b/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj
@@ -8,6 +8,7 @@
true
true
Exe
+ true
true
true
diff --git a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj
index 36a4fe57b93..f99e6f40de9 100644
--- a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj
+++ b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj
@@ -2,6 +2,8 @@
$(DefaultTargetFramework)
+ true
+ 8-core-ubuntu-latest
false
false
diff --git a/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs b/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs
new file mode 100644
index 00000000000..0e79cf6457c
--- /dev/null
+++ b/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs
@@ -0,0 +1,6 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Aspire.TestUtilities;
+
+[assembly: OuterloopTest("EndToEnd tests require Docker and are slow")]
diff --git a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs
index 0bd3743eb81..a416a459faf 100644
--- a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs
+++ b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs
@@ -4,6 +4,7 @@
using Xunit;
using Aspire.TestProject;
using Aspire.Templates.Tests;
+using Aspire.TestUtilities;
namespace Aspire.EndToEnd.Tests;
@@ -19,6 +20,7 @@ public IntegrationServicesTests(ITestOutputHelper testOutput, IntegrationService
}
[Theory]
+ [OuterloopTest("EndToEnd tests require Docker and are slow")]
[Trait("scenario", "basicservices")]
[InlineData(TestResourceNames.postgres)]
[InlineData(TestResourceNames.efnpgsql)]
@@ -42,6 +44,7 @@ public Task VerifyComponentWorks(TestResourceNames resourceName)
});
[Fact]
+ [OuterloopTest("EndToEnd tests require Docker and are slow")]
[Trait("scenario", "basicservices")]
public Task VerifyHealthyOnIntegrationServiceA()
=> RunTestAsync(async (cancellationToken) =>