thomhurst/ModularPipelines

Write your pipelines in C# !

C#

558

4,988 commits

updated Oct 18, 2026

See the code

README

ModularPipelines

Write CI/CD pipelines in C#. Debug them locally. Ship with confidence.

nuget

Nuget GitHub Workflow Status (with event) GitHub last commit (branch) Codacy Badge CodeFactor License Codacy Badge codecov

The Problem with YAML Pipelines

You know the drill. You write some YAML, push it, wait for CI to start, watch it fail on a typo, fix it, push again, wait again. Repeat until you lose the will to live.

YAML pipelines are:

  • Impossible to debug locally - "Works on my machine" but fails mysteriously in CI
  • No compile-time safety - Typos in variable names? Enjoy your 10-minute feedback loop
  • Copy-paste hell - Reusing logic means duplicating YAML and hoping you update all the copies
  • Vendor lock-in - Switching from GitHub Actions to Azure Pipelines? Rewrite everything

The Solution

ModularPipelines lets you write your CI/CD pipelines as regular C# code. That means:

Set a breakpoint. Step through your pipeline. Fix it before you push.

[DependsOn<BuildModule>]
[DependsOn<TestModule>]
public class PublishModule : Module<CommandResult>
{
    protected override async Task<CommandResult> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        // This is real C#. Set a breakpoint. Inspect variables. Debug locally.
        return await context.Tools.DotNet.PublishAsync(new DotNetPublishOptions
        {
            ProjectSolution = "src/MyApp/MyApp.csproj",
            Configuration = "Release",
            Output = "publish/"
        }, cancellationToken: cancellationToken);
    }
}

Why Developers Choose ModularPipelines

Your IDE Actually Helps You

Intellisense, refactoring, compile-time errors. Your pipeline code gets the same treatment as your application code. Rename a module? Your IDE updates all the references. Typo in an option? Red squiggle before you even save.

Run Locally, Push Confidently

Test your entire pipeline on your machine before pushing. No more "let me push and see if it works" commits. Debug failures in your IDE instead of reading logs from a build agent.

Automatic Parallelization

Modules declare their dependencies with attributes. ModularPipelines figures out what can run in parallel and maximizes throughput. No more manually orchestrating parallel jobs.

Switch Build Systems Without Rewriting

Your pipeline logic lives in C#, not in vendor-specific YAML. Moving from GitHub Actions to Azure Pipelines to TeamCity? Change one line - your modules stay the same.

Full Dependency Injection

Inject services, configuration, and secrets the same way you do in ASP.NET Core. Mock dependencies for testing. No more environment variable gymnastics.

Secrets Stay Secret

Secrets are automatically obfuscated in logs. No more accidentally exposing API keys in build output.

Modules Share Data

Modules return strongly-typed results that other modules can consume. No shared mutable state - just clean data flow.

// BuildModule returns version info
public class BuildModule : Module<BuildInfo>
{
    protected override async Task<BuildInfo> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        await context.Tools.DotNet.BuildAsync(
            new DotNetBuildOptions { ProjectSolution = "MyApp.csproj" },
            cancellationToken: cancellationToken);
        return new BuildInfo { Version = "1.0.0", OutputPath = "bin/Release" };
    }
}

// PublishModule retrieves and uses it
[DependsOn<BuildModule>]
public class PublishModule : Module
{
    protected override async Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        var buildResult = await context.GetModule<BuildModule>();
        var outputPath = buildResult.Value.OutputPath; // Throws with module context if unavailable
        // Publish using the build output...
    }
}

Catch Mistakes at Compile Time

Built-in Roslyn analyzers catch common mistakes before you even run:

  • Missing [DependsOn] when calling GetModule<T>()
  • Circular dependencies between modules
  • Forgetting to await module results
  • Using Console.Write instead of the logging system

Full Documentation

Quick Start

dotnet new install ModularPipelines.Templates
dotnet new modularpipeline -n MyPipeline \
  --solution ../MySolution.slnx \
  --publish-project ../src/MyApp/MyApp.csproj
cd MyPipeline
dotnet run

The generated project contains separate restore, build, test, and publish modules with explicit dependencies and configurable paths. See the template source for a complete copy-ready example.

Adding pipeline modules to an existing project instead? Install the core framework and the .NET CLI integration used by the examples above:

dotnet add package ModularPipelines
dotnet add package ModularPipelines.DotNet

