Skip to content

[Epic] Code-managed release channels, deployment targets & environments (config-injectable, standalone-capable) #332

Description

@ChrisonSimtian

Problem — we don't dogfood CD

Validation CI is dogfooded: ubuntu/windows/macos-latest are generated from build/Build.CI.GitHubActions.cs and just call dotnet fallout Test Pack. Delivery is not:

  • experimental.yml / preview.yml / release.yml are hand-written YAML inlining dotnet nuget push --source … --api-key … --skip-duplicate.
  • We have an IPublish.Publish target, but it models a single NuGetSource + single key. It can't express: GitHub Packages (all pkgs) vs nuget.org (Fallout.* only, opt-in) vs GitHub Releases; per-lane routing (alpha/preview/GA); the approval gate.
  • The [GitHubActions] generator models "run these targets", not deployment pipelines (multi-env fan-out, dispatch flags, conditional jobs) — so publish workflows are hand-authored.

The gap is fillable in the framework. The only irreducible external piece is the human approval gate, which becomes a pluggable provider.

Goal — manage CD as code

A richer Publish/Deploy surface consumes these so the CI YAML becomes a thin generated shell calling dotnet fallout Deploy — same as validation calls dotnet fallout Test.

Config model — injected or standalone

Definitions resolve through configuration providers:

  • Injected from a parent system — GitHub (Environments/secrets), Octopus, Azure DevOps.
  • Standalone — wire up an appsettings.json and Fallout drives it all itself.

This lets the same build run inside a forge or fully self-hosted, and absorbs the approval gate (delegate to GitHub/Octopus, or a Fallout server when standalone).

Why it matters

A major step toward Fallout as a standalone, self-hostable CI/CD product — the thing that owns channels, environments, and promotions end-to-end, not just a build tool someone else's pipeline invokes.

Child issues


Umbrella: #106. Relates to #113, #249, #252, #285, #286.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFCDesign discussion / RFC. Comment with feedback; consensus shapes the implementation.enhancementNew feature or requesttarget/vNextTargets the next calendar-version

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions