VOOZH about

URL: https://www.nuget.org/packages/DotnetModularPipelines/

⇱ NuGet Gallery | DotnetModularPipelines 2.48.0-alpha.265




DotnetModularPipelines 2.48.0-alpha.265

This is a prerelease version of DotnetModularPipelines.
dotnet add package DotnetModularPipelines --version 2.48.0-alpha.265
 
 
NuGet\Install-Package DotnetModularPipelines -Version 2.48.0-alpha.265
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DotnetModularPipelines" Version="2.48.0-alpha.265" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DotnetModularPipelines" Version="2.48.0-alpha.265" />
 
Directory.Packages.props
<PackageReference Include="DotnetModularPipelines" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DotnetModularPipelines --version 2.48.0-alpha.265
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DotnetModularPipelines, 2.48.0-alpha.265"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DotnetModularPipelines@2.48.0-alpha.265
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DotnetModularPipelines&version=2.48.0-alpha.265&prerelease
 
Install as a Cake Addin
#tool nuget:?package=DotnetModularPipelines&version=2.48.0-alpha.265&prerelease
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ModularPipelines

Define your pipeline in .NET! Strong types, intellisense, parallelisation, and the entire .NET ecosystem at your fingertips.

👁 nuget

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

Documentation

https://thomhurst.github.io/ModularPipelines

Features

  • Parallel execution
  • Dependency management
  • Familiar C# code
  • Ability to debug pipelines
  • Ability to run pipelines locally, even creating versions for setting up local development
  • Strong typing, where different modules/steps can pass data to one another
  • Dependency collision detection - Don't worry about accidentally making two modules dependent on each other
  • Numerous helpers to do things like: Search files, check checksums, (un)zip folders, download files, install files, execute CLI commands, hash data, and more
  • Easy to Skip or Ignore Failures for each individual module by passing in custom logic
  • Hooks that can run before and/or after modules
  • Pipeline requirements - Validate your requirements are met before executing your pipeline, such as a Linux operating system
  • Easy to use File and Folder classes, that can search, read, update, delete and more
  • Source controlled pipelines
  • Build agent agnostic - Can easily move to a different build system without completely recreating your pipeline
  • No need to learn new syntaxes such as YAML defined pipelines
  • Strongly typed wrappers around command line tools
  • Utilise existing .NET libraries
  • Secret obfuscation
  • Grouped logging, and the ability to extend sources by adding to the familiar ILogger
  • Run based on categories
  • Easy to read exceptions
  • Dynamic console progress reporting (if the console supports interactive mode)
  • Pretty results table

Available Modules

Package Description Version
ModularPipelines Write your pipelines in C#! 👁 nuget
ModularPipelines.AmazonWebServices Helpers for interacting with Amazon Web Services. 👁 nuget
ModularPipelines.Azure Helpers for interacting with Azure. 👁 nuget
ModularPipelines.Azure.Pipelines Helpers for interacting with Azure Pipeline agents. 👁 nuget
ModularPipelines.Chocolatey Helpers for interacting with the Chocolatey CLI. 👁 nuget
ModularPipelines.Cmd Helpers for interacting with the Windows cmd process. 👁 nuget
ModularPipelines.Docker Helpers for interacting with the Docker CLI. 👁 nuget
ModularPipelines.DotNet Helpers for interacting with dotnet CLI. 👁 nuget
ModularPipelines.Email Helpers for sending emails. 👁 nuget
ModularPipelines.Ftp Helpers for downloading and uploading via FTP. 👁 nuget
ModularPipelines.Git Helpers for interacting with git. 👁 nuget
ModularPipelines.GitHub Helpers for interacting with GitHub Actions build agents. 👁 nuget
ModularPipelines.Google Helpers for interacting with the Google gcloud CLI. 👁 nuget
ModularPipelines.Helm Helpers for interacting with Helm CLI. 👁 nuget
ModularPipelines.Kubernetes Helpers for interacting with kubectl CLI. 👁 nuget
ModularPipelines.MicrosoftTeams Helpers for sending Microsoft Teams cards. 👁 nuget
ModularPipelines.Node Helpers for interacting with node / npm CLI. 👁 nuget
ModularPipelines.Slack Helpers for sending Slack cards. 👁 nuget
ModularPipelines.TeamCity Helpers for interacting with TeamCity build agents. 👁 nuget
ModularPipelines.Terraform Helpers for interacting with Terraform CLI. 👁 nuget
ModularPipelines.WinGet Helpers for interacting with the Windows Package Manager. 👁 nuget
ModularPipelines.Yarn Helpers for interacting with Yarn CLI. 👁 nuget

Getting Started

If you want to see how to get started, or want to know more about ModularPipelines, read the Documentation here

Console Progress

Results

<img width="444" alt="image" src="https://github.com/thomhurst/ModularPipelines/assets/30480171/8963e891-2c29-4382-9a3e-6ced4daf4d4b">

How does this compare to Cake / Nuke

  • Strong types! You have complete control over what data, and what shape of data to pass around from and to different modules
  • No external tooling is required. Pipelines are run with a simple dotnet run
  • Full dependency injection support for your services
  • Similar and familiar setup to frameworks like ASP.NET Core
  • Real C# - Whereas frameworks like cake are a scripted form of C#
  • Parallelism - Work will run concurrently unless it is dependent on something else
  • The style of writing pipelines is very different - Work is organised into separate module classes, keeping code organised and more closely following SRP than having all your work in one main class. This also helps multiple contributors avoid things like merge conflicts

Code Examples

Program.cs - Main method

await PipelineHostBuilder.Create()
 .ConfigureAppConfiguration((context, builder) =>
 {
 builder.AddJsonFile("appsettings.json")
 .AddUserSecrets<Program>()
 .AddEnvironmentVariables();
 })
 .ConfigureServices((context, collection) =>
 {
 collection.Configure<NuGetSettings>(context.Configuration.GetSection("NuGet"));
 collection.Configure<PublishSettings>(context.Configuration.GetSection("Publish"));
 collection.AddSingleton<ISomeService1, SomeService1>();
 collection.AddTransient<ISomeService2, SomeService2>();
 })
 .AddModule<FindNugetPackagesModule>()
 .AddModule<UploadNugetPackagesModule>()
 .ExecutePipelineAsync();

Custom Modules

public class FindNugetPackagesModule : Module<FileInfo>
{
 protected override Task<List<File>?> ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken)
 {
 return context.Git()
 .RootDirectory
 .GetFiles(path => path.Extension is ".nupkg")
 .ToList()
 .AsTask();
 }
}
[DependsOn<FindNugetPackagesModule>]
public class UploadNugetPackagesModule : Module<FileInfo>
{
 private readonly IOptions<NuGetSettings> _nugetSettings;

 public UploadNugetPackagesModule(IOptions<NuGetSettings> nugetSettings)
 {
 _nugetSettings = nugetSettings;
 }

 protected override async Task<CommandResult?> ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken)
 {
 var nugetFiles = await GetModule<FindNugetPackagesModule>();

 return await nugetFiles.Value!
 .SelectAsync(async nugetFile => await context.DotNet().Nuget.Push(new DotNetNugetPushOptions
 {
 Path = nugetFile,
 Source = "https://api.nuget.org/v3/index.json",
 ApiKey = _nugetSettings.Value.ApiKey!,
 }, cancellationToken), cancellationToken: cancellationToken)
 .ProcessOneAtATime();
 }
}

Breaking changes

While I will try to limit breaking changes, there may be some changes within minor versions. These will be noted on release notes.

Product Versions Compatible and additional computed target framework versions.
.NET net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 is compatible.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (21)

Showing the top 5 NuGet packages that depend on DotnetModularPipelines:

Package Downloads
DotnetModularPipelines.Azure

Helpers for interacting with Azure.

DotnetModularPipelines.AmazonWebServices

Helpers for interacting with Amazon Web Services.

DotnetModularPipelines.Azure.Pipelines

Helpers for interacting with Azure Pipeline agents.

DotnetModularPipelines.Cmd

Helpers for interacting with the Windows cmd process.

DotnetModularPipelines.Chocolatey

Helpers for interacting with the Chocolatey CLI.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.48.0-alpha.265 198 10/23/2025
2.48.0-alpha.264 182 10/23/2025
2.48.0-alpha.260 187 10/23/2025
2.48.0-alpha.258 174 10/23/2025
2.48.0-alpha.256 188 10/23/2025
2.48.0-alpha.254 182 10/23/2025
2.48.0-alpha.252 120 10/10/2025
2.48.0-alpha.251 181 10/8/2025
2.48.0-alpha.243 178 10/8/2025
2.48.0-alpha.242 185 10/8/2025
2.48.0-alpha.241 159 10/8/2025
2.48.0-alpha.236 175 10/8/2025
2.48.0-alpha.235 184 10/8/2025
2.48.0-alpha.234 188 10/8/2025
2.48.0-alpha.232 180 10/7/2025
2.48.0-alpha.229 212 9/28/2025
2.48.0-alpha.228 164 9/27/2025
2.48.0-alpha.227 149 9/27/2025
2.48.0-alpha.226 200 9/26/2025
2.48.0-alpha.225 204 9/26/2025
Loading failed