Then configure and execute the pipeline from Program.cs:

using ModularPipelines;

var builder = Pipeline.CreateBuilder(args);
await builder.RunAsync();

Console Progress

See exactly what's happening as your pipeline runs:

image

Results

Get a clear summary when your pipeline completes:

image

Integrations

ModularPipelines has strongly-typed wrappers for the tools you already use:

PackageDescriptionVersion
ModularPipelinesWrite your pipelines in C#!nuget
ModularPipelines.AmazonWebServicesHelpers for interacting with Amazon Web Services.nuget
ModularPipelines.AnsibleHelpers for interacting with Ansible configuration management CLI.nuget
ModularPipelines.ArgoCdHelpers for interacting with ArgoCD GitOps continuous delivery CLI.nuget
ModularPipelines.AzureHelpers for interacting with Azure.nuget
ModularPipelines.Azure.PipelinesHelpers for interacting with Azure Pipeline agents.nuget
ModularPipelines.BuildahHelpers for interacting with Buildah OCI container image builder CLI.nuget
ModularPipelines.ChocolateyHelpers for interacting with the Chocolatey CLI.nuget
ModularPipelines.CmdHelpers for interacting with the Windows cmd process.nuget
ModularPipelines.CosignHelpers for interacting with Cosign CLI for container signing and verification.nuget
ModularPipelines.DockerHelpers for interacting with the Docker CLI.nuget
ModularPipelines.DotNetHelpers for interacting with dotnet CLI.nuget
ModularPipelines.EksctlHelpers for interacting with eksctl Amazon EKS cluster management CLI.nuget
ModularPipelines.EmailHelpers for sending emails.nuget
ModularPipelines.FluxHelpers for interacting with Flux GitOps toolkit for Kubernetes CLI.nuget
ModularPipelines.FlywayHelpers for interacting with Flyway database migration tool CLI.nuget
ModularPipelines.FtpHelpers for downloading and uploading via FTP.nuget
ModularPipelines.YarnHelpers for interacting with Yarn CLI.nuget
ModularPipelines.NodeHelpers for interacting with node / npm CLI.nuget
ModularPipelines.OptionsGeneratorGenerates strongly typed ModularPipelines integrations from CLI metadata.nuget
ModularPipelines.OpenTelemetryOpenTelemetry tracing, metrics, and OTLP export for Modular Pipelines.nuget
ModularPipelines.GitHelpers for interacting with git.nuget
ModularPipelines.GitHubHelpers for interacting with GitHub Actions build agents.nuget
ModularPipelines.GoHelpers for interacting with Go CLI.nuget
ModularPipelines.GoogleHelpers for interacting with the Google gcloud CLI.nuget
ModularPipelines.GrypeHelpers for interacting with Grype CLI for vulnerability scanning.nuget
ModularPipelines.HadolintHelpers for interacting with Hadolint Dockerfile linter CLI.nuget
ModularPipelines.HelmHelpers for interacting with Helm CLI.nuget
ModularPipelines.HomebrewHelpers for interacting with the Homebrew CLI.nuget
ModularPipelines.JavaHelpers for interacting with Java build tools (Maven, Gradle).nuget
ModularPipelines.JqHelpers for interacting with jq JSON processor CLI.nuget
ModularPipelines.KindHelpers for interacting with Kind (Kubernetes IN Docker) CLI.nuget
ModularPipelines.KubernetesHelpers for interacting with kubectl CLI.nuget
ModularPipelines.LiquibaseHelpers for interacting with Liquibase database change management CLI.nuget
ModularPipelines.MinikubeHelpers for interacting with Minikube CLI for local Kubernetes clusters.nuget
ModularPipelines.NerdbankGitVersioningHelpers for interacting with the Nerdbank.GitVersioning nbgv CLI.nuget
ModularPipelines.MicrosoftTeamsHelpers for sending Microsoft Teams cards.nuget
ModularPipelines.NewmanHelpers for interacting with Newman Postman collection runner CLI.nuget
ModularPipelines.PackerHelpers for interacting with HashiCorp Packer machine image builder CLI.nuget
ModularPipelines.PodmanHelpers for interacting with Podman daemonless container engine CLI.nuget
ModularPipelines.PulumiHelpers for interacting with Pulumi Infrastructure as Code CLI.nuget
ModularPipelines.PythonHelpers for interacting with Python tooling (pip, etc.).nuget
ModularPipelines.RustHelpers for interacting with Cargo (Rust package manager) CLI.nuget
ModularPipelines.ShellcheckHelpers for interacting with ShellCheck shell script static analysis CLI.nuget
ModularPipelines.SkopeoHelpers for interacting with Skopeo container image operations CLI.nuget
ModularPipelines.SlackHelpers for sending Slack cards.nuget
ModularPipelines.SnykHelpers for interacting with Snyk security CLI.nuget
ModularPipelines.SonarScannerHelpers for interacting with SonarScanner CLI for SonarQube and SonarCloud.nuget
ModularPipelines.SyftHelpers for interacting with Syft CLI for SBOM (Software Bill of Materials) generation.nuget
ModularPipelines.TeamCityHelpers for interacting with TeamCity build agents.nuget
ModularPipelines.TemplatesTemplates for creating realistic ModularPipelines build, test, and publish pipelines.nuget
ModularPipelines.TestingSupported test harness for isolated ModularPipelines module tests.nuget
ModularPipelines.TerraformHelpers for interacting with Terraform CLI.nuget
ModularPipelines.TrivyHelpers for interacting with Trivy security scanner CLI.nuget
ModularPipelines.VaultHelpers for interacting with HashiCorp Vault secrets management CLI.nuget
ModularPipelines.WinGetHelpers for interacting with the Windows Package Manager.nuget
ModularPipelines.YqHelpers for interacting with yq YAML/JSON/XML processor CLI.nuget
ModularPipelines.Distributed.Artifacts.S3S3-compatible distributed artifact store for ModularPipelines. Supports AWS S3, Cloudflare R2, Backblaze B2, and MinIO.nuget
ModularPipelines.Distributed.Discovery.RedisRedis-based master endpoint discovery for distributed coordinators. Enables cross-network pipeline distribution by advertising the master endpoint via Redis.nuget
ModularPipelines.Distributed.RedisRedis-based distributed coordinator for ModularPipelines. Enables multi-process and multi-machine pipeline execution using Redis for coordination.nuget
ModularPipelines.Distributed.SignalRSignalR-based distributed coordinator for ModularPipelines. Enables multi-process pipeline execution using SignalR for direct master-worker communication.nuget

