SlideShare une entreprise Scribd logo
1  sur  17
Semantic Versioning with GitVersion
Gary Ewan Park
Email: gep13@gep13.co.uk
Twitter: @gep13
Web: http://www.gep13.co.uk
Agenda
• What is Semantic Versioning?
• What is GitVersion?
• Why would I want to use GitVersion?
• How do I get started with GitVersion?
• Demo
What is Semantic
Versioning?
A Definition…
“…simple set of rules and requirements that dictate how version
numbers are assigned and incremented. These rules are based on
but not necessarily limited to pre-existing widespread common
practices in use in both closed and open-source software.”
Reference
 http://semver.org
The Rules
Given a version number MAJOR.MINOR.PATCH, increment the:
• MAJOR version when you make incompatible API changes
• MINOR version when you add functionality in a backwards-
compatible manner
• PATCH version when you make backwards-compatible bug fixes
Additional labels for pre-release and build metadata are available as
extensions to the MAJOR.MINOR.PATCH format.
Example Semantic Version Numbers
• 0.1.0
• 1.0.0
• 0.3.13
• 0.2.0-unstable3
• 0.2.0-unstable.3+Branch.develop.Sha.e6eb071cd30974b80d7e237b85e7729a1d791e1e
What is GitVersion?
A Definition…
“GitVersion is a tool to help you achieve Semantic Versioning on
your project.”
Reference
 http://gitversion.readthedocs.org/en/latest/
 https://github.com/GitTools/GitVersion
Why would I want to use
GitVersion?
Existing Strategies
?
How do I get started with
GitVersion?
Simples! 
• Install from Chocolatey:
• Use the NuGet Command Line Package
• Use the NuGet MsBuild Task
• Use the Ruby Gem
Example GitVersion Output
Build Server Support
Demo
Questions?
Feel free to get in touch
Email: gep13@gep13.co.uk
Twitter: @gep13
Web: http://www.gep13.co.uk
Resources
• GitVersion Documentation
o http://gitversion.readthedocs.org/en/latest/
• .Net Rocks Episode with Jake Ginnivan
o https://www.dotnetrocks.com/default.aspx?showNum=1178
• Git Branching Strategies
o https://www.atlassian.com/git/tutorials/comparing-workflows
• GitFlow
o http://nvie.com/posts/a-successful-git-branching-model/

Contenu connexe

Tendances

Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
Stefan Lay
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
Stefan Lay
 

Tendances (20)

Improving Untestable Code
Improving Untestable CodeImproving Untestable Code
Improving Untestable Code
 
GitLab webcast - Release 8.4
GitLab webcast - Release 8.4GitLab webcast - Release 8.4
GitLab webcast - Release 8.4
 
Flex and .NET Integration
Flex and .NET IntegrationFlex and .NET Integration
Flex and .NET Integration
 
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHubIncrease the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolbox
 
GitLab 8.6 - Release Webcast
GitLab 8.6 - Release Webcast GitLab 8.6 - Release Webcast
GitLab 8.6 - Release Webcast
 
Azure Integration DTAP Series, How to go from Development to Production – Par...
Azure Integration DTAP Series, How to go from Development to Production – Par...Azure Integration DTAP Series, How to go from Development to Production – Par...
Azure Integration DTAP Series, How to go from Development to Production – Par...
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Using Github Insight as metric for the Developer collaboration and work metri...
Using Github Insight as metric for the Developer collaboration and work metri...Using Github Insight as metric for the Developer collaboration and work metri...
Using Github Insight as metric for the Developer collaboration and work metri...
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
CI back to basis
CI back to basisCI back to basis
CI back to basis
 
Git branching
Git branchingGit branching
Git branching
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Diffy gets enterprise grade
Diffy gets enterprise gradeDiffy gets enterprise grade
Diffy gets enterprise grade
 
Courier Live May Product Release Notes
Courier Live May Product Release NotesCourier Live May Product Release Notes
Courier Live May Product Release Notes
 

En vedette

En vedette (6)

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
 
A Piece of Cake - DDD11 - Reading
A Piece of Cake - DDD11 - ReadingA Piece of Cake - DDD11 - Reading
A Piece of Cake - DDD11 - Reading
 
Having your cake, and eating it too! - DDDScotland
Having your cake, and eating it too! - DDDScotlandHaving your cake, and eating it too! - DDDScotland
Having your cake, and eating it too! - DDDScotland
 
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
 
A Piece of Cake - DDD North
A Piece of Cake - DDD NorthA Piece of Cake - DDD North
A Piece of Cake - DDD North
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 

Similaire à Semantic Versioning with GitVersion - Take 2

Was migration benefits, planning, best practices
Was migration benefits, planning, best practicesWas migration benefits, planning, best practices
Was migration benefits, planning, best practices
sflynn073
 

Similaire à Semantic Versioning with GitVersion - Take 2 (20)

Distribute your code with NUget and build vNext
Distribute your code with NUget and build vNextDistribute your code with NUget and build vNext
Distribute your code with NUget and build vNext
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
Git tech
Git techGit tech
Git tech
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshare
 
Github
GithubGithub
Github
 
Make Your Team Flow
Make Your Team FlowMake Your Team Flow
Make Your Team Flow
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHub
 
Was migration benefits, planning, best practices
Was migration benefits, planning, best practicesWas migration benefits, planning, best practices
Was migration benefits, planning, best practices
 
Why GitOps Model Is the Future of DevOps
Why GitOps Model Is the Future of DevOpsWhy GitOps Model Is the Future of DevOps
Why GitOps Model Is the Future of DevOps
 
