Start Debugging

ModularPipelines V3: CI-Pipelines in C# schreiben, lokal debuggen, kein YAML-Babysitting mehr

ModularPipelines V3 erlaubt Ihnen, CI-Pipelines in C# statt in YAML zu schreiben. Führen Sie sie lokal mit dotnet run aus, profitieren Sie von Sicherheit zur Kompilierzeit und debuggen Sie mit Haltepunkten.

Diese Woche gab es eine weitere Erinnerung daran, dass CI keine blinde Push-and-Pray-Schleife sein muss: ModularPipelines V3 wird aktiv ausgeliefert (das jüngste Tag v3.0.86 wurde am 2026-01-18 veröffentlicht) und stützt sich stark auf eine einfache Idee: Ihre Pipeline ist einfach eine .NET-Anwendung.

Quelle: ModularPipelines repo und das v3.0.86 Release.

Der Teil, der Ihre Feedback-Schleife verändert

Wenn Sie .NET 10-Dienste ausliefern, haben Ihre Pipeline-Schritte bereits “Code-Form”: kompilieren, testen, veröffentlichen, packen, scannen, bereitstellen. Das Problem ist meist die Hülle: YAML, stringly-typed-Variablen und eine 5-10-minütige Feedback-Schleife für Tippfehler.

ModularPipelines dreht das um:

Hier die Kernform direkt aus der README des Projekts, als minimal einfügbares Beispiel aufbereitet:

// Program.cs
await PipelineHostBuilder.Create()
    .AddModule<BuildModule>()
    .AddModule<TestModule>()
    .AddModule<PublishModule>()
    .ExecutePipelineAsync();

public class BuildModule : Module<CommandResult>
{
    protected override Task<CommandResult?> ExecuteAsync(IPipelineContext context, CancellationToken ct) =>
        context.DotNet().Build(new DotNetBuildOptions
        {
            Project = "MySolution.sln",
            Configuration = Configuration.Release
        }, ct);
}

[DependsOn<BuildModule>]
public class TestModule : Module<CommandResult>
{
    protected override Task<CommandResult?> ExecuteAsync(IPipelineContext context, CancellationToken ct) =>
        context.DotNet().Test(new DotNetTestOptions
        {
            Project = "MySolution.sln",
            Configuration = Configuration.Release
        }, ct);
}

Das ist im besten Sinne langweilig: es ist normales C#. Haltepunkte funktionieren. Ihre IDE hilft. “Modul umbenennen” ist keine angsteinflößende globale Suche.

Tool-Wrapper, die mit dem Ökosystem mitziehen

Das v3.0.86-Release ist absichtlich “klein”: es aktualisiert CLI-Optionen für Tools wie pnpm, grype und vault. Das ist genau die Art von Wartung, die ein Pipeline-Framework für Sie übernehmen soll. Wenn eine CLI ein Flag hinzufügt oder ändert, soll sich ein typisierter Wrapper bewegen, nicht ein Dutzend YAML-Snippets verrotten.

Warum mir das Modulmodell für reale Repos gefällt

In größeren Codebasen liegen die versteckten Kosten von YAML nicht in der Syntax. Sie liegen im Change-Management:

Wenn Sie bereits in .NET 9 oder .NET 10 leben, ist das Behandeln Ihrer Pipeline als kleine C#-Anwendung kein “Overengineering”. Es ist eine kürzere Feedback-Schleife und weniger Überraschungen in der Produktion.

Wenn Sie tiefer einsteigen wollen, beginnen Sie mit dem “Quick Start” und der Dokumentation des Projekts: Full Documentation.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Zurück