How Does This Compare to Cake / Nuke?

ModularPipelinesCakeNuke
LanguageReal C#C# DSL (scripted)Real C#
ParallelizationAutomatic based on dependenciesManualManual
ArchitectureSeparate module classes (SRP)Single build scriptSingle build class
Dependency InjectionFull Microsoft.Extensions.DILimitedBuilt-in but different
Setupdotnet runRequires bootstrapperRequires global tool
Module CommunicationStrongly-typed return valuesShared stateParameters

ModularPipelines takes a different approach: each unit of work is a self-contained module class. This keeps code organized, makes merge conflicts rare, and lets you test modules in isolation.

Features at a Glance

  • Parallel execution - Automatic based on declared dependencies
  • Module data sharing - Strongly-typed results flow between modules
  • Roslyn analyzers - Catch mistakes at compile time, not runtime
  • Conditional dependencies - DependsOnIf<T>() for dynamic dependency graphs
  • Dependency management - Circular dependency detection built-in
  • Strong typing - Pass data between modules with compile-time safety
  • Debug locally - Set breakpoints, inspect variables, fix issues before pushing
  • Build agent agnostic - Same code runs on GitHub, Azure, TeamCity, or your laptop
  • Secret obfuscation - Automatic masking in logs
  • Hooks - Run code before/after any module
  • Skip conditions - Dynamically skip modules based on custom logic
  • Resilience shields - Configurable retries and advanced Kevlar integration
  • Requirements validation - Check prerequisites before running
  • Progress reporting - Real-time console output with parallel execution visualization
  • Source controlled - Your pipeline is code, version it like code

Breaking Changes

While I aim to maintain stability, minor versions may include breaking changes. These will always be documented in release notes.

build
build-system
build-tool
build-tools
csharp
dotnet
dotnet-core
dotnetcore
pipeline
pipeline-deploy
pipeline-framework
pipelines

thomhurst/ModularPipelines

Write your pipelines in C# !

C#

558

4,988 commits

updated Oct 18, 2026

See the code

README

ModularPipelines

