Cake.BuildSystems.Module 4.0.0-rc0001

This is a prerelease version of Cake.BuildSystems.Module.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Cake.BuildSystems.Module --version 4.0.0-rc0001                
NuGet\Install-Package Cake.BuildSystems.Module -Version 4.0.0-rc0001                
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="Cake.BuildSystems.Module" Version="4.0.0-rc0001" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Cake.BuildSystems.Module --version 4.0.0-rc0001                
#r "nuget: Cake.BuildSystems.Module, 4.0.0-rc0001"                
#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.
#module nuget:?package=Cake.BuildSystems.Module&version=4.0.0-rc0001&prerelease                

Cake.BuildSystems.Module

A simple Cake module to enhance running from a hosted CI environment

This module will introduce a number of features for running in hosted CI build environments to tightly integrate with the host environment/tools. These modules require no changes to build scripts and instead rely on your Cake script's standard aliases and lifecycle events to integrate your script into the environment.

Build Systems

Currently this module supports:

Azure Pipelines

This applies to TFS, Azure Pipelines, and Azure DevOps Server

  • Individual timeline records for each task
  • Percentage reporting on build progress
  • Integrates Warning and Error logging aliases with the Build Issues summary
  • Includes a Cake Build Summary widget on the build summary page

TeamCity

Tested with TeamCity 10

  • Build Logs are separated (and nested) for each executed task
  • Current/ongoing build status is updated to currently running task
  • Error logging aliases are highlighted in build log output

MyGet

Supports the MyGet Build Service

  • Task records are added to build logs
  • Includes a task summary in the build log
  • Integrates Warning, Error and Fatal logging aliases with the build log and report

Travis CI

This module is affected by a bug in Travis CI's Linux image (see travis-ci/travis-ci#7262)

  • Log folding for the Cake build and for individual tasks

Usage

Each build system's functionality resides in its own module, with Cake.Module.Shared used for shared types. Each module will conditionally register itself, meaning they will only be loaded in their respective CI environments. This means all modules can be deployed with a single codebase without interference.

Installation

Using the pre-processor directives

Add the next following line to your Cake script:

#module nuget:?package=Cake.BuildSystems.Module&version=##see below for note on versioning##

Note: The current version can always be taken from nuget.org).

Currently modules require "bootstrapping", so the first step before running the build is to call dotnet cake --bootstrap (or .\build.ps1 --bootstrap)

Other methods

You can also integrate this module into your own build process, even with a customized build.ps1/build.sh. As long as the Cake.BuildSystems.Module NuGet package is installed into your modules directory (by default ./tools/Modules), cake.exe should pick them up when it runs. Note that you can also change your modules directory using the cake.config file or passing arguments to cake.exe as outlined in the documentation).

Cake.Frosting

While Cake script will load all modules automatically that are present in the modules directory, the same is not the case when using Cake.Frosting.

Before using Cake.Buildsystems.Module you have to reference the NuGet package either by adding <PackageReference Include="Cake.BuildSystems.Module" Version="##see below for note on versioning##" /> to the csproj file of the build project, or by running dotnet add package cake.buildsystems.module in the folder of the build project.

To actually make use of the different modules included in Cake.Buildsystems.Module they need to be registered to the CakeHost. This can be done by using ICakeHost.UseModule<TModule>(). Typically the CakeHost is set up in the Main method of the build project. All modules included in Cake.Buildsystems.Module can be registered, regardless of the underlying build system, as each modules will only be triggered for the intended build system.

An example that registers all currently existing modules from Cake.Buildsystems.Module:

public static int Main(string[] args)
{
    return new CakeHost()
        // Register all modules from Cake.Buildsystems.Module
        .UseModule<AzurePipelinesModule>()
        .UseModule<MyGetModule>()
        .UseModule<TravisCIModule>()
        .UseModule<TeamCityModule>()
        // continue with the "normal" setup of the CakeHost
        .UseContext<BuildContext>()
        .Run(args);
}

Versioning

Note that since modules interact with the internals of Cake, they are tied to a specific version of Cake. The version of Cake supported by the particular module version will always be in the Release Notes of the NuGet package (and therefore also on nuget.org). Make sure to match this version number to the Cake version you're using.

Building

Running build.ps1 with the default target will build all system modules into BuildArtifacts/temp/_PublishedLibraries. Copy this to tools/Modules (you may need to disable the MD5 check if using the bootstrapper) and run your script.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 was computed.  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. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on Cake.BuildSystems.Module:

Repository Stars
dnnsoftware/Dnn.Platform
DNN (formerly DotNetNuke) is the leading open source web content management platform (CMS) in the Microsoft ecosystem.
charlessolar/Aggregates.NET
.NET event sourced domain driven design model via NServiceBus and GetEventStore
StubbleOrg/Stubble
Trimmed down {{mustache}} templates in .NET
Version Downloads Last updated
7.1.0 1,473 9/30/2024
7.0.0 41,133 2/19/2024
6.1.0 6,460 12/2/2023
6.0.0 510 11/23/2023
5.0.0 5,806 8/30/2023
4.2.0 12,921 11/21/2022
4.1.0 63,409 1/4/2022
4.0.0 1,315 11/30/2021
4.0.0-rc0001 680 11/16/2021
3.1.0 8,646 11/16/2021
3.0.3 51,214 4/11/2021
3.0.2 1,310 3/16/2021
3.0.1 10,819 2/20/2021
2.0.1 952 2/18/2021
2.0.0 1,040 2/12/2021
1.0.0 4,842 2/10/2021
0.3.2 40,549 9/4/2019
0.3.1 53,885 9/20/2018
0.3.0 2,306 6/26/2018
0.2.0 4,465 1/4/2018
0.2.0-unstable0020 1,364 6/25/2018
0.2.0-unstable0019 1,373 6/24/2018
0.2.0-unstable0016 1,310 6/24/2018
0.2.0-unstable0013 1,287 6/24/2018
0.2.0-unstable0009 5,585 10/17/2017
0.2.0-unstable0007 1,263 10/6/2017
0.2.0-unstable0006 1,205 10/6/2017
0.2.0-unstable0004 1,805 8/10/2017
0.2.0-unstable0002 1,291 6/23/2017
0.2.0-unstable0000 1,240 5/10/2017
0.1.5 5,018 10/6/2017
0.1.4 6,541 8/10/2017
0.1.3 14,392 6/23/2017
0.1.2 4,659 5/13/2017
0.1.1 1,493 5/10/2017
0.1.0 1,636 4/26/2017
0.1.0-unstable0031 1,297 4/26/2017
0.1.0-unstable0030 1,245 4/26/2017
0.1.0-unstable0029 1,262 4/26/2017