Cake.Frosting.PleOps.Recipe
1.0.0
See the version list below for details.
dotnet add package Cake.Frosting.PleOps.Recipe --version 1.0.0
NuGet\Install-Package Cake.Frosting.PleOps.Recipe -Version 1.0.0
<PackageReference Include="Cake.Frosting.PleOps.Recipe" Version="1.0.0" />
paket add Cake.Frosting.PleOps.Recipe --version 1.0.0
#r "nuget: Cake.Frosting.PleOps.Recipe, 1.0.0"
// Install Cake.Frosting.PleOps.Recipe as a Cake Addin
#addin nuget:?package=Cake.Frosting.PleOps.Recipe&version=1.0.0
// Install Cake.Frosting.PleOps.Recipe as a Cake Tool
#tool nuget:?package=Cake.Frosting.PleOps.Recipe&version=1.0.0
PleOps Cake
<p align="center"> <a href="https://www.nuget.org/packages/Cake.Frosting.PleOps.Recipe"> <img alt="Stable version" src="https://img.shields.io/nuget/v/Cake.Frosting.PleOps.Recipe?label=nuget.org&logo=nuget" /> </a> <a href="https://dev.azure.com/benito356/NetDevOpsTest/_packaging?_a=feed&feed=PleOps"> <img alt="GitHub commits since latest release (by SemVer)" src="https://img.shields.io/github/commits-since/pleonex/PleOps.Cake/latest?sort=semver" /> </a> <a href="https://github.com/pleonex/PleOps.Cake/workflows/Build%20and%20release"> <img alt="Build and release" src="https://github.com/pleonex/PleOps.Cake/workflows/Build%20and%20release/badge.svg?branch=main&event=push" /> </a> <a href="https://choosealicense.com/licenses/mit/"> <img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat" /> </a> </p>
Complete DevOps workflow and best-practices for .NET projects based on Cake.
- ♻️ DevOps best practices for a software project
- 🔧 Build, test and release tasks for .NET projects and documentation sites
- 📚 Documentation explaining the workflow
- 📋 Template repository ready to use
Tech stack
- Projects: C# / .NET
- Documentation: DocFX, GitHub page
- CI: GitHub Actions
- Release deployment: NuGet feeds, GitHub
Get started
Check out the documentation site to start learning how to use the library.
Feel free to ask any question in the project discussion.
Usage
The project ships a NuGet library with Cake Frosting tasks:
Cake.Frosting.PleOps.Recipe
:
To use it, create a new console application with the Cake Frosting template, add a reference to this recipe NuGet and its tasks will be available to use.
return new CakeHost()
.AddAssembly(typeof(Cake.Frosting.PleOps.Recipe.PleOpsBuildContext).Assembly)
.UseContext<Cake.Frosting.PleOps.Recipe.PleOpsBuildContext>()
.UseLifetime<BuildLifetime>()
.Run(args);
[TaskName("Default")]
[IsDependentOn(typeof(Cake.Frosting.PleOps.Recipe.Common.SetGitVersionTask))]
[IsDependentOn(typeof(Cake.Frosting.PleOps.Recipe.Common.CleanArtifactsTask))]
[IsDependentOn(typeof(Cake.Frosting.PleOps.Recipe.Dotnet.DotnetTasks.BuildProjectTask))]
public sealed class DefaultTask : FrostingTask
{
}
[!TIP]
Find a detailed setup guide in the documentation site.
Preview releases
Preview releases are in an
Azure DevOps NuGet feed.
Add a nuget.config
file in the repository root directory with the following
content:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear/>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="PleOps-Preview" value="https://pkgs.dev.azure.com/benito356/NetDevOpsTest/_packaging/PleOps/nuget/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
<packageSource key="PleOps-Preview">
<package pattern="Cake.Frosting.PleOps.Recipe" />
</packageSource>
</packageSourceMapping>
</configuration>
Build
The project requires to build .NET 8.0 SDK.
To build, test and generate artifacts run:
# Build and run tests (with code coverage!)
dotnet run --project build/orchestrator
# (Optional) Create bundles (nuget, zips, docs)
dotnet run --project build/orchestrator -- --target=Bundle
To build (and test) the recipe against the examples run:
dotnet run --project src/Cake.Frosting.PleOps.Samples.BuildSystem
Release
Create a new GitHub release with a tag v{Version}
(e.g. v2.4
) and that's it!
This triggers a pipeline that builds and deploy the project.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- Cake.Frosting (>= 4.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
## v1.0.0 (November 23, 2023)
This release brings a new design of the Cake recipe using _Cake Frosting_ and full project documentation.
## Documentation
Find the new documentation in <https://www.pleonex.dev/PleOps.Cake>. It includes:
- [Detailed setup guide](https://www.pleonex.dev/PleOps.Cake/docs/getting-started/tutorial.html)
- [Checklist](https://www.pleonex.dev/PleOps.Cake/docs/getting-started/setup-checklist.html)
- [Pipeline workflows](https://www.pleonex.dev/PleOps.Cake/docs/workflows/pipeline.html)
- Strategies for [versioning](https://www.pleonex.dev/PleOps.Cake/docs/workflows/versioning.html) and [gitflow](https://www.pleonex.dev/PleOps.Cake/docs/workflows/gitflow.html)
- Full [recipe](https://www.pleonex.dev/PleOps.Cake/docs/recipe/overview.html) documentation with task description and build context properties.
## Cake recipe
The previous NuGet is deprecated and there won't be new releases. The new Frosting based recipes can be found in the NuGet: `Cake.Frosting.PleOps.Recipe`. To use the recipe create a regular C# console application or use dotnet-script. Instructions in the new docs.
This new recipe brings the following changes:
- Support .NET 8 and Cake 4
- Project setup/definition (previous task `Define-Project`) now it happens in the build lifetime setup class
- New build context extensible
- New tasks grouped per technology
- Added incremental build concept to prevent cleaning artifacts dir each time
- New task to restore dotnet tools
- New task to set the version from GitVersion
- Deliveries paths are serialized into a json file to get deterministic behavior instead of folder and extension conventions
- Upgrade to new DocFx dotnet-tool CLI
- Publish .NET apps from user provided information in build context rather parsing .csproj
- Pack .NET libraries now from solution, customizable via `<IsPackable>` tags in .csproj instead of specifying projects manually
- New task to restore .NET dependencies
- GitHub repo info is read from environment variable rather parsing `git remote`
### Limitations
- It doesn't generate preview release notes unless there is a draft GitHub release
- It doesn't create anymore draft releases
- It doesn't rename or close GitHub milestones
- It doesn't push docs to GitHub page. Use the official GitHub Action task
## What's Changed
* :sparkles: New recipe design with Cake Frosting by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/67, https://github.com/pleonex/PleOps.Cake/pull/68
* ✨ New documentation theme and format by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/69
* ⬆️ Review and update C# style and coding rules by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/70
* 🔼 Migrate to .NET 8.0 by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/71
* 🔧 Refactor workflow into reusable files by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/72
* 📚 Document project by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/73, https://github.com/pleonex/PleOps.Cake/pull/75
* 🐛 Small fixes and improvements by @pleonex in https://github.com/pleonex/PleOps.Cake/pull/74
**Full Changelog**: https://github.com/pleonex/PleOps.Cake/compare/v0.8.0...v1.0.0