SlideShare ist ein Scribd-Unternehmen logo
1 von 25
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

Weitere ähnliche Inhalte

Was ist angesagt?

Swift iOS Architecture with FLUX in mind. UA Mobile 2016.
Swift iOS Architecture with FLUX in mind. UA Mobile 2016.Swift iOS Architecture with FLUX in mind. UA Mobile 2016.
Swift iOS Architecture with FLUX in mind. UA Mobile 2016.UA Mobile
 
OpenAPI at Scale
OpenAPI at ScaleOpenAPI at Scale
OpenAPI at ScaleNordic APIs
 
Win8 on Mac and more...
Win8 on Mac and more...Win8 on Mac and more...
Win8 on Mac and more...Joel Reyes
 
Breaking News and Breaking Software by Andy Hume
Breaking News and Breaking Software by Andy HumeBreaking News and Breaking Software by Andy Hume
Breaking News and Breaking Software by Andy HumeSyncConf
 
Anatomy of mobile App development
Anatomy of mobile App developmentAnatomy of mobile App development
Anatomy of mobile App developmentRalf Schwoebel
 
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketEnterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketNikita Sharma
 
Updated: NW.js - Desktop Apps with Javascript
Updated: NW.js - Desktop Apps with JavascriptUpdated: NW.js - Desktop Apps with Javascript
Updated: NW.js - Desktop Apps with JavascriptRalf Schwoebel
 
HTML5 AppCache: The Manifest
HTML5 AppCache: The ManifestHTML5 AppCache: The Manifest
HTML5 AppCache: The ManifestRalf Schwoebel
 
WordPress Development: Tracking Your Code With Version Control
WordPress Development: Tracking Your Code With Version ControlWordPress Development: Tracking Your Code With Version Control
WordPress Development: Tracking Your Code With Version ControlSterling Hamilton
 
Year 8 python part 1 - debugging
Year 8 python part 1 - debuggingYear 8 python part 1 - debugging
Year 8 python part 1 - debuggingAndrew Willetts
 
So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016Joe Ferguson
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Raymond Chenon
 
Samsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesSamsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesRyo Jin
 
Debugging Javascript - Munich Frontend Developers 13.5.2020
Debugging Javascript - Munich Frontend Developers 13.5.2020Debugging Javascript - Munich Frontend Developers 13.5.2020
Debugging Javascript - Munich Frontend Developers 13.5.2020Juha-Matti Santala
 
Headless TYPO3 & PWA initiative | Web Camp Venlo 2020
 Headless TYPO3 & PWA initiative | Web Camp Venlo 2020 Headless TYPO3 & PWA initiative | Web Camp Venlo 2020
Headless TYPO3 & PWA initiative | Web Camp Venlo 2020Tomasz Grzemski
 
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...Practical DevOps & Continuous Delivery –  A Webinar to learn in depth on DevO...
Practical DevOps & Continuous Delivery – A Webinar to learn in depth on DevO...Hugo Messer
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGapQuang Minh Dao
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingKatie Chin
 

Was ist angesagt? (20)

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

Ähnlich wie FAKE Build Automation for .NET Projects

Unit Tests and Test Seams for abap Hamburg June 2017 presented
Unit Tests and Test Seams for abap Hamburg June 2017   presentedUnit Tests and Test Seams for abap Hamburg June 2017   presented
Unit Tests and Test Seams for abap Hamburg June 2017 presentedRainer Winkler
 
IRJET- Voice Recognition(AI) : Voice Assistant Robot
IRJET-  	  Voice Recognition(AI) : Voice Assistant RobotIRJET-  	  Voice Recognition(AI) : Voice Assistant Robot
IRJET- Voice Recognition(AI) : Voice Assistant RobotIRJET Journal
 
How to xcode in teams (without killing anyone) - #supengineering
How to xcode in teams (without killing anyone) - #supengineeringHow to xcode in teams (without killing anyone) - #supengineering
How to xcode in teams (without killing anyone) - #supengineeringJames Campbell
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Eugenio Minardi
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Sergio Navarro Pino
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)Jorge López-Lago
 
Ray Wang - Gnome Accessibility And Automation Testing
Ray Wang - Gnome Accessibility And  Automation TestingRay Wang - Gnome Accessibility And  Automation Testing
Ray Wang - Gnome Accessibility And Automation TestingMario B.
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deploymentFilippo Zanella
 