Write CI/CD pipelines in C#. Debug them locally. Ship with confidence.

nuget

Nuget GitHub Workflow Status (with event) GitHub last commit (branch) Codacy Badge CodeFactor License Codacy Badge codecov

The Problem with YAML Pipelines

You know the drill. You write some YAML, push it, wait for CI to start, watch it fail on a typo, fix it, push again, wait again. Repeat until you lose the will to live.

YAML pipelines are:

  • Impossible to debug locally - "Works on my machine" but fails mysteriously in CI
  • No compile-time safety - Typos in variable names? Enjoy your 10-minute feedback loop
  • Copy-paste hell - Reusing logic means duplicating YAML and hoping you update all the copies
  • Vendor lock-in - Switching from GitHub Actions to Azure Pipelines? Rewrite everything

The Solution

ModularPipelines lets you write your CI/CD pipelines as regular C# code. That means:

Set a breakpoint. Step through your pipeline. Fix it before you push.

[DependsOn<BuildModule>]
[DependsOn<TestModule>]
public class PublishModule : Module<CommandResult>
{
    protected override async Task<CommandResult> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        // This is real C#. Set a breakpoint. Inspect variables. Debug locally.
        return await context.Tools.DotNet.PublishAsync(new DotNetPublishOptions
        {
            ProjectSolution = "src/MyApp/MyApp.csproj",
            Configuration = "Release",
            Output = "publish/"
        }, cancellationToken: cancellationToken);
    }
}

Why Developers Choose ModularPipelines

Your IDE Actually Helps You

Intellisense, refactoring, compile-time errors. Your pipeline code gets the same treatment as your application code. Rename a module? Your IDE updates all the references. Typo in an option? Red squiggle before you even save.

Run Locally, Push Confidently

Test your entire pipeline on your machine before pushing. No more "let me push and see if it works" commits. Debug failures in your IDE instead of reading logs from a build agent.

Automatic Parallelization

Modules declare their dependencies with attributes. ModularPipelines figures out what can run in parallel and maximizes throughput. No more manually orchestrating parallel jobs.

Switch Build Systems Without Rewriting

Your pipeline logic lives in C#, not in vendor-specific YAML. Moving from GitHub Actions to Azure Pipelines to TeamCity? Change one line - your modules stay the same.

Full Dependency Injection

Inject services, configuration, and secrets the same way you do in ASP.NET Core. Mock dependencies for testing. No more environment variable gymnastics.

Secrets Stay Secret

Secrets are automatically obfuscated in logs. No more accidentally exposing API keys in build output.

Modules Share Data

Modules return strongly-typed results that other modules can consume. No shared mutable state - just clean data flow.

// BuildModule returns version info
public class BuildModule : Module<BuildInfo>
{
    protected override async Task<BuildInfo> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        await context.Tools.DotNet.BuildAsync(
            new DotNetBuildOptions { ProjectSolution = "MyApp.csproj" },
            cancellationToken: cancellationToken);
        return new BuildInfo { Version = "1.0.0", OutputPath = "bin/Release" };
    }
}

// PublishModule retrieves and uses it
[DependsOn<BuildModule>]
public class PublishModule : Module
{
    protected override async Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
    {
        var buildResult = await context.GetModule<BuildModule>();
        var outputPath = buildResult.Value.OutputPath; // Throws with module context if unavailable
        // Publish using the build output...
    }
}

Catch Mistakes at Compile Time

Built-in Roslyn analyzers catch common mistakes before you even run:

  • Missing [DependsOn] when calling GetModule<T>()
  • Circular dependencies between modules
  • Forgetting to await module results
  • Using Console.Write instead of the logging system

Full Documentation

Quick Start

dotnet new install ModularPipelines.Templates
dotnet new modularpipeline -n MyPipeline \
  --solution ../MySolution.slnx \
  --publish-project ../src/MyApp/MyApp.csproj
cd MyPipeline
dotnet run

The generated project contains separate restore, build, test, and publish modules with explicit dependencies and configurable paths. See the template source for a complete copy-ready example.

Adding pipeline modules to an existing project instead? Install the core framework and the .NET CLI integration used by the examples above:

dotnet add package ModularPipelines
dotnet add package ModularPipelines.DotNet

Then configure and execute the pipeline from Program.cs:

using ModularPipelines;

var builder = Pipeline.CreateBuilder(args);
await builder.RunAsync();

