ModularPipelines 2.13.8
Prefix ReservedSee the version list below for details.
dotnet add package ModularPipelines --version 2.13.8
NuGet\Install-Package ModularPipelines -Version 2.13.8
<PackageReference Include="ModularPipelines" Version="2.13.8" />
paket add ModularPipelines --version 2.13.8
#r "nuget: ModularPipelines, 2.13.8"
// Install ModularPipelines as a Cake Addin #addin nuget:?package=ModularPipelines&version=2.13.8 // Install ModularPipelines as a Cake Tool #tool nuget:?package=ModularPipelines&version=2.13.8
ModularPipelines
Define your pipeline in .NET! Strong types, intellisense, parallelisation, and the entire .NET ecosystem at your fingertips.
Features
- Parallel execution with easy waiting on dependencies if necessary
- 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
- Dynamic console progress reporting (if the console supports interactive mode)
Available Modules
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"));
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 context.NuGet()
.UploadPackages(new NuGetUploadOptions(nugetFiles.Value!.AsPaths(), new Uri("https://api.nuget.org/v3/index.json"))
{
ApiKey = _nugetSettings.Value.ApiKey
});
}
}
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 | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- CliWrap (>= 3.6.4)
- EnumerableAsyncProcessor (>= 1.1.1)
- Initialization.Microsoft.Extensions.DependencyInjection (>= 1.1.2)
- Microsoft.Extensions.DependencyInjection (>= 6.0.1)
- Microsoft.Extensions.Hosting (>= 6.0.1)
- Microsoft.Extensions.Http (>= 6.0.0)
- ModularPipelines.Analyzers (>= 2.13.8)
- Polly (>= 8.0.0)
- Spectre.Console (>= 0.47.0)
- System.Text.Json (>= 8.0.0-rc.2.23479.6)
- vertical-spectreconsolelogger (>= 0.10.1-dev.20230901.27)
- YamlDotNet (>= 13.7.0)
-
net7.0
- CliWrap (>= 3.6.4)
- EnumerableAsyncProcessor (>= 1.1.1)
- Initialization.Microsoft.Extensions.DependencyInjection (>= 1.1.2)
- Microsoft.Extensions.DependencyInjection (>= 6.0.1)
- Microsoft.Extensions.Hosting (>= 6.0.1)
- Microsoft.Extensions.Http (>= 6.0.0)
- ModularPipelines.Analyzers (>= 2.13.8)
- Polly (>= 8.0.0)
- Spectre.Console (>= 0.47.0)
- System.Text.Json (>= 8.0.0-rc.2.23479.6)
- vertical-spectreconsolelogger (>= 0.10.1-dev.20230901.27)
- YamlDotNet (>= 13.7.0)
NuGet packages (24)
Showing the top 5 NuGet packages that depend on ModularPipelines:
Package | Downloads |
---|---|
ModularPipelines.Azure.Pipelines
Helpers for interacting with Azure Pipeline agents. |
|
ModularPipelines.AmazonWebServices
Helpers for interacting with Amazon Web Services. |
|
ModularPipelines.DotNet
Helpers for interacting with dotnet CLI. |
|
ModularPipelines.Git
Helpers for interacting with git. |
|
ModularPipelines.Cmd
Helpers for interacting with the Windows cmd process. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.42.87 | 830 | 10/28/2024 |
2.42.67 | 4,136 | 9/29/2024 |
2.42.59 | 1,624 | 9/19/2024 |
2.42.54 | 459 | 9/19/2024 |
2.42.53 | 378 | 9/19/2024 |
2.42.47 | 1,339 | 9/13/2024 |
2.42.45 | 5,652 | 9/12/2024 |
2.42.9 | 2,058 | 9/5/2024 |
2.42.8 | 887 | 9/4/2024 |
2.42.0 | 553 | 9/4/2024 |
2.41.4 | 561 | 9/3/2024 |
2.41.0 | 680 | 9/3/2024 |
2.40.18 | 552 | 9/2/2024 |
2.40.15 | 461 | 9/2/2024 |
2.40.10 | 540 | 9/2/2024 |
2.40.8 | 474 | 9/2/2024 |
2.40.4 | 1,927 | 8/29/2024 |
2.40.1 | 566 | 8/28/2024 |
2.38.36 | 641 | 8/26/2024 |
2.38.25 | 1,272 | 8/12/2024 |
2.38.2 | 999 | 7/27/2024 |
2.38.1 | 373 | 7/27/2024 |
2.37.9 | 2,004 | 7/14/2024 |
2.37.1 | 73 | 7/14/2024 |
2.36.29 | 981 | 7/5/2024 |
2.36.23 | 870 | 6/30/2024 |
2.36.4 | 1,528 | 6/7/2024 |
2.35.0 | 758 | 6/2/2024 |
2.34.0 | 786 | 5/23/2024 |
2.33.0 | 971 | 5/20/2024 |
2.32.0 | 676 | 5/17/2024 |
2.31.3 | 1,515 | 4/15/2024 |
2.31.0 | 672 | 4/15/2024 |
2.30.9 | 886 | 3/27/2024 |
2.30.5 | 550 | 3/26/2024 |
2.30.3 | 614 | 3/26/2024 |
2.29.32 | 675 | 3/26/2024 |
2.29.22 | 1,049 | 3/8/2024 |
2.29.15 | 827 | 3/1/2024 |
2.29.11 | 794 | 2/27/2024 |
2.29.9 | 873 | 2/26/2024 |
2.29.0 | 755 | 2/25/2024 |
2.28.0 | 788 | 2/23/2024 |
2.27.12 | 955 | 2/15/2024 |
2.27.9 | 699 | 2/14/2024 |
2.27.3 | 958 | 2/8/2024 |
2.27.0 | 802 | 2/8/2024 |
2.26.8 | 1,073 | 2/4/2024 |
2.26.0 | 888 | 1/29/2024 |
2.25.0 | 827 | 1/28/2024 |
2.24.9 | 986 | 1/25/2024 |
2.24.4 | 795 | 1/25/2024 |
2.24.1 | 1,080 | 1/22/2024 |
2.22.0 | 978 | 1/18/2024 |
2.21.12 | 916 | 1/18/2024 |
2.21.9 | 891 | 1/18/2024 |
2.21.4 | 1,014 | 1/13/2024 |
2.21.0 | 848 | 1/12/2024 |
2.20.2 | 928 | 1/11/2024 |
2.19.2 | 1,067 | 12/27/2023 |
2.19.0 | 743 | 12/26/2023 |
2.18.8 | 567 | 12/26/2023 |
2.18.0 | 1,101 | 12/24/2023 |
2.17.25 | 659 | 12/22/2023 |
2.17.20 | 732 | 12/5/2023 |
2.17.0 | 768 | 11/24/2023 |
2.16.2 | 603 | 11/23/2023 |
2.16.0 | 555 | 11/23/2023 |
2.15.24 | 566 | 11/22/2023 |
2.15.21 | 553 | 11/22/2023 |
2.15.17 | 596 | 11/20/2023 |
2.15.3 | 612 | 11/9/2023 |
2.15.0 | 521 | 11/8/2023 |
2.14.9 | 557 | 11/6/2023 |
2.14.7 | 574 | 11/6/2023 |
2.14.1 | 534 | 11/6/2023 |
2.13.63 | 560 | 10/29/2023 |
2.13.47 | 636 | 10/20/2023 |
2.13.8 | 502 | 10/13/2023 |
2.13.5 | 515 | 10/13/2023 |
2.12.15 | 509 | 10/10/2023 |
2.12.11 | 583 | 10/10/2023 |
2.12.5 | 572 | 10/6/2023 |
2.12.1 | 544 | 10/4/2023 |
2.11.12 | 549 | 10/1/2023 |
2.11.11 | 508 | 9/30/2023 |
2.11.9 | 538 | 9/30/2023 |
2.11.4 | 553 | 9/30/2023 |
2.11.0 | 569 | 9/29/2023 |
2.10.6 | 623 | 9/29/2023 |
2.10.0 | 514 | 9/28/2023 |
2.9.0 | 528 | 9/28/2023 |
2.8.23 | 465 | 9/26/2023 |
2.8.12 | 504 | 9/24/2023 |
2.8.4 | 467 | 9/24/2023 |
2.8.0 | 481 | 9/24/2023 |
2.7.10 | 509 | 9/23/2023 |
2.7.6 | 474 | 9/22/2023 |
2.6.0 | 466 | 9/19/2023 |
2.5.11 | 481 | 9/16/2023 |
2.5.5 | 452 | 9/14/2023 |
2.5.2 | 472 | 9/14/2023 |
2.5.0 | 433 | 9/14/2023 |
2.4.0 | 476 | 9/12/2023 |
2.3.2 | 525 | 9/11/2023 |
2.3.0 | 497 | 9/11/2023 |
2.2.0 | 492 | 9/11/2023 |
2.0.8 | 553 | 9/7/2023 |
2.0.5 | 514 | 9/6/2023 |
2.0.0 | 555 | 9/6/2023 |
1.9.38 | 538 | 9/5/2023 |
1.9.36 | 516 | 9/5/2023 |
1.9.35 | 491 | 9/4/2023 |
1.9.31 | 486 | 9/4/2023 |
1.9.28 | 484 | 9/4/2023 |
1.9.22 | 497 | 9/3/2023 |
1.9.17 | 538 | 9/3/2023 |
1.9.15 | 467 | 9/3/2023 |
1.9.8 | 504 | 9/1/2023 |
1.9.6 | 500 | 9/1/2023 |
1.9.4 | 525 | 9/1/2023 |
1.9.1 | 503 | 8/31/2023 |
1.8.22 | 544 | 8/29/2023 |
1.8.18 | 535 | 8/29/2023 |
1.8.8 | 550 | 8/24/2023 |
1.8.6 | 505 | 8/24/2023 |
1.7.0 | 528 | 8/22/2023 |
1.6.3 | 594 | 8/17/2023 |
1.6.2 | 602 | 8/17/2023 |
1.6.1 | 622 | 8/17/2023 |
1.6.0 | 614 | 8/17/2023 |
1.5.5 | 600 | 8/15/2023 |
1.5.0 | 610 | 8/14/2023 |
1.4.34 | 617 | 8/11/2023 |
1.4.33 | 583 | 8/11/2023 |
1.4.31 | 607 | 8/11/2023 |
1.4.29 | 591 | 8/10/2023 |
1.4.22 | 609 | 8/10/2023 |
1.4.21 | 618 | 8/10/2023 |
1.4.20 | 604 | 8/10/2023 |
1.4.18 | 571 | 8/7/2023 |
1.4.17 | 585 | 8/7/2023 |
1.4.15 | 602 | 8/7/2023 |
1.4.14 | 656 | 8/2/2023 |
1.4.12 | 579 | 8/2/2023 |
1.4.11 | 602 | 7/19/2023 |
1.4.10 | 633 | 7/19/2023 |
1.4.9 | 608 | 7/18/2023 |
1.4.8 | 576 | 7/18/2023 |
1.4.6 | 589 | 7/13/2023 |
1.4.5 | 570 | 7/11/2023 |
1.4.4 | 558 | 7/10/2023 |
1.4.3 | 602 | 7/10/2023 |
1.4.2 | 609 | 7/7/2023 |
1.4.1 | 596 | 7/6/2023 |
1.4.0 | 599 | 7/6/2023 |
1.3.17 | 639 | 7/5/2023 |
1.3.15 | 653 | 7/5/2023 |
1.3.14 | 551 | 7/5/2023 |
1.3.13 | 608 | 7/5/2023 |
1.3.12 | 631 | 6/30/2023 |
1.3.11 | 521 | 6/30/2023 |
1.3.8 | 565 | 6/30/2023 |
1.3.7 | 558 | 6/30/2023 |
1.3.6 | 587 | 6/30/2023 |
1.3.5 | 535 | 6/30/2023 |
1.3.4 | 568 | 6/30/2023 |
1.3.3 | 527 | 6/29/2023 |
1.3.2 | 573 | 6/29/2023 |
1.3.1 | 554 | 6/29/2023 |
1.3.0 | 548 | 6/29/2023 |
1.2.0 | 588 | 6/29/2023 |
1.1.0 | 575 | 6/29/2023 |
1.0.1 | 573 | 6/29/2023 |
0.3.26 | 556 | 6/29/2023 |
0.2.0 | 555 | 6/29/2023 |
0.1.1-initial-2-0027 | 471 | 6/8/2023 |
0.1.1-initial-2-0025 | 491 | 6/8/2023 |
0.1.1-initial-2-0024 | 459 | 6/8/2023 |
0.1.0 | 593 | 6/28/2023 |
0.1.0-initial-2-19 | 502 | 6/8/2023 |
0.1.0-initial-2-17 | 354 | 6/8/2023 |
0.1.0-initial-2-16 | 445 | 6/8/2023 |
0.1.0-initial-2-0023 | 438 | 6/8/2023 |
0.0.1-alpha03 | 241 | 5/29/2023 |
0.0.1-alpha02 | 244 | 5/28/2023 |
0.0.1-alpha01 | 235 | 5/28/2023 |