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

Available Modules
| Package | Version |
|---|
| ModularPipelines |  |
| ModularPipelines.Azure |  |
| ModularPipelines.Azure.Pipelines |  |
| ModularPipelines.Cmd |  |
| ModularPipelines.Docker |  |
| ModularPipelines.DotNet |  |
| ModularPipelines.Email |  |
| ModularPipelines.Ftp |
Getting Started
If you want to see how to get started, or want to know more about ModularPipelines, read the Wiki page here
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"));
})
.AddModule<FindNugetPackagesModule>()
.AddModule<UploadNugetPackagesModule>()
.ExecutePipelineAsync();
Custom Modules
public class FindNugetPackagesModule : Module<FileInfo>
{
protected override async Task<ModuleResult<List<File>>?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
{
await Task.Yield();
return context.FileSystem.GetFiles(context.Environment.GitRootDirectory!.Path,
SearchOption.AllDirectories,
path => path.Extension is ".nupkg")
.ToList();
}
}
[DependsOn<FindNugetPackagesModule>]
public class UploadNugetPackagesModule : Module<FileInfo>
{
private readonly IOptions<NuGetSettings> _nugetSettings;
public UploadNugetPackagesModule(IOptions<NuGetSettings> nugetSettings)
{
_nugetSettings = nugetSettings;
}
protected override async Task<ModuleResult<CommandResult>?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
{
var nugetFiles = await GetModule<FindNugetPackagesModule>();
return await context.NuGet()
.UploadPackages(new NuGetUploadOptions(packagePaths.Value!.AsPaths(), new Uri("https://api.nuget.org/v3/index.json"))
{
ApiKey = _nugetSettings.Value.ApiKey,
NoSymbols = true
});
}
}