SlideShare a Scribd company logo
1 of 17
A Piece of Cake
Gary Ewan Park
Email: gary@cakebuild.net
Twitter: @gep13
Web: http://www.gep13.co.uk
C# powered cross platform build automation
What is a build?
Typical Build Workflow
Clean
Build
Unit Tests
Test Coverage
StyleCop FxCop
DupFinder InspectCode
Package Publish
Package Restore
What is Cake?
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/
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
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
Okay, but why do I need it?
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
We build Cake with Cake on…
9 different CI Servers 3 different operating systems
Can’t I just use… MAKEFAKECMakeMSBuildNAntPsakeBau?
Let’s bake some Cake!
Clean
Build
Unit Tests
Test Coverage
StyleCop FxCop
DupFinder InspectCode
Package Publish
Package Restore
Source Code
http://gep13.me/CakeDemos
Demos
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
• Podcasts
o http://msdevshow.com/2016/04/cakebuild-with-mattias-karlsson-and-gary-ewan-park/
o http://www.dotnetrocks.com/?show=1321
• Video
o https://www.youtube.com/watch?v=D0gWjHhJ3IU – Motz Codes Live
o https://vimeo.com/171704581 - NDC Oslo 2016
• 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/

More Related Content

What's hot

Composer and deployer for enterprise
Composer and deployer for enterpriseComposer and deployer for enterprise
Composer and deployer for enterpriseElena Pustovoit
 
Front-end development automation with Grunt
Front-end development automation with GruntFront-end development automation with Grunt
Front-end development automation with Gruntbenko
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebVũ Nguyễn
 
GAE for PHP - 10 Min to Learn
GAE for PHP - 10 Min to LearnGAE for PHP - 10 Min to Learn
GAE for PHP - 10 Min to LearnChen Yi-Huan
 
Grunt training deck
Grunt training deckGrunt training deck
Grunt training deckJames Ford
 
WordPress modern development
WordPress modern developmentWordPress modern development
WordPress modern developmentRoman Veselý
 
Docker for Artisans
Docker for ArtisansDocker for Artisans
Docker for ArtisansRenPardon
 
Autotests introduction - Codeception + PHP Basics
Autotests introduction - Codeception + PHP BasicsAutotests introduction - Codeception + PHP Basics
Autotests introduction - Codeception + PHP BasicsArtur Babyuk
 
deployer, deployment for TYPO3 CMS with ease and fun
deployer, deployment for TYPO3 CMS with ease and fundeployer, deployment for TYPO3 CMS with ease and fun
deployer, deployment for TYPO3 CMS with ease and funPeter Niederlag
 
Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIWilson Su
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsQing-Cheng Li
 
Dev toolkit: Ferramentas para melhorar a qualidade do seu projeto
Dev toolkit: Ferramentas para melhorar a qualidade do seu projetoDev toolkit: Ferramentas para melhorar a qualidade do seu projeto
Dev toolkit: Ferramentas para melhorar a qualidade do seu projetoEduardo Pittol
 

What's hot (19)

Composer and deployer for enterprise
Composer and deployer for enterpriseComposer and deployer for enterprise
Composer and deployer for enterprise
 
Front-end development automation with Grunt
Front-end development automation with GruntFront-end development automation with Grunt
Front-end development automation with Grunt
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
 
GAE for PHP - 10 Min to Learn
GAE for PHP - 10 Min to LearnGAE for PHP - 10 Min to Learn
GAE for PHP - 10 Min to Learn
 
RxNetty
RxNettyRxNetty
RxNetty
 
Grunt training deck
Grunt training deckGrunt training deck
Grunt training deck
 
WordPress modern development
WordPress modern developmentWordPress modern development
WordPress modern development
 
QA to sous-Chef
QA to sous-ChefQA to sous-Chef
QA to sous-Chef
 
Docker for Artisans
Docker for ArtisansDocker for Artisans
Docker for Artisans
 
Autotests introduction - Codeception + PHP Basics
Autotests introduction - Codeception + PHP BasicsAutotests introduction - Codeception + PHP Basics
Autotests introduction - Codeception + PHP Basics
 
Introduction to saucelabs
Introduction to saucelabsIntroduction to saucelabs
Introduction to saucelabs
 
PHP Testing Workshop
PHP Testing WorkshopPHP Testing Workshop
PHP Testing Workshop
 
Me&g@home
Me&g@home Me&g@home
Me&g@home
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Go at Openprovider
Go at OpenproviderGo at Openprovider
Go at Openprovider
 
deployer, deployment for TYPO3 CMS with ease and fun
deployer, deployment for TYPO3 CMS with ease and fundeployer, deployment for TYPO3 CMS with ease and fun
deployer, deployment for TYPO3 CMS with ease and fun
 
Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node API
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser Extensions
 
Dev toolkit: Ferramentas para melhorar a qualidade do seu projeto
Dev toolkit: Ferramentas para melhorar a qualidade do seu projetoDev toolkit: Ferramentas para melhorar a qualidade do seu projeto
Dev toolkit: Ferramentas para melhorar a qualidade do seu projeto
 

Similar to A Piece of Cake - DDD11 - Reading

A Piece of Cake - NDC Oslo 2016
A Piece of Cake - NDC Oslo 2016A Piece of Cake - NDC Oslo 2016
A Piece of Cake - NDC Oslo 2016Gary Park
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the ContinuistPaul Blundell
 
Build Automation? It's a piece of Cake.
Build Automation? It's a piece of Cake.Build Automation? It's a piece of Cake.
Build Automation? It's a piece of Cake.Guilherme Ferreira
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational WorkYung-Yu Chen
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014Oliver N
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Andrea Francia
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017Ortus Solutions, Corp
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentBintang Thunder
 
Cooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesSergey Dzyuban
 
