Skip to content

SAIFPIPELINES001: Pipeline Generation API is Experimental

Cause

You are using a type or member from the SAIF pipeline generation API that is marked as experimental.

Rule Description

The pipeline generation APIs in SAIF.Platform.Aspire.Hosting.Generation.Pipelines are currently in preview and may change in future releases. These APIs generate Azure DevOps pipeline YAML and variable files in .azdo/ when you run aspire publish. They allow you to:

  • Customize API pipeline variables such as the API tier and OpenAPI file name
  • Customize event service pipeline variables such as the OpenAPI file name
  • Mark project resources with the pipeline role they play (API, web frontend, event service, or subscription)
  • Run the pipeline publishing step and Bicep artifact cleanup from custom tooling or tests

AddSaifEnvironment() registers the pipeline resource and Bicep cleanup automatically, so most AppHosts only touch the options types. See Aspire Publish for usage.

How to Fix

The compiler reports SAIFPIPELINES001 as an error by default. If you want to use these experimental APIs, suppress the diagnostic:

Option 1: Suppress in code

#pragma warning disable SAIFPIPELINES001
var api = builder.AddApiService<Projects.MyApp_Api>("myapp",
    new ApiPipelineOptions { Type = ApiType.Process });
#pragma warning restore SAIFPIPELINES001

Option 2: Suppress in project file

<PropertyGroup>
  <NoWarn>$(NoWarn);SAIFPIPELINES001</NoWarn>
</PropertyGroup>

Affected APIs

Type Description
ApiPipelineOptions API pipeline options that map to .azdo/vars/api.yml
ApiType API tier classification: Experience, Process, System, or None
EventServicePipelineOptions Event service pipeline options that map to .azdo/vars/event-service.yml
PipelineProjectRole Role a project plays in pipeline generation
PipelineProjectAnnotation Annotation that marks a project resource with its PipelineProjectRole
PipelineResource Resource that owns the publish step for Azure DevOps pipeline files
PipelineResourceExtensions Extension methods for adding the pipeline resource
SaifPipelinePublishingContext Context that writes pipeline YAML and variable files from the application model
BicepCleanup Utilities that remove Aspire-generated Bicep artifacts from the publish output

When Will This Be Stable?

These APIs are being introduced as experimental in Forge 3.3. We are gathering feedback on:

  • Pipeline options and the variables they expose
  • Project role detection across API, frontend, event service, and subscription resources
  • Generated pipeline and variable file layout in .azdo/
  • Bicep artifact cleanup behavior after publish

Once we have sufficient feedback and the API design has stabilized, we will remove the experimental designation in a future release.

Please provide feedback via the Forge repository.