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

What's hot

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 Scale
Nordic APIs
 
Win8 on Mac and more...
Win8 on Mac and more...Win8 on Mac and more...
Win8 on Mac and more...
Joel Reyes
 
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
TMME - TECH MEETUP FOR MYANMAR ENGINEERS IN JP
 
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
SyncConf
 
Anatomy of mobile App development
Anatomy of mobile App developmentAnatomy of mobile App development
Anatomy of mobile App development
Ralf 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 Market
Nikita 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 Javascript
Ralf Schwoebel
 
HTML5 AppCache: The Manifest
HTML5 AppCache: The ManifestHTML5 AppCache: The Manifest
HTML5 AppCache: The Manifest
Ralf 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 Control
Sterling Hamilton
 
Year 8 python part 1 - debugging
Year 8 python part 1 - debuggingYear 8 python part 1 - debugging
Year 8 python part 1 - debugging
Andrew 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 2016
Joe Ferguson
 
Droidcon thessaloniki 2015
Droidcon thessaloniki 2015Droidcon thessaloniki 2015
Droidcon thessaloniki 2015
Raymond Chenon
 
Samsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesSamsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen Wearables
Ryo 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.2020
Juha-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 2020
Tomasz 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 PhoneGap
Quang 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 Testing
Katie Chin
 

What's hot (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
 

Similar to FAKE (F# Make) & Automation

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
Alessandro Cinelli (cirpo)
 
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
Rainer 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 Robot
IRJET 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) - #supengineering
James 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 deployment
Filippo Zanella
 
SeConf_Nov2016_London
SeConf_Nov2016_LondonSeConf_Nov2016_London
SeConf_Nov2016_London
Pooja 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 Migrations
Dana Luther
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
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
Bill 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 PAYBACK
Marcel Gehlen
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
Jacek Tomaszewski
 
Appium workship, Mobile Web+Dev Conference
Appium workship,  Mobile Web+Dev ConferenceAppium workship,  Mobile Web+Dev Conference
Appium workship, Mobile Web+Dev Conference
Isaac 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 Story
InnoTech
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
Sergio Navarro Pino
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanship
Kev McCabe
 

Similar to FAKE (F# Make) & Automation (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
 

More from 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-29
Sergey Tihon
 
How to NLProc from .NET
How to NLProc from .NETHow to NLProc from .NET
How to NLProc from .NET
Sergey Tihon
 
F# for Data*
F# for Data*F# for Data*
F# for Data*
Sergey 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
 

More from 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...
 

Recently uploaded

AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 

Recently uploaded (20)

AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 

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