On Saturday 1st October 2016, I presented a talk at DDD North entitled "A Piece of Cake - C# powered cross platform build automation"
The source code associated with this talk can be found here: https://github.com/gep13/CakeDemos
6. 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/
7. How does Cake work?
build.cake cake.exe
#tool
#addin
#reference
#load
Roslyn
or
Mono
nupkg
Exe
Msi
Tests
Anything you can think of
Arguments
Configuration
8. 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
IIS
Xamarin
PowerShell
Gitter
Kudu
CMake
TopShelf
Yaml
Docker
Gulp
S3
FluentMigrator
EC2
XCode
Json
VsCode
WebDeploy
CloudFront
ReSharperReports
ElasticLoadBalancing
DocFx
Wyam
StyleCop
StrongNameTool
Orchard
XdtTransform
Npm
Slack
Cake creates a Directed acyclic graph of each of the tasks
Makes sure that each task is only run one
Instead, we are here to talk about Cake, the cross platform build and orchestration tool.
Full disclosure, I am one of three maintainers of the Cake project on GitHub
Some history/information
- Open Source
- Supports the most common tools out of the box
- Cross Platform (Windows OS X Linux)
- Small but slowly growing
- almost 600 Pull Requests
- almost 80 Contributors
- almost 70 third party addins
- 767 Stars
- Over 100000 downloads
Built using Roslyn, and the Mono Compiler, allowing execution on both Windows, OS X and Linux
Script Processing to make sure things work the same on both
Black ones are built in and ship with Cake
Blue ones are those that have been created by the community
There are aliases that span across
* Unit Testing Frameworks
* Test Coverage
* Static Code Analysis
* JavaScript Runners
* Documentation Generators
* Chat Systems
* Publishing
Talk about compiling directly out of Visual Studio
- You might run some Unit Tests after the build has completed
- You might run some static analysis tools within Visual Studio
- You might manually create and deploy a package once you know that everything works
This is prone to human error, and not repeatable or maintainable as the complication of the application increases
You can use any of these that you want.
Fully agree with the concept of a polyglot developer, but from a strictly pragmatic point of view, writing a build script in the same language as you are developing, makes a lot of sense.
Mention laptop setup
Working in offline mode
All commands are still executed as they would be if doing it in reallife
Only slightly modified bootstrapper and configuration file
Show Visual Studio solution, and explain project structure
Can’t emphasise enough how much they make it happen.
Platinum Sponsors:
University of Leeds – Venue & support.
DevExpress – Teas & Coffees.
Black Marble – organisation, design etc.
Sage – speaker shirts & general platinum sponsor.
Sonoco Trident – general platinum sponsor.
NDC – general platinum - visit their stand!
Equal Experts – pre-DDD North dinner (speakers, helpers & friends)
Silver Sponsors
X-lab
Github
Bronze Sponsors
JetBrains – licenses!
O’Reilly – vouchers!
Huddle – agendas
Microsoft Press – books & vouchers!