@title[Control your GitHub releases with GitVersion and GitReleaseManager]
[drag=100 25, drop=center, set=h1-blue h3-blue]
@title[Slides and Code]
[drag=100 70]
@fa[plus-square fa-2x fa-pad-icon text-gold]
@title[Agenda]
@title[Agenda List]
@ul[drag=100, fit=1.5, list-spaced-sm-bullets]
- What is Semantic Versioning?
- What branching strategy should I use?
- What is GitVersion?
- Why do I need GitVersion?
- What is GitReleaseManager?
- Putting it all together... @ul
Note:
- Fundamental principal - traceability
- What version number does it have
- What issues/pull requests are associated with it
@title[What is Semantic Versioning?]
[drag=30 100, drop=left, bg=black, set=h1-white]
[drag=70 25, drop=right, set=h2-gold]
@title[Semantic Versioning Explained]
[drag=30 100, drop=left, bg=lightblue, set=h1-white]
[drag=40 10, drop=60 0, set=text-gray] Q. What is Semantic Versioning?
[drag=70 70, drop=right, pad=80px, fit=1.45]
@fa[quote-left] ...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.
Note:
- Loaded topic - large discussion
- Not going into the details
@title[The Rules]
[drag=100 15, drop=top]
[drag=100 85, drop=0 15]
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.
Note:
- A semantic version number expresses the intention of the release
- What has changed since the last version
- Not going to talk about how to know when to bump individual parts of the version number
@title[Semantic Versioning Examples]
[drag=100 15, drop=top]
@ul[drag=100 85, drop=0 15]
- 0.1.0
- 0.3.13
- 1.0.0
- 0.2.0-unstable3
- @size0.8em @ul
@title[What branching strategy should I use?]
[drag=30 100, drop=left, bg=black, set=h1-white]
[drag=70 30, drop=right]
Note:
- Again a loaded topic
@title[GitHub Flow]
@title[GitHub Flow Explained]
@ul[drag=100 10, drop=top, sync=true, list-squash-bullets]
@ul
[drag=100 80, drop=0 10, stretch=true, flow=stack, sync=true]
[drag=100 10, drop=bottom, set=text-gray, fit=0.5]
Images borrowed from the GitHub Flow Tutorial
@title[GitFlow]
@title[GitFlow Explained]
[drag=100 10, drop=top]
@ul[drag=100 10, drop=top, sync=true, list-squash-bullets]
@ul
[drag=100 80, drop=0 10, flow=stack, sync=true]
[drag=100 10, drop=bottom, set=text-gray, fit=0.5]
Images borrowed from the A successful git branching model
@title[What is GitVersion]
[drag=30 100, drop=left, bg=black, set=h1-white]
[drag=70 20, drop=right]
@csstext-gold text-bold@fa[question]
@title[GitVersion Explained]
[drag=30 100, drop=left, bg=lightblue, set=h1-white]
[drag=40 10, drop=60 0, set=text-gray] Q. What is GitVersion?
[drag=70 70, drop=right, pad=80px, fit=1.4]
@fa[quote-left]...is a tool to help you achieve Semantic Versioning on your project.
Note:
- .Net Framework
- .Net Global Tool
- GitHub Action
- Doesn't help you decide when a version number need to change
@title[What is GitVersion really]
@title[Why do I need GitVersion]
[drag=30 100, drop=left, bg=black, set=h1-white]
[drag=70 25, drop=right]
@csstext-gold text-bold@fa[question]
@title[GitVersion Reasons]
[drag=100, stretch=true, pad=100]
[drag=100, stretch=true, pad=100]
[drag=100, stretch=true, pad=100]
Note:
- This couple you to a CI system
[drag=100, fit=7]
Note:
- No idea what the version number is
@title[What is GitReleaseManager]
[drag=30 100, drop=left, bg=black, set=h1-white]
[drag=70 25, drop=right]
@csstext-gold text-bold@fa[question]
@title[GitReleaseManager Explained]
[drag=30 100, drop=left, bg=lightblue, set=h1-white]
[drag=40 10, drop=60 0, set=text-gray] Q. What is GitReleaseManager?
[drag=70 70, drop=right, pad=80px, fit=1.4]
@fa[quote-left]...is a tool that will help create a set of release notes for your application/product. It does this using the collection of issues which are stored on the GitHub Issue Tracker for your application/product.
Note:
- Started out as a tool from Particular
@title[What is GitReleaseManager really]
Note:
- .Net Framework
- .Net Global Tool
- GitHub Action
@title[Putting it all together]
---?color=beige @title[Demo]
[drag=100, fit=3.3]
@title[Questions]
[drag=100 50]
Feel free to get in touch
Email: gep13@gep13.co.uk
Twitter: @gep13
---?color=#7FDBFF @title[Who Am I? - Gary Ewan Park]
[drag=50 10, drop=topleft]
[drag=50 30, drop=0 10, flow=row]
Senior Software Engineer @
Chocolatey Software
[drag=50 50, drop=0 30, flow=row]
[drag=50 10, drop=bottomleft, flow=row, fit=0.5]
@fa[twitter twitter-blue] gep13 @fa[github text-black] github.com/gep13 @fa[home text-blue] gep13.co.uk @fa[envelope choco-blue] gary@chocolatey.io
[drop=right]
Gary Ewan Park
@title[Learn More]
[drag=100 30, drop=top]
[drag=100 70, drop=0 30] @ullist-spaced-sm-bullets, fit=0.9
- GitVersion Documentation
- .Net Rocks Episode with Jake Ginnivan
- Git Branching Strategies
- GitFlow