using Chocolatey for application deployments
using Chocolatey for application deploymentsusing Chocolatey for application deployments
using Chocolatey for application deploymentsOwain Perry
 
Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...OSCON Byrum
 
What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?Juan Picado
 
Google test training
Google test trainingGoogle test training
Google test trainingThierry Gayet
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsFrancesco Bruni
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresFrits Van Der Holst
 
Leveraging Continuous Integration For Fun And Profit!
Leveraging Continuous Integration For Fun And Profit!Leveraging Continuous Integration For Fun And Profit!
Leveraging Continuous Integration For Fun And Profit!Jess Chadwick
 

Similar to A Piece of Cake - DDD11 - Reading (20)

A Piece of Cake - NDC Oslo 2016
A Piece of Cake - NDC Oslo 2016A Piece of Cake - NDC Oslo 2016
A Piece of Cake - NDC Oslo 2016
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
 
Tdd is not about testing
Tdd is not about testingTdd is not about testing
Tdd is not about testing
 
Build Automation? It's a piece of Cake.
Build Automation? It's a piece of Cake.Build Automation? It's a piece of Cake.
Build Automation? It's a piece of Cake.
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008
 
Jenkins as a Service
Jenkins as a ServiceJenkins as a Service
Jenkins as a Service
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift Deployment
 
Cooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packages
 
using Chocolatey for application deployments
using Chocolatey for application deploymentsusing Chocolatey for application deployments
using Chocolatey for application deployments
 
Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...
 
What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?
 
Google test training
Google test trainingGoogle test training
Google test training
 
Why Gradle?
Why Gradle?Why Gradle?
Why Gradle?
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and Jenkins
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventures
 
Leveraging Continuous Integration For Fun And Profit!
Leveraging Continuous Integration For Fun And Profit!Leveraging Continuous Integration For Fun And Profit!
Leveraging Continuous Integration For Fun And Profit!
 

More from Gary Park

A Piece of Cake - DDD North
A Piece of Cake - DDD NorthA Piece of Cake - DDD North
A Piece of Cake - DDD NorthGary Park
 
Semantic Versioning with GitVersion - Take 2
Semantic Versioning with GitVersion - Take 2Semantic Versioning with GitVersion - Take 2
Semantic Versioning with GitVersion - Take 2Gary Park
 
Semantic Versioning with GitVersion
Semantic Versioning with GitVersionSemantic Versioning with GitVersion
Semantic Versioning with GitVersionGary Park
 
Getting started with caliburn.micro and windows phone 7
Getting started with caliburn.micro and windows phone 7Getting started with caliburn.micro and windows phone 7
Getting started with caliburn.micro and windows phone 7Gary Park
 
StyleCop breaking down the barriers to entry
StyleCop breaking down the barriers to entryStyleCop breaking down the barriers to entry
StyleCop breaking down the barriers to entryGary Park
 
Mmmm, chocolatey goodness!
Mmmm, chocolatey goodness!Mmmm, chocolatey goodness!
Mmmm, chocolatey goodness!Gary Park
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101Gary Park
 

More from Gary Park (7)

A Piece of Cake - DDD North
A Piece of Cake - DDD NorthA Piece of Cake - DDD North
A Piece of Cake - DDD North
 
Semantic Versioning with GitVersion - Take 2
Semantic Versioning with GitVersion - Take 2Semantic Versioning with GitVersion - Take 2
Semantic Versioning with GitVersion - Take 2
 
Semantic Versioning with GitVersion
Semantic Versioning with GitVersionSemantic Versioning with GitVersion
Semantic Versioning with GitVersion
 
Getting started with caliburn.micro and windows phone 7
Getting started with caliburn.micro and windows phone 7Getting started with caliburn.micro and windows phone 7
Getting started with caliburn.micro and windows phone 7
 
StyleCop breaking down the barriers to entry
StyleCop breaking down the barriers to entryStyleCop breaking down the barriers to entry
StyleCop breaking down the barriers to entry
 
Mmmm, chocolatey goodness!
Mmmm, chocolatey goodness!Mmmm, chocolatey goodness!
Mmmm, chocolatey goodness!
 
Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101
 

Recently uploaded

Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 

Recently uploaded (20)

Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 

A Piece of Cake - DDD11 - Reading

  • 1. A Piece of Cake Gary Ewan Park Email: gary@cakebuild.net Twitter: @gep13 Web: http://www.gep13.co.uk C# powered cross platform build automation
  • 2. What is a build?
  • 3. Typical Build Workflow Clean Build Unit Tests Test Coverage StyleCop FxCop DupFinder InspectCode Package Publish Package Restore
  • 5.
  • 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
  • 9. Okay, but why do I need it?
  • 10. 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
  • 11. We build Cake with Cake on… 9 different CI Servers 3 different operating systems
  • 12. Can’t I just use… MAKEFAKECMakeMSBuildNAntPsakeBau?
  • 13. Let’s bake some Cake! Clean Build Unit Tests Test Coverage StyleCop FxCop DupFinder InspectCode Package Publish Package Restore
  • 15. Demos
  • 16. Questions? Feel free to get in touch Email: gep13@gep13.co.uk Twitter: @gep13 Web: http://www.gep13.co.uk
  • 17. Resources • Cake Documentation o http://cakebuild.net/docs • Podcasts o http://msdevshow.com/2016/04/cakebuild-with-mattias-karlsson-and-gary-ewan-park/ o http://www.dotnetrocks.com/?show=1321 • Video o https://www.youtube.com/watch?v=D0gWjHhJ3IU – Motz Codes Live o https://vimeo.com/171704581 - NDC Oslo 2016 • 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/

Editor's Notes

  1. Cake creates a Directed acyclic graph of each of the tasks Makes sure that each task is only run one
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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.
  7. 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