I've just published a new module for Cake: Cake.BuildSystems.Module

This module, when included in your build environment, silently inserts itself into your Cake build and enhances it with CI Superpowers! Okay, so they're not super powers, but they're very cool!

What does it do?

When the module detects it is running in a supported environment (see below), it will replace some of Cake's internals, such as the engine, log and reporter, replacing them with versions that act exactly the same but that also integrate with the current CI provider.

This means you'll get things like per-task time records, improved status messages, highlighted logs, enhanced error reporting and other extras.

Even better? Using this module requires absolutely no changes to your scripts! Since the module is integrated into Cake itself, you don't need to change a thing!

Where can I use it?

Currently, the module has two properly implemented and tested providers and two experimental providers.

Team Foundation Build

This module supports both TFS and VSTS, and will provides the following enhancements:

Individual timeline records for each task

Percentage reporting on build progress

Integrates Warning and Error logging aliases with the Build Issues summary

and logging aliases with the Build Issues summary Includes a Cake Build Summary widget on the build summary page

If you are using the Cake extension for VSTS/TFS, you will need to add a NuGet Install step first to install the module before the Cake step runs.

TeamCity

This module has been tested against TeamCity 10 and provides the following enhancements:

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 Build Services

Experimental

This module integrates to the MyGet Build Services and provides the following enhancements:

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

Experimental

This module integrates to Travis CI's build log and provides code folding for the Cake build and individual tasks. At this time, this works best for macOS builds as Linux builds are affected by a bug in Travis CI.

How do I use it?

You can install this module into your build and it won't change your current builds: the module goes to great lengths to preserve existing behaviour and will only load itself when it detects a supported CI environment.

If you're using the latest bootstrapper example (always available in this repo), you can simply add a tools/Modules/packages.config file and the bootstrapper will install it for you.

Otherwise, just make sure the NuGet package is installed to your tools/Modules folder and the module should kick in.

As always, more details are available from the README.

How do I contribute?

The module is fully open-source and has been published on GitHub for anyone to contribute to. I always accept bugs, feedback, feature requests and PRs on GitHub.

Build and Release status