Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a5cb120
Add Vercel deployment integration
davidfowl Jun 30, 2026
7791adb
Improve Vercel coverage
davidfowl Jun 30, 2026
1e69975
Use Aspire Dockerfile metadata for Vercel
davidfowl Jun 30, 2026
3435abe
Use language generated Dockerfiles for Vercel
davidfowl Jun 30, 2026
703db50
Use compute environments for Vercel deployments
davidfowl Jun 30, 2026
ad8cddd
Remove Vercel CLI path API
davidfowl Jun 30, 2026
b14672a
Harden Vercel deployment integration
davidfowl Jun 30, 2026
fc23711
Address Vercel deployment review gaps
davidfowl Jul 1, 2026
a6f011f
Fix Vercel TypeScript test on Windows
davidfowl Jul 1, 2026
a5a135a
Remove reflection from Vercel validation
davidfowl Jul 1, 2026
5bfb4ff
Avoid npm shim in Vercel TypeScript test
davidfowl Jul 1, 2026
6def3a1
Support Vercel production endpoint references
davidfowl Jul 1, 2026
4ab0be2
Reject duplicate linked Vercel projects
davidfowl Jul 1, 2026
122f195
Tighten Vercel endpoint reference mapping
davidfowl Jul 1, 2026
f8a02e9
Tighten Vercel deploy preflight
davidfowl Jul 1, 2026
fddbaa3
Add Vercel project name customization
davidfowl Jul 1, 2026
57ea1db
Harden Vercel deployment integration
davidfowl Jul 1, 2026
f75d296
Add Vercel deployment integration
davidfowl Jul 3, 2026
01b2321
Test Vercel generated Dockerfile pipeline
davidfowl Jul 3, 2026
a68eee3
Fix OpenTelemetryCollector TypeScript smoke
davidfowl Jul 3, 2026
773a5e0
Clarify Vercel deploy pipeline steps
davidfowl Jul 3, 2026
684cbb0
Reference Vercel docs in integration docs
davidfowl Jul 3, 2026
32463c3
Split Vercel deployment step
davidfowl Jul 3, 2026
15c630e
Extract Vercel deployment components
davidfowl Jul 3, 2026
7c6a783
Clean up Vercel deployment components
davidfowl Jul 3, 2026
361f4e5
Use typed Vercel JSON models
davidfowl Jul 3, 2026
a4f9f1b
Document Vercel provider formats
davidfowl Jul 3, 2026
9eb44e9
Document Vercel component purposes
davidfowl Jul 3, 2026
221aa78
Ignore Vercel wait annotations
davidfowl Jul 3, 2026
7da8ed6
Ignore Vercel replica annotations
davidfowl Jul 3, 2026
dec69dc
Ignore Vercel health checks
davidfowl Jul 3, 2026
ecbaf0b
Use typed Vercel CLI runner
davidfowl Jul 3, 2026
f3fd6b5
Redesign Vercel deployment cardinality
davidfowl Jul 4, 2026
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
2 changes: 2 additions & 0 deletions CommunityToolkit.Aspire.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@
<Project Path="src/CommunityToolkit.Aspire.Hosting.Squad/CommunityToolkit.Aspire.Hosting.Squad.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.Stripe/CommunityToolkit.Aspire.Hosting.Stripe.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.SurrealDb/CommunityToolkit.Aspire.Hosting.SurrealDb.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.Vercel/CommunityToolkit.Aspire.Hosting.Vercel.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.Zitadel/CommunityToolkit.Aspire.Hosting.Zitadel.csproj" />
<Project Path="src/CommunityToolkit.Aspire.DuckDB.NET.Data/CommunityToolkit.Aspire.DuckDB.NET.Data.csproj" />
<Project Path="src/CommunityToolkit.Aspire.KurrentDB/CommunityToolkit.Aspire.KurrentDB.csproj" />
Expand Down Expand Up @@ -354,6 +355,7 @@
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Squad.Tests/CommunityToolkit.Aspire.Hosting.Squad.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Stripe.Tests/CommunityToolkit.Aspire.Hosting.Stripe.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.SurrealDb.Tests/CommunityToolkit.Aspire.Hosting.SurrealDb.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Vercel.Tests/CommunityToolkit.Aspire.Hosting.Vercel.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Zitadel.Tests/CommunityToolkit.Aspire.Hosting.Zitadel.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.DuckDB.NET.Data.Tests/CommunityToolkit.Aspire.DuckDB.NET.Data.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.KurrentDB.Tests/CommunityToolkit.Aspire.KurrentDB.Tests.csproj" />
Expand Down
8 changes: 1 addition & 7 deletions eng/testing/generate-test-list-for-workflow.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,7 @@ case "${MODE}" in
get_test_names
;;
--json)
mapfile -t tests < <(get_test_names)
python - <<'PY' "${tests[@]}"
import json
import sys

