SlideShare uma empresa Scribd logo
1 de 46
Semantic Versioning,
the whole story
Jake Ginnivan
jake.ginnivan.net
@jakeginnivan
Agenda
Semantic Versioning
Git Branching
Strategies
Continuous Delivery
The whole story!
GitVersion
github.com/Particular/GitVersion
What is Semantic Versioning?
1.2.3-beta.4+567
Why SemVer?
Dependency Hell
Version
Lock
Version
promiscuity
NuGet gotchas
2.0.0-beta.1
NuGet gotchas
2.0.0-beta2 2.0.0-beta11>
NuGet gotchas
2.0.0-beta0002
SemVer extensions
1.2.3-beta.4
Side effects?
Feature A
Bug A
Feature B
Feature C
Feature D
Will this break existing consumers?
Will customers pay for this feature?
Side effects?
Feature A
Bug A
Feature B
Feature C
Feature D
Does this require a patch release?
Git branching strategies
GitFlow and GitHubFlow
GitHubFlow
Or the simple pull request model made popular by GitHub
Atlassian call it the ‘forking workflow’
GitHubFlow
Particular/GitVersion
GitVersion (Local)
JakeGinnivan/GitVersion
Fork!
Clone
push
ConsoleImprovements
Pull Request
GitHubFlow – Build Versioning
GitHubFlow Major/Minor changes
NextVersion.txt
Branch name
conventions
GitFlow
A successful Git branching model
To WebSequenceDiagrams!
Because they are awesome
1.0.1-beta.1
1.0.1-beta.2
1.0.1-beta.1
1.0.1
1.0.1-beta.1
1.0.1
1.1.0.0-unstable
1.1.0.0-PullRequest.1
1.1.0.2-PullRequest.1
1.1.0.3-unstable
Bug fixes
only
2.0.0-beta.1
2.0.0-beta.12.0.0-beta.1
2.0.0-beta.2 2.0.0.5-unstable
2.0.0
It works for GitHubFlow too!
• Supporting old releases is built into
the workflow
• Very structured which needs to be
followed
• Releases require rebuild
• Encourages Waterfall
• Simple
• Mainline development
• Supporting old releases is
difficult
Which branching strategy?
GitHubFlow GitFlow
Continuous Delivery
Not the whole story, but the parts that matter to versioning/releases
Release Pipeline
CI Build
Acceptance
Tests
Deploy
Release Pipeline
CI Build
Acceptance
Tests
Deploy
Semantic Versioning
Git Branching
Strategies
Continuous Delivery
Questions?

Mais conteúdo relacionado

Mais procurados

デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and GithubHouari ZEGAI
 
Git slides
Git slidesGit slides
Git slidesNanyak S
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull RequestKasper Nissen
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...Edureka!
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubJasleenSondhi
 
Git hub ppt presentation
Git hub ppt presentationGit hub ppt presentation
Git hub ppt presentationAyanaRukasar
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.skJuraj Hantak
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 

Mais procurados (20)

デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
Git training v10
Git training v10Git training v10
Git training v10
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git Pull Requests
Git Pull RequestsGit Pull Requests
Git Pull Requests
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git slides
Git slidesGit slides
Git slides
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull Request
 
GitHub
GitHubGitHub
GitHub
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Gitops Hands On
Gitops Hands OnGitops Hands On
Gitops Hands On
 
Git hub ppt presentation
Git hub ppt presentationGit hub ppt presentation
Git hub ppt presentation
 
GitHub Presentation
GitHub PresentationGitHub Presentation
GitHub Presentation
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Bitbucket and Git
Bitbucket and GitBitbucket and Git
Bitbucket and Git
 
Git and Github
Git and GithubGit and Github
Git and Github
 

Destaque

Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Rogerio Prado de Jesus
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning TalkAaron Blythe
 
DevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes HíbridosDevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes HíbridosIgor Rosa Macedo
 
Semantic Versioning with GitVersion
Semantic Versioning with GitVersionSemantic Versioning with GitVersion
Semantic Versioning with GitVersionGary Park
 
Gitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesGitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesJavier Alvarez
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Bosstmacwilliam
 
Community live #1 - Gitflow Workflow
Community live #1 - Gitflow WorkflowCommunity live #1 - Gitflow Workflow
Community live #1 - Gitflow WorkflowLiora Milbaum
 
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundles
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi BundlesOSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundles
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundlesmfrancis
 
Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013Puppet
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Dennis Doomen
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requestsBartosz Kosarzycki
 
Change Management and Versioning in Ontologies
Change Management and Versioning in OntologiesChange Management and Versioning in Ontologies
Change Management and Versioning in OntologiesBaden Hughes
 

Destaque (14)

Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning Talk
 
DevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes HíbridosDevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes Híbridos
 
Semantic Versioning with GitVersion
Semantic Versioning with GitVersionSemantic Versioning with GitVersion
Semantic Versioning with GitVersion
 
Gitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesGitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de Branches
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
 
Community live #1 - Gitflow Workflow
Community live #1 - Gitflow WorkflowCommunity live #1 - Gitflow Workflow
Community live #1 - Gitflow Workflow
 
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundles
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi BundlesOSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundles
OSGi Community Event 2010 - Automated Semantic Versioning for OSGi Bundles
 
Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013Puppet at GitHub - PuppetConf 2013
Puppet at GitHub - PuppetConf 2013
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)
 
Pubmi gitflow
Pubmi gitflowPubmi gitflow
Pubmi gitflow
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
Change Management and Versioning in Ontologies
Change Management and Versioning in OntologiesChange Management and Versioning in Ontologies
Change Management and Versioning in Ontologies
 

Semelhante a SemVer, the whole story

KubeCon EU 2022 Istio, Flux & Flagger.pdf
KubeCon EU 2022 Istio, Flux & Flagger.pdfKubeCon EU 2022 Istio, Flux & Flagger.pdf
KubeCon EU 2022 Istio, Flux & Flagger.pdfWeaveworks
 
Version control git day02
Version control   git day02Version control   git day02
Version control git day02Gourav Varma
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Simplilearn
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing selfChen-Tien Tsai
 
Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through gitMohd Farid
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagramsDilum Navanjana
 
Improving your workflow with git
Improving your workflow with gitImproving your workflow with git
Improving your workflow with gitDídac Ríos
 
Intro to Version Control with Git and Github
Intro to Version Control with Git and GithubIntro to Version Control with Git and Github
Intro to Version Control with Git and GithubJoe Fleming
 
What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondLuca Milanesio
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_finalMythri P K
 
Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright Shunsuke (Sean) Osawa
 
Introduction to Git.pptx
Introduction to Git.pptxIntroduction to Git.pptx
Introduction to Git.pptxgdscuds
 
Git from the trenches
Git from the trenchesGit from the trenches
Git from the trenchesNuno Caneco
 

Semelhante a SemVer, the whole story (20)

KubeCon EU 2022 Istio, Flux & Flagger.pdf
KubeCon EU 2022 Istio, Flux & Flagger.pdfKubeCon EU 2022 Istio, Flux & Flagger.pdf
KubeCon EU 2022 Istio, Flux & Flagger.pdf
 
Version control git day02
Version control   git day02Version control   git day02
Version control git day02
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing self
 
Git introduction
Git introductionGit introduction
Git introduction
 
Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through git
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
Improving your workflow with git
Improving your workflow with gitImproving your workflow with git
Improving your workflow with git
 
Intro to Version Control with Git and Github
Intro to Version Control with Git and GithubIntro to Version Control with Git and Github
Intro to Version Control with Git and Github
 
What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyond
 
Git Workshop
Git WorkshopGit Workshop
Git Workshop
 
From CVS to GIT
From CVS to GITFrom CVS to GIT
From CVS to GIT
 
git-docker.pdf
git-docker.pdfgit-docker.pdf
git-docker.pdf
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final
 
Github
GithubGithub
Github
 
Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright
 
Introduction to Git.pptx
Introduction to Git.pptxIntroduction to Git.pptx
Introduction to Git.pptx
 
Git from the trenches
Git from the trenchesGit from the trenches
Git from the trenches
 
Git
GitGit
Git
 
Git and git hub
Git and git hubGit and git hub
Git and git hub
 

Último

The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 

Último (20)

The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 

SemVer, the whole story

Notas do Editor

  1. About 8 months ago I was releasing new versions of a few open source projects I help maintain, like TestStack.White, shouldly and Markpad. I was finding each project had a different way of versioning and creating the release notes, so I started playing around with different ideas for TeamCity configurations, build scripts, using version.txt files to try and simplify versioning and allow me to just release a new version with a click of a button in TeamCity. Around that time I had a few gists and blog posts discussing different ways I could think of solving the problem, but was not really happy with any of them. Then Simon Cropp (who is responsible for Fody) pinged me with an idea that Particular who are known best for nServiceBus had been working on. They would use a git branching strategy called GitFlow to infer and manage their semantic version for all their projects. This was pretty cool, I started playing with it, but found that GitFlow was too heavy for simple open source projects which use pull requests targeting master. I simply did not want to increase the barrier to entry on these project. I talked to Simon and Andreas (another guy at Particular) about contributing support for GitHubFlow to their little tool. After discussing it for a while we found the initial requirements and the way we were going to use it differed. So we decided to split, having a separate project for each branching strategy allowing each project to come up with it’s own ideas and ways of doing things with the intention of bringing them back together later. At the time I was thinking, this will be really simple, just a simple console app and I will have the problem solved in a few weekends. Why are things never that simple.. After about 5 months or so both projects had matured, we had learnt a HEAP about semantic versioning and how we could use branching to control that version and we started to merge the projects. 8 months after this all kicked off we are about to finally release version 1 of GitVersion. This talk is not about the tool, but what I personally have learnt over the last 8 months building this projects.
  2. Before getting started, I mentioned GitVersion just before. Much of this tool is about the conventions we have built into GitVersion, but all of this can be applied separately
  3. Each part has a specific meaning, first explain the concept of the public API Major – Breaking/incompatible API change Minor – Add functionality in a backwards compatible manner Patch – Fixes bugs in a backwards compatible manner Pre-release Tag – a ‘.’ Separated tag denoting a pre-release version which may not satisfy the intended compatibility requirements a stable version would Build metadata – Stuff which does not affect the actual semantic version, but can give additional information to the consumers of that package
  4. Example: Web app + Facebook library + twitter library both rely on Json.net Version lock – when dependency specification is too tight, two libraries rely on a single dependency. If we rely on exact versions then we can get into a situation where no dependency can be updated Version promiscuity – when the dependency specification is too loose and libraries start assuming they can run against any version of a dependent library, so upgrading any dependency can introduce compatibility issues between your dependent librarys Note: strong naming in .net causes version lock, and we need binding redirects to break the version lock.
  5. When you have multiple releases in flight at once it becomes hard to tell what the version for each branch should be. Some people have nightly or CI builds, each CI build creates *the same* semantic version. This breaks the CI/Nightly build systems because there will be multiple packages of the same version. How do we deal with that?
  6. Customer facing extensions Major – New features, if this is a paid product then major version bumps often involve users paying a fee Minor – Feature enhancements Patch – Bug fixes Beta still has the same meaning, it is a pre-release of the version before the -
  7. Lets say we have a bunch of features on our backlog, after adopting SemVer you start thinking about the impact of that feature BEFORE working on it. For libraries: - Is this feature going to break our public API, most of the time you know this up-front. - If you are going to introduce a breaking change, does that change your priorities? - Maybe we want to switch to stories which will introduce breaking API changes so they are all in a single breaking release rather than multiple breaking releases over time - Can we think of a way to introduce this feature without breaking something - Is the bug we are fixing a security flaw, or serious enough to patch previous versions? (depends if you are supporting old versions) For products - Is this a feature our customers would pay for? - If it is, maybe we want to start on the path of a new release - For patch releases, do we need to fix in previous releases and do multiple patch releases?
  8. If you are maintaining multiple versions, a patch release has implications. If it exists in previous versions then you have a duty to fix it This has impacts on the development time and other things, so if it is not critical it can be fixed as part of the next minor release This leads right into how do we manage these decisions in source control ->
  9. Who uses git here? Who knows what ‘GitHubFlow is’? What about using pull requests? Anyone here understand GitFlow? And out of those, how many are using GitFlow?
  10. As a contributor, I do not have write access to the main repo So I create my own fork which I can write to. Pull Requests are simple a request to get your code pulled into the main repository which you do not have access to (in the open source model).
  11. That is pretty much it for GitHubFlow, there is another step to get your local repository up to date with upstream once your pull request is merged but that is getting a bit out of scope We now know how to use GitHub (Stash, BitBucket work the same)
  12. There are currently two ways to bump the version number. The first is by using a NextVersion.txt file in your repository root. This allows you to bump the major/minor easily. Once the conventions built into GitVersion pass the version in the NextVersion.txt file, it will be ignored Branch name conventions work just like GitFlow, when you want to work on a feature or breaking change off the mainline just work in a branch which is suffixed with -2.0.0 or whatever version you want. When that branch is merged the version in the branch name will take over when building the target branch Other ideas: Special commit messages, like prefix ‘Breaking:’ to the commit to have the major version bumped. If you like this idea, jump online and +1 the issue.
  13. If you are following GitFlow, you only commit bug fixes to release branches
  14. Then we merge the bug fixes across to develop as they are made What is the issue when SemVer is mixed into this?
  15. When using GitFlow with semantic versioning this doesn’t work so well for major version bumps because we are trying to keep the breaking changes separated until they are ready to be released. When a commit is made on develop, that is a non-breaking change by it’s nature (only minor changes are made on develop) 
  16. So it can be safely merged into the major release branch. We have taken a branching method which fits a more waterfall style company/process and are using it as a too for devs to manage their versions.
  17. We learnt this.. Now that you know the workflows it is not that bad. On top of this, we learnt how you would use GitFlow when using Semantic Versioning.
  18. Now that you know each branching strategy, when would you choose each? Another thing to note is ALWAYS start with GitHubFlow, when you need more only then think about switching. Using GitVersion.exe Now we have covered branching strategies, what they are and when you should use each. This means we are ready to move onto continuous delivery.
  19. What does continuous delivery have to do with Semantic Versioning anyways? A lot, most versioning strategies require a commit or some manual work AFTER a release to start building the correct version. Lets look at a few other solutions
  20. An important part of continuous delivery is the release pipeline, or the idea that you build packages which are ready to deploy to production. To get to production they have to go through a number of steps, they could be manual testing, automated testing, sign off or anything else. The important part of this is that the first step of the chain creates the artifacts. And they are not re-built for different environments, the same binaries which got built and deployed into a testing environment can just be deployed into production.
  21. This is the hard step with semantic versioning. Being able to: - Not have to touch your build server configuration or create a commit as part of your workflow. It is exceptional circumstances which make you step in - For example, both GitHubFlow and GitFlow support both increment the Minor after a tag - No nice migration path between a simple and more complex branching strategy - Making pre-release packages easy to create, not a special or manual process - Guidance, every project has to solve these issues. I have seen HEAPS of different approaches and I have invented quite a few. This is a reusable approach which is really easy to setup and start using - Make the problem about the SEMANTICS of the release, NOT the version number. The version number is an artifact of what type of release it is.
  22. Example simple build chain
  23. Another, showing off the artifacts from the first step being used in the second step
  24. In conclusion semantic versioning is great. It solves dependency hell, allows you to communicate either breaking changes or new features to consumers of your library or software and encourages people to think before breaking their consumers. We have learnt the GitHubFlow and GitFlow branching strategies and how they relate to semantic versioning. And finally we have seen how you can use your branching strategy to assist you in achieving continuous delivery. There is no reason for you not to start using SemVer today, change the way you think about what different features will do to your system and how you will implement them and with GitVersion to help remove the hard manual work out is a no brainer.