![]() |
VOOZH | about |
dotnet add package Candoumbe.Pipelines --version 2.0.1
NuGet\Install-Package Candoumbe.Pipelines -Version 2.0.1
<PackageReference Include="Candoumbe.Pipelines" Version="2.0.1" />
<PackageVersion Include="Candoumbe.Pipelines" Version="2.0.1" />Directory.Packages.props
<PackageReference Include="Candoumbe.Pipelines" />Project file
paket add Candoumbe.Pipelines --version 2.0.1
#r "nuget: Candoumbe.Pipelines, 2.0.1"
#:package Candoumbe.Pipelines@2.0.1
#addin nuget:?package=Candoumbe.Pipelines&version=2.0.1Install as a Cake Addin
#tool nuget:?package=Candoumbe.Pipelines&version=2.0.1Install as a Cake Tool
👁 GitHub Workflow Status (main)
👁 GitHub Workflow Status (develop)
👁 GitHub raw issues
👁 Nuget
A starter development kit to script your CI/CD using Nuke.
⭐ If you like or are using this project please give it a star. Thanks! ⭐
This project adheres to semantic versioning. Major version zero (0.y.z) is for initial development.
Anything MAY change at any time.
The public API SHOULD NOT be considered stable.
Most of the time, to set up a CI/CD for your .NET project, you have two options :
This approach is nice and helpful to get started. But most of the time, the history of changes made to the pipeline is separated from the history of the code base.
Most of the time in YAML, the file that describes the steps required to build a project is provider specific. So even though you can write YAML, knowing how to write an Azure DevOps pipeline does not really help when it comes to writing a pipeline for GitHub Actions.
Nuke is a library written by Matthias Koch that helps to create builds.
This project offers an opinionated way at writing pipelines by giving a set of components (more on that later) with the following benefits :
To get started you'll have to :
dotnet nuke :setup to set up your pipeline projectNuke.Common nuget dependency with Candoumbe.PipelinesFrom this point, you should be able to customize your pipeline by adding [components] \o/.
This library is built on top of Nuke, an open source library started by Matthias Koch. It provides a set of components that, when added to a pipeline, bring clever default features.
Components are C# interfaces that come with a default / opinionated implementation. They are grouped in namespaces which correspond to their main task.
Candoumbe.Pipelines.Components : contains the core components needed for general required tasks.Let's say you have the following Build.cs class as your starting pipeline
class Build : NukeBuild
{
public static void Main() => Execute<Build>(x => x.Compile());
Target Compile => _ => _
.Executes(() => {
// Code omitted for brievity
});
}
you can get rid of the Compile property and use the component instead.
class Build : NukeBuild, ICompile
{
public static void Main() => Execute<Build>(x => ((ICompile)x).Compile());
}
In the example above, the build pipeline benefits from the component which comes with a default implementation of the Compile target.
Candoumbe.Pipelines.Components.WorkflowsThis workspace contains components related to branching strategies and providing tools that can help normalize how teams works.
and are two main components that helps handle branching strategy locally.
Some components are used to set the workflow to use throughout a repository and streamline the work of a developer and a team.
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart
A((start)) --> B[["./build feature"]]
A -->O[["./build hotfix"]]
O --> P{is on 'hotfix' branch ?}
P -- yes --> finish-hotfix
P -- no --> Q{{computes semver}}
Q --> R{{creates 'hotfix/<semver>' branch}}
R --> S[work on your hotfix]
S --> T{Are you done}
T -- yes --> O
T -- not yet --> S
B --> C{is on 'feature/*' branch ?}
C -- yes --> finish-feature
C -- no --> D[Creates a new feature/* branch]
D --> E[Work on your feature]
E --> F{Are you done ?}
F --yes --> B
F -- not yet --> E
subgraph finish-feature[Finish feature]
N{{Merges changes to develop branch}}
end
subgraph finish-hotfix[Finish hotfix]
Y{{Merges changes to main branch}}
end
finish-hotfix --> Z
finish-feature --> Z((end))
using or components, the library can automagically create a pull request once you're done working on your feature / hotfix.
class Build : NukeBuild, IGitFlowWithPullRequest
{
public static void Main() => Execute<Build>(x => x.Compile());
Target Compile => _ => _
.Executes(() => {
// Code omitted for brievity
});
}
or
class Build : NukeBuild, IGitHubFlowWithPullRequest
{
public static void Main() => Execute<Build>(x => x.Compile());
Target Compile => _ => _
.Executes(() => {
// Code omitted for brievity
});
}
depending on the workflow that better suits you.
To start working on a release, simply call ./build.cmd release and your pipeline will trigger the appropriate commands to get you started.
Calling ./build.cmd release from the release branch created will trigger
the appropriate command to finish your release.
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart
A((start)) --> B["./build release"]
B --> C{is on 'release/*' branch ?}
C -- no --> create-branch
subgraph create-branch[Create a release branch]
G{{computes semver version}} --> H{{create release/version branch}}
end
create-branch --> D[Work on your release]
C -- yes --> finish-release
D --> E{Are you done ?}
E --yes --> B
E -- not yet --> D
subgraph finish-release[Finish release]
J[Update changelog] --> K{{validate changelog modifications}}
K --> M{{create tag}}
M --> N{{Merges changes to main branch}}
N --> O{{Merges changes to develop branch}}
end
finish-release --> Z((end))
Candoumbe.Pipelines.Components.NuGetContains classes required to push nuget packages to repositories.
Candoumbe.Pipelines.Components.GitHubContains classes and components needed to interact with GitHub repositories (creating pull requests).
Candoumbe.Pipelines.Components.DockerContains classes and components needed to build and push docker images.
⚠️ Some components may require additional packages and/or tools to be installed in order to be fully functional.
For example, the default implementation of the component uses Stryker to run mutation tests.
You can refer to Nuke's documentation to see how to reference required tools.
You can contribute by opening an issue or submitting a feature request.
PRs are welcome, check out the if you want to contribute to this project !
| 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 was computed. 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. |
Showing the top 2 NuGet packages that depend on Candoumbe.Pipelines:
| Package | Downloads |
|---|---|
|
Candoumbe.Pipelines.Components.AzureDevOps
Set of [Nuke](https://nuke.build) components that help integrating with [Azure DevOps](https://dev.azure.com/) ecosystem.. |
|
|
SocialiteNET
OAuth authentication with Bitbucket, Facebook, GitHub, GitLab, Google, LinkedIn, Slack, Twitch, and X becomes expressive and fluid with Socialite. It manages nearly every boilerplate social authentication code that you are afraid to write. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-rc.43 | 62 | 6/13/2026 |
| 3.0.0-rc.42 | 63 | 6/10/2026 |
| 2.0.1 | 1,392 | 5/23/2026 |
| 2.0.1-fix.1 | 57 | 4/26/2026 |
| 2.0.0 | 5,388 | 12/13/2025 |
| 2.0.0-rc.25 | 137 | 12/12/2025 |
| 1.3.0 | 1,245 | 11/12/2025 |
| 1.2.1 | 1,419 | 9/14/2025 |
| 1.2.1-fix.5 | 160 | 9/13/2025 |
| 1.2.1-fix.2 | 244 | 9/10/2025 |
| 1.2.0 | 432 | 9/9/2025 |
| 1.1.0 | 258 | 9/9/2025 |
| 1.1.0-rc.20 | 184 | 9/8/2025 |
| 1.1.0-rc.19 | 181 | 9/6/2025 |
| 1.1.0-alpha.9 | 328 | 8/28/2025 |
| 1.0.1 | 364 | 8/27/2025 |
| 1.0.0-rc.25 | 290 | 8/19/2025 |
| 0.13.4 | 838 | 8/18/2025 |
| 0.13.4-fix.4 | 332 | 8/5/2025 |
| 0.13.4-beta.3 | 251 | 8/5/2025 |
### 🚨 Fixes
• IUnitTest component should detect when Microsoft.Testing.Platform and generate the right CLI ([#247](https://github.com/candoumbe/Pipelines/issues/247))
Full changelog at https://github.com/candoumbe/Pipelines/blob/main/CHANGELOG.md