Post on 23-Jan-2018
Having your Cake, and eating it too!
Gary Ewan Park
Email: gep13@gep13.co.uk
Twitter: @gep13
Web: http://www.gep13.co.uk
A Definition…
“Cake (C# Make) is a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages.”
Reference
http://cakebuild.net/
Typical Build Workflow
Clean
Build
Unit Tests
Test Coverage
StyleCop FxCop
DupFinder InspectCode
Package Publish
Package Restore
How does Cake work?
build.cake cake.exe
#tool#addin#reference#load
Roslynor
Mono
nupkgExeMsiTests
Anything you can think of
ArgumentsConfiguration
What Tools am I able to use with Cake?
Chocolatey
DNU
DotCover
DupFinder
Fixie
GitLink GitReleaseManager
GitReleaseNotes
GitVersion
ILMerge
ILRepack InspectCode
MSBuild
MSTest
NSIS
NUnit
OctopusDeploy
OpenCover
ReportGenerator
ReportUnit
Roundhouse
SignTool
SpecFlow
TextTransform
WiX
XBuild
XUnit
IISXamarin
PowerShell
Gitter
Kudu
CMake
TopShelf
Yaml
Docker
Gulp
S3
FluentMigrator
EC2
XCode
Json
VsCode
WebDeploy
CloudFront
ReSharperReportsElasticLoadBalancing
DocFxWyam
StyleCop
StrongNameTool
Orchard
XdtTransform
Npm
Slack
What are the main philosophies of Cake?
• Non intrusive
• It should “just” work
• Be highly configurable
• No binaries should be checked into your repository
• Easy to implement your own tools
• Build should behave the same way regardless of
• Operating System
• Environment
Let’s bake some Cake!
Clean
Build
Unit Tests
Test Coverage
StyleCop FxCop
DupFinder InspectCode
Package Publish
Package Restore
Questions?
Feel free to get in touch
Email: gep13@gep13.co.uk
Twitter: @gep13
Web: http://www.gep13.co.uk
Resources
• Cake Documentation
o http://cakebuild.net/docs
• MS Dev Show Podcast Episode
o http://msdevshow.com/2016/04/cakebuild-with-mattias-karlsson-and-gary-ewan-park/
• Motz Codes Live: Continuous Integration for Libraries with Jon Dick aka Redth
o https://www.youtube.com/watch?v=D0gWjHhJ3IU
• Source Code
o https://github.com/cake-build/cake
• Blog Posts
o Moving to Cake (C# Make) – Laurent Kempe http://laurentkempe.com/2016/04/05/Moving-to-Cake-CSharp-Make/