Console Progress

See exactly what's happening as your pipeline runs:

image

Results

Get a clear summary when your pipeline completes:

image

Integrations

ModularPipelines has strongly-typed wrappers for the tools you already use:

PackageDescriptionVersion
ModularPipelinesWrite your pipelines in C#!nuget
ModularPipelines.AmazonWebServicesHelpers for interacting with Amazon Web Services.nuget
ModularPipelines.AnsibleHelpers for interacting with Ansible configuration management CLI.nuget
ModularPipelines.ArgoCdHelpers for interacting with ArgoCD GitOps continuous delivery CLI.nuget
ModularPipelines.AzureHelpers for interacting with Azure.nuget
ModularPipelines.Azure.PipelinesHelpers for interacting with Azure Pipeline agents.nuget
ModularPipelines.BuildahHelpers for interacting with Buildah OCI container image builder CLI.nuget
ModularPipelines.ChocolateyHelpers for interacting with the Chocolatey CLI.nuget
ModularPipelines.CmdHelpers for interacting with the Windows cmd process.nuget
ModularPipelines.CosignHelpers for interacting with Cosign CLI for container signing and verification.nuget
ModularPipelines.DockerHelpers for interacting with the Docker CLI.nuget
ModularPipelines.DotNetHelpers for interacting with dotnet CLI.nuget
ModularPipelines.EksctlHelpers for interacting with eksctl Amazon EKS cluster management CLI.nuget
ModularPipelines.EmailHelpers for sending emails.nuget
ModularPipelines.FluxHelpers for interacting with Flux GitOps toolkit for Kubernetes CLI.nuget
ModularPipelines.FlywayHelpers for interacting with Flyway database migration tool CLI.nuget
ModularPipelines.FtpHelpers for downloading and uploading via FTP.nuget
ModularPipelines.YarnHelpers for interacting with Yarn CLI.nuget
ModularPipelines.NodeHelpers for interacting with node / npm CLI.nuget
ModularPipelines.OptionsGeneratorGenerates strongly typed ModularPipelines integrations from CLI metadata.nuget
ModularPipelines.OpenTelemetryOpenTelemetry tracing, metrics, and OTLP export for Modular Pipelines.nuget
ModularPipelines.GitHelpers for interacting with git.nuget
ModularPipelines.GitHubHelpers for interacting with GitHub Actions build agents.nuget
ModularPipelines.GoHelpers for interacting with Go CLI.nuget
ModularPipelines.GoogleHelpers for interacting with the Google gcloud CLI.nuget
ModularPipelines.GrypeHelpers for interacting with Grype CLI for vulnerability scanning.nuget
ModularPipelines.HadolintHelpers for interacting with Hadolint Dockerfile linter CLI.nuget
ModularPipelines.HelmHelpers for interacting with Helm CLI.nuget
ModularPipelines.HomebrewHelpers for interacting with the Homebrew CLI.nuget
ModularPipelines.JavaHelpers for interacting with Java build tools (Maven, Gradle).nuget
ModularPipelines.JqHelpers for interacting with jq JSON processor CLI.nuget
ModularPipelines.KindHelpers for interacting with Kind (Kubernetes IN Docker) CLI.nuget
ModularPipelines.KubernetesHelpers for interacting with kubectl CLI.nuget
ModularPipelines.LiquibaseHelpers for interacting with Liquibase database change management CLI.nuget
ModularPipelines.MinikubeHelpers for interacting with Minikube CLI for local Kubernetes clusters.nuget
ModularPipelines.NerdbankGitVersioningHelpers for interacting with the Nerdbank.GitVersioning nbgv CLI.nuget
ModularPipelines.MicrosoftTeamsHelpers for sending Microsoft Teams cards.nuget
ModularPipelines.NewmanHelpers for interacting with Newman Postman collection runner CLI.nuget
ModularPipelines.PackerHelpers for interacting with HashiCorp Packer machine image builder CLI.nuget
ModularPipelines.PodmanHelpers for interacting with Podman daemonless container engine CLI.nuget
ModularPipelines.PulumiHelpers for interacting with Pulumi Infrastructure as Code CLI.nuget
ModularPipelines.PythonHelpers for interacting with Python tooling (pip, etc.).nuget
ModularPipelines.RustHelpers for interacting with Cargo (Rust package manager) CLI.nuget
ModularPipelines.ShellcheckHelpers for interacting with ShellCheck shell script static analysis CLI.nuget
ModularPipelines.SkopeoHelpers for interacting with Skopeo container image operations CLI.nuget
ModularPipelines.SlackHelpers for sending Slack cards.nuget
ModularPipelines.SnykHelpers for interacting with Snyk security CLI.nuget
ModularPipelines.SonarScannerHelpers for interacting with SonarScanner CLI for SonarQube and SonarCloud.nuget
ModularPipelines.SyftHelpers for interacting with Syft CLI for SBOM (Software Bill of Materials) generation.nuget
ModularPipelines.TeamCityHelpers for interacting with TeamCity build agents.nuget
ModularPipelines.TemplatesTemplates for creating realistic ModularPipelines build, test, and publish pipelines.nuget
ModularPipelines.TestingSupported test harness for isolated ModularPipelines module tests.nuget
ModularPipelines.TerraformHelpers for interacting with Terraform CLI.nuget
ModularPipelines.TrivyHelpers for interacting with Trivy security scanner CLI.nuget
ModularPipelines.VaultHelpers for interacting with HashiCorp Vault secrets management CLI.nuget
ModularPipelines.WinGetHelpers for interacting with the Windows Package Manager.nuget
ModularPipelines.YqHelpers for interacting with yq YAML/JSON/XML processor CLI.nuget
ModularPipelines.Distributed.Artifacts.S3S3-compatible distributed artifact store for ModularPipelines. Supports AWS S3, Cloudflare R2, Backblaze B2, and MinIO.nuget
ModularPipelines.Distributed.Discovery.RedisRedis-based master endpoint discovery for distributed coordinators. Enables cross-network pipeline distribution by advertising the master endpoint via Redis.nuget
ModularPipelines.Distributed.RedisRedis-based distributed coordinator for ModularPipelines. Enables multi-process and multi-machine pipeline execution using Redis for coordination.nuget
ModularPipelines.Distributed.SignalRSignalR-based distributed coordinator for ModularPipelines. Enables multi-process pipeline execution using SignalR for direct master-worker communication.nuget

