SlideShare a Scribd company logo
FAKE (F# MAKE) &
AUTOMATION
@sergey_tihon
2014
DO YOU HAVE A BUILD SCRIPT
ON YOUR PROJECT?
WHAT DO YOU USE FOR
BUILD AUTOMATION?
DID YOU WRITE BUILD
SCRIPTS?
MSBuildRAKE
MAKE
Build Tools Roundup For .NET Systems
http://lostechies.com/derickbailey/2010/05/10/build-tools-for-net-systems-it-s-no-longer-a-question-of-features/
FAKE - F# MAKE -
HTTP://FSHARP.GITHUB.IO/FAKE/
Steffen
Forkmann
@sforkmann
F# and Dynamics NAV developer,
blogger and sometimes speaker.
Creator of FAKE - F# Make and
NaturalSpec. MVP for F#.
GETTING STARTED WITH
FAKE
HTTP://FSHARP.GITHUB.IO/FAKE/GETTINGSTARTED.HTML
EVERYTHING IS ON NUGET
HELLO WORLD SAMPLE
CLEANING THE LAST BUILD
OUTPUT
COMPILING THE APPLICATION
FILESETS
COMPILING TEST PROJECTS
UNITTESTS
ADDING FXCOP
GENERATE ASSEMBLYINFO FILES
CREATING NUGET PACKAGE
AWESOME DOCUMENTATION
http://fsharp.github.io/FAKE/apidocs/
WHO USE FAKE?
• Octokit by GitHub
• msu solutions GmbH
• E.On Global Commodities UK
• Akka.net
• Portable.Licensing
• FeatureSwitcher
• Machine.Fakes
• Enticify
• SolrNet
• Carbonite
• FSharp.Compiler.Service
• Visual F# Power Tools
• Deedle by BlueMountainCapital
• fsharpx
• FSharp.Data
• FSharp.Charting
• NuGetPlus
• FsPickler
http://fsharp.github.io/FAKE/users.html
BUILDING GREAT OPEN-SOURCE
LIBRARIES
HTTP://TOMASP.NET/BLOG/20
13/GREAT-OPEN-SOURCE/
Tomas Petricek
@tomaspetricek
MVP, F# enthusiast, book author and a
PhD student at the University of
Cambridge.
EVERY GOOD OPEN-SOURCE LIBRARY NEEDS TO
HAVE:
1. UNIT TESTS - at least for non-trivial parts of code and to prevent
regressions
2. RANDOM TESTING - for tricky parts of code, it is useful and helps
checking unexpected cases
3. NUGET PACKAGE - or other up-to-date and easy to use release
4. DOCUMENTATION - for public API, at least when the API is not
super simple
5. TUTORIALS & WALKTHROUGHS - showing how to call the API
in a larger-scale scenarios
6. AUTOMATION - when releasing a new version, all of the above
should happen with "one click" and documentation with tutorials
must be up-to-date and correct.
FAKE CAN HELP YOU WITH:
1. UNIT TESTS - at least for non-trivial parts of code and to prevent
regressions
2. RANDOM TESTING - for tricky parts of code, it is useful and helps
checking unexpected cases
3. NUGET PACKAGE - or other up-to-date and easy to use release
4. DOCUMENTATION - for public API, at least when the API is not
super simple
5. TUTORIALS & WALKTHROUGHS - showing how to call the API
in a larger-scale scenarios
6. AUTOMATION - when releasing a new version, all of the above
should happen with "one click" and documentation with tutorials
must be up-to-date and correct.
FOR THOSE WHO INTERESTED IN CORRECTNESS
1. UNIT TESTS - at least for non-trivial parts of code and to prevent
regressions
2. RANDOM TESTING - for tricky parts of code, it is useful and helps
checking unexpected cases
3. NUGET PACKAGE - or other up-to-date and easy to use release
4. DOCUMENTATION - for public API, at least when the API is not
super simple
5. TUTORIALS & WALKTHROUGHS - showing how to call the API
in a larger-scale scenarios
6. AUTOMATION - when releasing a new version, all of the above
should happen with "one click" and documentation with tutorials
must be up-to-date and correct.
http://www.meetup.com/fsharpminsk/events/1817675
52/
FSharp.ProjectScaffo
ld
Demo
HTTPS://github.com/fsprojects/FSharp.ProjectScaf
fold
QUESTIONS?
THANK YOU!
Ask me @sergey_tihon
Ask FAKE @fsharpMake
Ask about #FSharp

More Related Content

PDF
Democratic Deploys at Airbnb
PDF
4 Ways to Speed Up Your Mobile App Dev Daily Grind
PDF
Work with Developers for Fun and Progress - AppSec California
PDF
Write less, achieve meh - HTML5DevConf 2014
PDF
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
PPTX
DevOps + MongoDB Serverless = 
PDF
Preparing for the WebGeek DevCup
PDF
Building CI/CD Pipelines for MongoDB Realm Apps
Democratic Deploys at Airbnb
4 Ways to Speed Up Your Mobile App Dev Daily Grind
Work with Developers for Fun and Progress - AppSec California
Write less, achieve meh - HTML5DevConf 2014
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
DevOps + MongoDB Serverless = 
Preparing for the WebGeek DevCup
Building CI/CD Pipelines for MongoDB Realm Apps

What's hot (20)

PDF
Swift iOS Architecture with FLUX in mind. UA Mobile 2016.
PPTX
OpenAPI at Scale
PPT
Win8 on Mac and more...
PPTX
Importance Of Alert And Notification In App Dev
PDF
Breaking News and Breaking Software by Andy Hume
PPTX
Anatomy of mobile App development
PDF
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
PPTX
Updated: NW.js - Desktop Apps with Javascript
PPTX
HTML5 AppCache: The Manifest
PPT
WordPress Development: Tracking Your Code With Version Control
PPTX
Year 8 python part 1 - debugging
PDF
So You Just Inherited a $Legacy Application… NomadPHP July 2016
PDF
Droidcon thessaloniki 2015
PDF
Samsung Indonesia: Tizen Wearables
PPTX
Phone gap
PDF
Debugging Javascript - Munich Frontend Developers 13.5.2020
PDF
Headless TYPO3 & PWA initiative | Web Camp Venlo 2020
PPTX
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
ODP
Introduction to PhoneGap
PPTX
Comparing Agile QA Approaches to End-to-End Testing
Swift iOS Architecture with FLUX in mind. UA Mobile 2016.
OpenAPI at Scale
Win8 on Mac and more...
Importance Of Alert And Notification In App Dev
Breaking News and Breaking Software by Andy Hume
Anatomy of mobile App development
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Updated: NW.js - Desktop Apps with Javascript
HTML5 AppCache: The Manifest
WordPress Development: Tracking Your Code With Version Control
Year 8 python part 1 - debugging
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Droidcon thessaloniki 2015
Samsung Indonesia: Tizen Wearables
Phone gap
Debugging Javascript - Munich Frontend Developers 13.5.2020
Headless TYPO3 & PWA initiative | Web Camp Venlo 2020
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
Introduction to PhoneGap
Comparing Agile QA Approaches to End-to-End Testing
Ad

Similar to FAKE (F# Make) & Automation (20)

PPTX
Domain Modeling & Full-Stack Web Development F#
PDF
The F# Path to Relaxation
PPTX
F# for functional enthusiasts
KEY
TxJS 2011
PPTX
F# for BLOBA, by brandon d'imperio
ODP
Progressive f# tutorials nyc don syme on keynote f# in the open source world
PPT
Bay NET Aug 19 2009 presentation ppt
PPTX
London F-Sharp User Group : Don Syme on F# - 09/09/2010
PPTX
"The F# Path to Relaxation", Don Syme
PDF
Doc 2011101410543721
PPT
DotNet Introduction
PDF
Real World Windows Phone Development
PPTX
Getting+started+with+f#+web+development
PPTX
NuGet beyond Hello World - DotNext Piter 2017
PPTX
Mobile F#un
PPTX
TechDaysNL 2015 - F# for C# Developers
PDF
Using F# to change the way we work
PDF
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
PPTX
Developing on Windows 8
PPT
Dotnetintroduce 100324201546-phpapp02
Domain Modeling & Full-Stack Web Development F#
The F# Path to Relaxation
F# for functional enthusiasts
TxJS 2011
F# for BLOBA, by brandon d'imperio
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Bay NET Aug 19 2009 presentation ppt
London F-Sharp User Group : Don Syme on F# - 09/09/2010
"The F# Path to Relaxation", Don Syme
Doc 2011101410543721
DotNet Introduction
Real World Windows Phone Development
Getting+started+with+f#+web+development
NuGet beyond Hello World - DotNext Piter 2017
Mobile F#un
TechDaysNL 2015 - F# for C# Developers
Using F# to change the way we work
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
Developing on Windows 8
Dotnetintroduce 100324201546-phpapp02
Ad

More from Sergey Tihon (7)

PPTX
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
PPTX
How to NLProc from .NET
PPTX
F# for Data*
PDF
Haskell Type System with Dzmitry Ivashnev.
PPTX
Printfn hello world
PPTX
Fssf community overview
PPTX
Declarative authorization in REST services in SharePoint with F# and ServiceS...
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
How to NLProc from .NET
F# for Data*
Haskell Type System with Dzmitry Ivashnev.
Printfn hello world
Fssf community overview
Declarative authorization in REST services in SharePoint with F# and ServiceS...

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Tartificialntelligence_presentation.pptx
PPTX
A Presentation on Artificial Intelligence
PPTX
Machine Learning_overview_presentation.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation theory and applications.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
Teaching material agriculture food technology
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Electronic commerce courselecture one. Pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Tartificialntelligence_presentation.pptx
A Presentation on Artificial Intelligence
Machine Learning_overview_presentation.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
A comparative analysis of optical character recognition models for extracting...
Programs and apps: productivity, graphics, security and other tools
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation theory and applications.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Teaching material agriculture food technology
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Encapsulation_ Review paper, used for researhc scholars
Unlocking AI with Model Context Protocol (MCP)
Electronic commerce courselecture one. Pdf
Network Security Unit 5.pdf for BCA BBA.

FAKE (F# Make) & Automation

  • 1. FAKE (F# MAKE) & AUTOMATION @sergey_tihon 2014
  • 2. DO YOU HAVE A BUILD SCRIPT ON YOUR PROJECT?
  • 3. WHAT DO YOU USE FOR BUILD AUTOMATION?
  • 4. DID YOU WRITE BUILD SCRIPTS?
  • 5. MSBuildRAKE MAKE Build Tools Roundup For .NET Systems http://lostechies.com/derickbailey/2010/05/10/build-tools-for-net-systems-it-s-no-longer-a-question-of-features/
  • 6. FAKE - F# MAKE - HTTP://FSHARP.GITHUB.IO/FAKE/ Steffen Forkmann @sforkmann F# and Dynamics NAV developer, blogger and sometimes speaker. Creator of FAKE - F# Make and NaturalSpec. MVP for F#.
  • 10. CLEANING THE LAST BUILD OUTPUT
  • 19. WHO USE FAKE? • Octokit by GitHub • msu solutions GmbH • E.On Global Commodities UK • Akka.net • Portable.Licensing • FeatureSwitcher • Machine.Fakes • Enticify • SolrNet • Carbonite • FSharp.Compiler.Service • Visual F# Power Tools • Deedle by BlueMountainCapital • fsharpx • FSharp.Data • FSharp.Charting • NuGetPlus • FsPickler http://fsharp.github.io/FAKE/users.html
  • 20. BUILDING GREAT OPEN-SOURCE LIBRARIES HTTP://TOMASP.NET/BLOG/20 13/GREAT-OPEN-SOURCE/ Tomas Petricek @tomaspetricek MVP, F# enthusiast, book author and a PhD student at the University of Cambridge.
  • 21. EVERY GOOD OPEN-SOURCE LIBRARY NEEDS TO HAVE: 1. UNIT TESTS - at least for non-trivial parts of code and to prevent regressions 2. RANDOM TESTING - for tricky parts of code, it is useful and helps checking unexpected cases 3. NUGET PACKAGE - or other up-to-date and easy to use release 4. DOCUMENTATION - for public API, at least when the API is not super simple 5. TUTORIALS & WALKTHROUGHS - showing how to call the API in a larger-scale scenarios 6. AUTOMATION - when releasing a new version, all of the above should happen with "one click" and documentation with tutorials must be up-to-date and correct.
  • 22. FAKE CAN HELP YOU WITH: 1. UNIT TESTS - at least for non-trivial parts of code and to prevent regressions 2. RANDOM TESTING - for tricky parts of code, it is useful and helps checking unexpected cases 3. NUGET PACKAGE - or other up-to-date and easy to use release 4. DOCUMENTATION - for public API, at least when the API is not super simple 5. TUTORIALS & WALKTHROUGHS - showing how to call the API in a larger-scale scenarios 6. AUTOMATION - when releasing a new version, all of the above should happen with "one click" and documentation with tutorials must be up-to-date and correct.
  • 23. FOR THOSE WHO INTERESTED IN CORRECTNESS 1. UNIT TESTS - at least for non-trivial parts of code and to prevent regressions 2. RANDOM TESTING - for tricky parts of code, it is useful and helps checking unexpected cases 3. NUGET PACKAGE - or other up-to-date and easy to use release 4. DOCUMENTATION - for public API, at least when the API is not super simple 5. TUTORIALS & WALKTHROUGHS - showing how to call the API in a larger-scale scenarios 6. AUTOMATION - when releasing a new version, all of the above should happen with "one click" and documentation with tutorials must be up-to-date and correct. http://www.meetup.com/fsharpminsk/events/1817675 52/
  • 25. QUESTIONS? THANK YOU! Ask me @sergey_tihon Ask FAKE @fsharpMake Ask about #FSharp