print(json.dumps(sys.argv[1:]))
PY
get_test_names | python3 -c 'import json, sys; print(json.dumps([line.rstrip("\n") for line in sys.stdin if line.rstrip("\n")]))'
;;
--workflow)
echo "${INDENT}# Hosting integration tests"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@ import { createBuilder } from "./.aspire/modules/aspire.mjs";

const builder = await createBuilder();

// addOpenTelemetryCollector — default overload
const collector = await builder.addOpenTelemetryCollector("collector");
// addOpenTelemetryCollector — settings overload
const collector = await builder.addOpenTelemetryCollector("collector", {
configureSettings: async settings => {
// This TypeScript smoke validates settings export/startup; C# tests cover the default health endpoint.
await settings.disableHealthcheck.set(true);
},
});
await collector.withConfig("./otel-config.yaml");
await collector.withAppForwarding();

Expand All @@ -14,4 +19,3 @@ const _grpcEndpointName = await _grpcEndpoint.endpointName();
const _httpEndpointName = await _httpEndpoint.endpointName();

await builder.build().run();

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { createBuilder } from "./.aspire/modules/aspire.mjs";

const builder = await createBuilder();

const vercel = await builder.addVercelEnvironment("vercel");
await vercel.withVercelProductionDeployments();
await builder.addDockerComposeEnvironment("docker");

const api = await builder
.addNodeApp("api", "./ct-aspire-vercel-typescript", "server.mjs");

await api.withVercelProjectName("typescript-api");
await api.withComputeEnvironment(vercel);
await api.withEnvironment("GREETING", "hello-from-typescript-apphost");

await builder.build().run();
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"appHost": {
"path": "apphost.mts",
"language": "typescript/nodejs"
},
"sdk": {
"version": "13.4.3"
},
"profiles": {
"https": {
"applicationUrl": "https://localhost:29750;http://localhost:28931",
"environmentVariables": {
"ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:10975",
"ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:13319"
}
}
},
"packages": {
"Aspire.Hosting.JavaScript": "13.4.3",
"Aspire.Hosting.Docker": "13.4.3",
"CommunityToolkit.Aspire.Hosting.Vercel": "../../../src/CommunityToolkit.Aspire.Hosting.Vercel/CommunityToolkit.Aspire.Hosting.Vercel.csproj"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.vercel
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import http from "node:http";

const server = http.createServer((request, response) => {
response.writeHead(200, { "content-type": "application/json" });
response.end(JSON.stringify({
ok: true,
path: request.url,
greeting: process.env.GREETING ?? null
}));
});

const port = Number(process.env.PORT ?? 80);
server.listen(port, "0.0.0.0", () => {
console.log(`listening on ${port}`);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// @ts-check

import { defineConfig } from 'eslint/config';
import tseslint from 'typescript-eslint';

export default defineConfig({
files: ['apphost.mts'],
extends: [tseslint.configs.base],
languageOptions: {
parserOptions: {
projectService: true,
},
},
rules: {
'@typescript-eslint/no-floating-promises': ['error', { checkThenables: true }],
},
});

Loading
Loading