Agile Scrum – Understanding Semantic Versioning

agilescrumversioning

Let's say I have 14 days sprint iterations where I have several stories for new features, few improvements and some bugs to fix. I also deploy those changes when they are ready, I'm not waiting for end of sprint.

My problem is – how to track semantic versioning of products developed and maintained like this? If there will be release every 14 days it will be easy, I will increase version number and note all changes in changelog. But what if changes are deployed continuously? Should there be version increased everytime something is deployed? Or should I wait until sprint ends and after this, make some "resume" and increase version number just once per iteration independently on actual deployment? What are best practices for semantic versioning in Agile?

EDIT: To better explain my needs, I want changelog for stakeholders in a first place. I don't think they will be interested in new record in changelog after every change deployed.

Best Answer

For typical release management, you will want a build number being generated by your build system so that the DLLs are versioned every time they are deployed. This will ensure you can later check which version is deployed on a given server.

Your 'marketing' version, which is usually put in release notes or published to your site should not be updated each version. Those release notes should be accumulated and grouped together, likely timed with the end of your sprint.