Skip to content

TypeScript AppHost: Add builder.pipeline API (AddStep, Configure, WellKnownPipelineSteps) #15708

@davidfowl

Description

@davidfowl

Summary

The TypeScript AppHost exposes withPipelineStepFactory on resources, but the builder.pipeline API for adding application-level pipeline steps is not available.

What's available in C# but missing in TypeScript

builder.Pipeline.AddStep (application-level steps)

builder.Pipeline.AddStep("hello-world", async context =>
{
    Console.WriteLine("Hello World!");
});

builder.Pipeline.AddStep("custom-deploy-prereq",
    async context => { /* ... */ },
    requiredBy: [WellKnownPipelineSteps.Deploy]);

WellKnownPipelineSteps constants

WellKnownPipelineSteps.Deploy
WellKnownPipelineSteps.Publish
WellKnownPipelineSteps.Build
WellKnownPipelineSteps.Push
// etc.

builder.Pipeline.Configure (pipeline configuration)

builder.Pipeline.Configure(context =>
{
    // Access all steps, reorder, modify dependencies
});

What IS available in TypeScript

Only withPipelineStepFactory on resource builders:

await resource.withPipelineStepFactory(
    "stepName",
    (context) => { /* ... */ },
    dependsOn?,
    requiredBy?,
    tags?,
    description?
);

This covers resource-scoped steps but doesn't allow application-wide pipeline customization like the C# builder.Pipeline API.

Expected TypeScript equivalents

// Application-level pipeline steps
builder.pipeline.addStep("hello-world", async (context) => {
    console.log("Hello World!");
});

// Well-known step constants
import { WellKnownPipelineSteps } from './.modules/aspire.js';

builder.pipeline.addStep("custom-deploy-prereq",
    async (context) => { /* ... */ },
    { requiredBy: [WellKnownPipelineSteps.Deploy] }
);

// Pipeline configuration
builder.pipeline.configure((context) => {
    // Access all steps
});

Context

This was identified while writing deployment docs at https://github.com/microsoft/aspire.dev. The Pipelines page (/deployment/pipelines/) currently only shows C# examples because the builder-level pipeline API is not available in TypeScript.

/cc @sebastienros

Metadata

Metadata

Assignees

Labels

area-polyglotIssues related to polyglot apphosts

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions