Skip to content

Versioning

As teams work quickly and produce working code, they will need to be diligent to stay on top of versioning and documentation. Several practices and documents should be in place to keep teams working together and provide transparency across changes.

Semantic Versioning

Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software (source). The most popular method is semantic versioning, or semver. Semver communicates changes using three values, indicating breaking changes, new functionality, and backwards compatible changes. Changes in the version number are able to communicate the nature of changes to consumers. This approach provides a simple path for development teams to align on versioning as well as communicate meaningful changes to customers.

From semver.org: 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, and
  • PATCH version when you make backwards compatible bug fixes.

By following the semver pattern, consumers will easily be able to immediately determine what kind of changes are present in the new version.

Continuous delivery considerations

With rapid development and multiple changes to master branch, the build server should automatically update the build version in order to reduce toil for developers. This enables uniquely versioned artifacts to be generated and published without developers needed to constantly update based on small changes.