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
Errorlogging 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.
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
Errorlogging aliases are highlighted in build log output
MyGet Build Services
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
Fatallogging aliases with the build log and report
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