Write CI/CD pipelines in C# with local debugging, compile-time safety, and automatic parallelization.
ModularPipelines is a framework for writing CI/CD pipelines as C# code, replacing YAML-based approaches. It enables developers to debug pipelines locally with full IDE support, catch errors at compile time, and avoid vendor lock-in by abstracting pipeline logic from specific build systems.
C# developers and teams building CI/CD pipelines who want to move away from YAML-based systems, particularly those using GitHub Actions, Azure Pipelines, or TeamCity and seeking better debugging and maintainability.
Developers choose ModularPipelines for its local debugging with IDE breakpoints, compile-time safety via Roslyn analyzers, and build system agnosticism that prevents vendor lock-in. Its modular architecture with automatic parallelization and strongly-typed data sharing offers a more maintainable and testable pipeline codebase.
Write your pipelines in C# !
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows setting breakpoints and stepping through pipeline execution in an IDE, enabling pre-push validation and faster debugging cycles, as highlighted in the README's example of debugging a publish module locally.
Leverages Roslyn analyzers and Intellisense to catch typos, missing dependencies, and circular dependencies at compile time, reducing runtime failures in CI, as mentioned in the features list.
Modules declare dependencies with attributes, and the framework automatically executes independent modules in parallel for optimized throughput, avoiding manual orchestration.
Pipeline logic is written in C# and can run on multiple CI systems like GitHub Actions, Azure Pipelines, or locally, preventing vendor lock-in, as emphasized in the philosophy section.
The README explicitly admits that minor versions may include breaking changes, which can disrupt pipeline stability and require ongoing maintenance efforts for teams.
Locks pipelines into C# and the .NET environment, adding complexity for non-.NET projects or teams unfamiliar with Microsoft's dependency injection and tooling.
Compared to YAML, setting up involves writing and organizing C# code with modules and dependencies, which might be excessive for simple or one-off pipeline tasks.