SeConf_Nov2016_London
SeConf_Nov2016_LondonSeConf_Nov2016_London
SeConf_Nov2016_LondonPooja Shah
 
Code Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsCode Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsDana Luther
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to productjoeysim
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
 
Appium mobile web+dev conference
Appium   mobile web+dev conferenceAppium   mobile web+dev conference
Appium mobile web+dev conferenceIsaac Murchie
 
Testing Native Apps at PAYBACK
Testing Native Apps at PAYBACKTesting Native Apps at PAYBACK
Testing Native Apps at PAYBACKMarcel Gehlen
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Jacek Tomaszewski
 
Appium workship, Mobile Web+Dev Conference
Appium workship,  Mobile Web+Dev ConferenceAppium workship,  Mobile Web+Dev Conference
Appium workship, Mobile Web+Dev ConferenceIsaac Murchie
 
News scavenger a SharePoint and Apps Story
News scavenger  a SharePoint and Apps StoryNews scavenger  a SharePoint and Apps Story
News scavenger a SharePoint and Apps StoryInnoTech
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanshipKev McCabe
 

Ähnlich wie FAKE Build Automation for .NET Projects (20)

Don't screw it up! How to build durable API
Don't screw it up! How to build durable API Don't screw it up! How to build durable API
Don't screw it up! How to build durable API
 
Unit Tests and Test Seams for abap Hamburg June 2017 presented
Unit Tests and Test Seams for abap Hamburg June 2017   presentedUnit Tests and Test Seams for abap Hamburg June 2017   presented
Unit Tests and Test Seams for abap Hamburg June 2017 presented
 
IRJET- Voice Recognition(AI) : Voice Assistant Robot
IRJET-  	  Voice Recognition(AI) : Voice Assistant RobotIRJET-  	  Voice Recognition(AI) : Voice Assistant Robot
IRJET- Voice Recognition(AI) : Voice Assistant Robot
 
How to xcode in teams (without killing anyone) - #supengineering
How to xcode in teams (without killing anyone) - #supengineeringHow to xcode in teams (without killing anyone) - #supengineering
How to xcode in teams (without killing anyone) - #supengineering
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)
 
Ray Wang - Gnome Accessibility And Automation Testing
Ray Wang - Gnome Accessibility And  Automation TestingRay Wang - Gnome Accessibility And  Automation Testing
Ray Wang - Gnome Accessibility And Automation Testing
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
SeConf_Nov2016_London
SeConf_Nov2016_LondonSeConf_Nov2016_London
SeConf_Nov2016_London
 
Code Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsCode Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application Migrations
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
Appium mobile web+dev conference
Appium   mobile web+dev conferenceAppium   mobile web+dev conference
Appium mobile web+dev conference
 
Testing Native Apps at PAYBACK
Testing Native Apps at PAYBACKTesting Native Apps at PAYBACK
Testing Native Apps at PAYBACK
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
 
Appium workship, Mobile Web+Dev Conference
Appium workship,  Mobile Web+Dev ConferenceAppium workship,  Mobile Web+Dev Conference
Appium workship, Mobile Web+Dev Conference
 
News scavenger a SharePoint and Apps Story
News scavenger  a SharePoint and Apps StoryNews scavenger  a SharePoint and Apps Story
News scavenger a SharePoint and Apps Story
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanship
 

Mehr von Sergey Tihon

Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Sergey Tihon
 
How to NLProc from .NET
How to NLProc from .NETHow to NLProc from .NET
How to NLProc from .NETSergey Tihon
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Sergey Tihon
 
Printfn hello world
Printfn hello worldPrintfn hello world
Printfn hello worldSergey Tihon
 
Fssf community overview
Fssf community overviewFssf community overview
Fssf community overviewSergey Tihon
 
Declarative authorization in REST services in SharePoint with F# and ServiceS...
Declarative authorization in REST services in SharePoint with F# and ServiceS...Declarative authorization in REST services in SharePoint with F# and ServiceS...
Declarative authorization in REST services in SharePoint with F# and ServiceS...Sergey Tihon
 

Mehr von Sergey Tihon (7)

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

Kürzlich hochgeladen

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Kürzlich hochgeladen (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

FAKE Build Automation for .NET Projects

  • 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