How Does This Compare to Cake / Nuke?

ModularPipelinesCakeNuke
LanguageReal C#C# DSL (scripted)Real C#
ParallelizationAutomatic based on dependenciesManualManual
ArchitectureSeparate module classes (SRP)Single build scriptSingle build class
Dependency InjectionFull Microsoft.Extensions.DILimitedBuilt-in but different
Setupdotnet runRequires bootstrapperRequires global tool
Module CommunicationStrongly-typed return valuesShared stateParameters

ModularPipelines takes a different approach: each unit of work is a self-contained module class. This keeps code organized, makes merge conflicts rare, and lets you test modules in isolation.

Features at a Glance

  • Parallel execution - Automatic based on declared dependencies
  • Module data sharing - Strongly-typed results flow between modules
  • Roslyn analyzers - Catch mistakes at compile time, not runtime
  • Conditional dependencies - DependsOnIf<T>() for dynamic dependency graphs
  • Dependency management - Circular dependency detection built-in
  • Strong typing - Pass data between modules with compile-time safety
  • Debug locally - Set breakpoints, inspect variables, fix issues before pushing
  • Build agent agnostic - Same code runs on GitHub, Azure, TeamCity, or your laptop
  • Secret obfuscation - Automatic masking in logs
  • Hooks - Run code before/after any module
  • Skip conditions - Dynamically skip modules based on custom logic
  • Resilience shields - Configurable retries and advanced Kevlar integration
  • Requirements validation - Check prerequisites before running
  • Progress reporting - Real-time console output with parallel execution visualization
  • Source controlled - Your pipeline is code, version it like code

Breaking Changes

While I aim to maintain stability, minor versions may include breaking changes. These will always be documented in release notes.

build
build-system
build-tool
build-tools
csharp
dotnet
dotnet-core
dotnetcore
pipeline
pipeline-deploy
pipeline-framework
pipelines

Project health

Latest release

3.2.8 · Apr 17, 2026

Releases this year

15

Significant stargazers

Cédric Luthi

1,186 followers · starred Jan 2025

Matt Kotsenas

67 followers · starred Aug 2026

Charles Chen

161 followers · starred Feb 2026

Amichai Mantinband

2,548 followers · starred Jun 2024