Cloud native CI/CD with GitOps
Cloud native CI/CD with GitOpsCloud native CI/CD with GitOps
Cloud native CI/CD with GitOps
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps Service | Mindtree
DevOps Service | MindtreeDevOps Service | Mindtree
DevOps Service | Mindtree
 
Azure Integration DTAP Series, How to go from Development to Production – Par...
Azure Integration DTAP Series, How to go from Development to Production – Par...Azure Integration DTAP Series, How to go from Development to Production – Par...
Azure Integration DTAP Series, How to go from Development to Production – Par...
 
Git Workflow .pptx
Git Workflow .pptxGit Workflow .pptx
Git Workflow .pptx
 
Webinar - Continuous Integration with GitLab
Webinar - Continuous Integration with GitLabWebinar - Continuous Integration with GitLab
Webinar - Continuous Integration with GitLab
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
From Zero to Serverless
From Zero to ServerlessFrom Zero to Serverless
From Zero to Serverless
 
The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021The Future of API Specifications -- Aidan Cunniffe 2021
The Future of API Specifications -- Aidan Cunniffe 2021
 
Apidays Paris 2023 - Real-Life REST API Versioning, Alexandre Touret, Worldline
Apidays Paris 2023 - Real-Life REST API Versioning, Alexandre Touret, WorldlineApidays Paris 2023 - Real-Life REST API Versioning, Alexandre Touret, Worldline
Apidays Paris 2023 - Real-Life REST API Versioning, Alexandre Touret, Worldline
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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 New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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
 

Semantic Versioning with GitVersion - Take 2

  • 1. Semantic Versioning with GitVersion Gary Ewan Park Email: gep13@gep13.co.uk Twitter: @gep13 Web: http://www.gep13.co.uk
  • 2. Agenda • What is Semantic Versioning? • What is GitVersion? • Why would I want to use GitVersion? • How do I get started with GitVersion? • Demo
  • 4. A Definition… “…simple set of rules and requirements that dictate how version numbers are assigned and incremented. These rules are based on but not necessarily limited to pre-existing widespread common practices in use in both closed and open-source software.” Reference  http://semver.org
  • 5. The Rules Given a version number MAJOR.MINOR.PATCH, increment the: • MAJOR version when you make incompatible API changes • MINOR version when you add functionality in a backwards- compatible manner • PATCH version when you make backwards-compatible bug fixes Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
  • 6. Example Semantic Version Numbers • 0.1.0 • 1.0.0 • 0.3.13 • 0.2.0-unstable3 • 0.2.0-unstable.3+Branch.develop.Sha.e6eb071cd30974b80d7e237b85e7729a1d791e1e
  • 8. A Definition… “GitVersion is a tool to help you achieve Semantic Versioning on your project.” Reference  http://gitversion.readthedocs.org/en/latest/  https://github.com/GitTools/GitVersion
  • 9. Why would I want to use GitVersion?
  • 11. How do I get started with GitVersion?
  • 12. Simples!  • Install from Chocolatey: • Use the NuGet Command Line Package • Use the NuGet MsBuild Task • Use the Ruby Gem
  • 15. Demo
  • 16. Questions? Feel free to get in touch Email: gep13@gep13.co.uk Twitter: @gep13 Web: http://www.gep13.co.uk
  • 17. Resources • GitVersion Documentation o http://gitversion.readthedocs.org/en/latest/ • .Net Rocks Episode with Jake Ginnivan o https://www.dotnetrocks.com/default.aspx?showNum=1178 • Git Branching Strategies o https://www.atlassian.com/git/tutorials/comparing-workflows • GitFlow o http://nvie.com/posts/a-successful-git-branching-model/

Notes de l'éditeur

  1. The Semantic Versioning specification is authored by Tom Preston-Werner, inventor of Gravatars and co-founder of GitHub. Tries to solve two problems, Version Lock and Version promiscuity. SemVer introduces conventions about breaking changes into our version numbers so we can safely upgrade dependencies without fear of unexpected breaking changes while still allowing us to upgrade downstream libraries to get new features and bug fixes.
  2. {major} = Only incremented if the release has breaking changes (includes bug fixes which have breaking behavioural changes {minor} = Incremented if the release has new non-breaking features {patch} = Incremented if the release only contains non-breaking bug fixes {tag} = Optional -{tag} denotes a pre-release of the version preceeding {buildmetadata} = Options +{buildmetadata} contains additional information about the version, but DOES NOT AFFECT the semantic version preceding it.
  3. - It actually started out as two tools, one by Particular and another by Jake Ginnivan - They decided to combine their efforts under the ParticularLabs Open Source Repository - Ownership of GitVersion has since passed to the GitTools organisation which is creating a number of OSS tools, centred around Git GitReleaseNotes, GitReleaseManager, GitLink, etc - Uses LibGit2, same library as used by GitHub For Desktop, and the Visual Studio Git Integration
  4. Version.txt - Results in multiple commits to repository that aren’t required - Difficult to between branches CI Build - Tied into one CI System AssemblyInfo - Very manual process - Someone has to remember to do it Unknown - Less said about this, the better 
  5. I have never used the Ruby Gem, but as I understand it, it is just a wrapper around the exe. There is also a GitVersion DLL which can be consumed in your own applications, but it should be noted that there is not currently a public defined API, so care should be taken.
  6. Not all Build Servers clone all branches, necessary for asserting the version number, which means GitVersion can fail. This will make GitVersion Variables: - immediately available to other build steps - set the build version number - rationalise the branches, and ensure all required branches are cloned, in order to assert version number - automatically detect that it is running on a build server