Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ jobs:
with:
name: binlog-${{ matrix.name }}-${{ matrix.os }}
path: "**/*.binlog"
continue-on-error: true

- name: Upload test results artifact
if: always()
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,10 @@ target
node_modules
**/.modules/
**/*.AppHost.TypeScript/nuget.config
tsconfig.apphost.json
.ngrok
bun.lock
pnpm-lock.yaml
yarn.lock
solr-data
*.lscache
1 change: 0 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<AspirePreviewSuffix>-preview.1.26170.3</AspirePreviewSuffix>
<AspNetCoreVersion>9.0.0</AspNetCoreVersion>
<DotNetExtensionsVersion>10.0.5</DotNetExtensionsVersion>
<OpenTelemetryVersion>1.12.0</OpenTelemetryVersion>
<TestContainersVersion>4.8.1</TestContainersVersion>
<MEAIVersion>10.0.0</MEAIVersion>
<ServiceDiscoveryVersion>10.0.0</ServiceDiscoveryVersion>
Expand Down
16 changes: 9 additions & 7 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="$(DotNetExtensionsVersion)" />
<!-- OpenTelemetry packages -->
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="$(OpenTelemetryVersion)-beta.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="$(OpenTelemetryVersion)" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.1-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.15.3" />
</ItemGroup>
<ItemGroup Label="Build Dependencies">
<PackageVersion Include="Microsoft.DotNet.GenAPI.Task" Version="9.0.103-servicing.25071.13" />
Expand Down Expand Up @@ -129,5 +129,7 @@
</ItemGroup>
<ItemGroup Label="Overrides">
<PackageVersion Include="Microsoft.Bcl.Memory" Version="9.0.14" />
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.3" />
<PackageVersion Include="System.Security.Cryptography.Xml" Version="8.0.3" />
</ItemGroup>
</Project>
116 changes: 110 additions & 6 deletions eng/testing/validate-typescript-apphost.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,37 @@ param(
[ValidateSet("healthy", "up", "down")]
[string]$WaitStatus = "healthy",

[int]$WaitTimeoutSeconds = 180
[int]$WaitTimeoutSeconds = 180,

[string[]]$Secrets = @()
)

$ErrorActionPreference = "Stop"

function Resolve-ExternalCommandPath {
param(
[Parameter(Mandatory = $true)]
[string]$FilePath
)

if ([System.IO.Path]::IsPathRooted($FilePath) -or
$FilePath.Contains([System.IO.Path]::DirectorySeparatorChar) -or
$FilePath.Contains([System.IO.Path]::AltDirectorySeparatorChar)) {
return $FilePath
}

$commandCandidates = @(Get-Command $FilePath -All -ErrorAction Stop)
$preferredCandidate = $commandCandidates |
Where-Object { $_.CommandType -eq [System.Management.Automation.CommandTypes]::Application } |
Select-Object -First 1

if ($null -ne $preferredCandidate) {
return $preferredCandidate.Source
}

return $commandCandidates[0].Source
}

function Invoke-ExternalCommand {
param(
[Parameter(Mandatory = $true)]
Expand All @@ -33,7 +59,9 @@ function Invoke-ExternalCommand {
[string[]]$Arguments
)

& $FilePath @Arguments
$resolvedFilePath = Resolve-ExternalCommandPath $FilePath

& $resolvedFilePath @Arguments
if ($LASTEXITCODE -ne 0) {
$joinedArguments = [string]::Join(" ", $Arguments)
throw "Command failed with exit code ${LASTEXITCODE}: $FilePath $joinedArguments"
Expand Down Expand Up @@ -86,6 +114,25 @@ if ([string]::IsNullOrWhiteSpace($PackageVersion)) {
$PackageVersion = "$versionPrefix-polyglot.local"
}

# Discover local CommunityToolkit project references that also need packing
$localDependencies = @()
$projRefJson = (& dotnet msbuild $resolvedPackageProjectPath -nologo -v:q -getItem:ProjectReference) | Out-String
$projRefData = $projRefJson | ConvertFrom-Json
$projRefs = @($projRefData.Items.ProjectReference)
foreach ($ref in $projRefs) {
if ($ref.Filename -like "CommunityToolkit.*") {
$localDependencies += @{
Name = $ref.Filename
FullPath = $ref.FullPath
}
}
}

if ($localDependencies.Count -gt 0) {
$depNames = ($localDependencies | ForEach-Object { $_.Name }) -join ", "
Write-Host "Discovered local dependencies to pack: $depNames"
}

if ($WaitForResources.Count -eq 1 -and -not [string]::IsNullOrWhiteSpace($WaitForResources[0])) {
$splitOptions = [System.StringSplitOptions]::RemoveEmptyEntries -bor [System.StringSplitOptions]::TrimEntries
$WaitForResources = $WaitForResources[0].Split(",", $splitOptions)
Expand All @@ -102,6 +149,27 @@ foreach ($commandName in $RequiredCommands) {
}
}

if ($Secrets.Count -eq 1 -and -not [string]::IsNullOrWhiteSpace($Secrets[0])) {
$splitOptions = [System.StringSplitOptions]::RemoveEmptyEntries -bor [System.StringSplitOptions]::TrimEntries
$Secrets = $Secrets[0].Split(",", $splitOptions)
}

$parsedSecrets = [System.Collections.Generic.List[string[]]]::new()
foreach ($secret in $Secrets) {
if ([string]::IsNullOrWhiteSpace($secret)) {
continue
}

$eqIndex = $secret.IndexOf('=')
if ($eqIndex -le 0) {
throw "Invalid secret format '$secret'. Expected 'key=value'."
}

$key = $secret.Substring(0, $eqIndex)
$value = $secret.Substring($eqIndex + 1)
$parsedSecrets.Add(@($key, $value))
}

try {
$originalConfig = Get-Content -Path $configPath -Raw
New-Item -ItemType Directory -Path $localSource -Force | Out-Null
Expand All @@ -114,12 +182,25 @@ try {
"-o", $localSource
)

foreach ($dep in $localDependencies) {
Invoke-ExternalCommand "dotnet" @(
"pack",
$dep.FullPath,
"-c", "Debug",
"-p:PackageVersion=$PackageVersion",
"-o", $localSource
)
}

$config = $originalConfig | ConvertFrom-Json -AsHashtable
if ($null -eq $config["packages"]) {
$config["packages"] = [ordered]@{}
}

$config["packages"][$PackageName] = $PackageVersion
foreach ($dep in $localDependencies) {
$config["packages"][$dep.Name] = $PackageVersion
}
$config | ConvertTo-Json -Depth 10 | Set-Content -Path $configPath -NoNewline

@"
Expand All @@ -145,14 +226,24 @@ try {
Pop-Location
}

foreach ($secretPair in $parsedSecrets) {
Invoke-ExternalCommand "aspire" @(
"secret", "set",
$secretPair[0], $secretPair[1],
"--apphost", $resolvedAppHostPath,
"--non-interactive"
)
}

Push-Location $appHostDirectory
try {
Invoke-ExternalCommand "aspire" @(
"start",
"--apphost", $resolvedAppHostPath,
"--isolated",
"--format", "Json",
"--non-interactive"
"--non-interactive",
"--debug"
)
$appStarted = $true

Expand All @@ -162,14 +253,16 @@ try {
$resource,
"--status", $WaitStatus,
"--apphost", $resolvedAppHostPath,
"--timeout", $WaitTimeoutSeconds
"--timeout", $WaitTimeoutSeconds,
"--debug"
)
}

Invoke-ExternalCommand "aspire" @(
"describe",
"--apphost", $resolvedAppHostPath,
"--format", "Json"
"--format", "Json",
"--debug"
)
}
finally {
Expand Down Expand Up @@ -212,6 +305,17 @@ finally {
}
}
} -Failures $cleanupFailures

Invoke-CleanupStep -Description "remove secrets" -Action {
foreach ($secretPair in $parsedSecrets) {
Invoke-ExternalCommand "aspire" @(
"secret", "delete",
$secretPair[0],
"--apphost", $resolvedAppHostPath,
"--non-interactive"
)
}
} -Failures $cleanupFailures
}

if ($cleanupFailures.Count -gt 0) {
Expand All @@ -226,4 +330,4 @@ if ($cleanupFailures.Count -gt 0) {

if ($null -ne $primaryError) {
throw $primaryError
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.ActiveMQ": ""
"CommunityToolkit.Aspire.Hosting.ActiveMQ": "../../../src/CommunityToolkit.Aspire.Hosting.ActiveMQ/CommunityToolkit.Aspire.Hosting.ActiveMQ.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Adminer": ""
"CommunityToolkit.Aspire.Hosting.Adminer": "../../../src/CommunityToolkit.Aspire.Hosting.Adminer/CommunityToolkit.Aspire.Hosting.Adminer.csproj"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"path": "apphost.ts",
"language": "typescript/nodejs"
},
"sdk": {
"version": "13.2.2"
},
"channel": "stable",
"profiles": {
"https": {
"applicationUrl": "https://localhost:29750;http://localhost:28931",
Expand All @@ -13,6 +17,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Bun": ""
"CommunityToolkit.Aspire.Hosting.Bun": "../../../src/CommunityToolkit.Aspire.Hosting.Bun/CommunityToolkit.Aspire.Hosting.Bun.csproj"
}
}
}
Binary file modified examples/bun/api/bun.lockb
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder": ""
"CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder": "../../../src/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.DbGate": ""
"CommunityToolkit.Aspire.Hosting.DbGate": "../../../src/CommunityToolkit.Aspire.Hosting.DbGate/CommunityToolkit.Aspire.Hosting.DbGate.csproj"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Deno": ""
"CommunityToolkit.Aspire.Hosting.Deno": "../../../src/CommunityToolkit.Aspire.Hosting.Deno/CommunityToolkit.Aspire.Hosting.Deno.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions": ""
"CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Flagd": ""
"CommunityToolkit.Aspire.Hosting.Flagd": "../../../src/CommunityToolkit.Aspire.Hosting.Flagd/CommunityToolkit.Aspire.Hosting.Flagd.csproj"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Flyway": ""
"CommunityToolkit.Aspire.Hosting.Flyway": "../../../src/CommunityToolkit.Aspire.Hosting.Flyway/CommunityToolkit.Aspire.Hosting.Flyway.csproj"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.GoFeatureFlag": ""
"CommunityToolkit.Aspire.Hosting.GoFeatureFlag": "../../../src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.csproj"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Golang": ""
"CommunityToolkit.Aspire.Hosting.Golang": "../../../src/CommunityToolkit.Aspire.Hosting.Golang/CommunityToolkit.Aspire.Hosting.Golang.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.Java": ""
"CommunityToolkit.Aspire.Hosting.Java": "../../../src/CommunityToolkit.Aspire.Hosting.Java/CommunityToolkit.Aspire.Hosting.Java.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.JavaScript.Extensions": ""
"CommunityToolkit.Aspire.Hosting.JavaScript.Extensions": "../../../src/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions.csproj"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
}
},
"packages": {
"CommunityToolkit.Aspire.Hosting.k6": ""
"CommunityToolkit.Aspire.Hosting.k6": "../../../src/CommunityToolkit.Aspire.Hosting.k6/CommunityToolkit.Aspire.Hosting.k6.csproj"
}
}
Loading
Loading