Skip to content

Versioning and Release Strategy (WIP 🚧 )

Derek Fitchett edited this page Oct 24, 2024 · 3 revisions

Versioning and Release Strategy for ABD VRO

Overview

This document outlines the versioning strategy used for the ABD VRO repository and its microservices. We follow a hybrid approach to ensure flexibility in individual service development while maintaining consistency for coordinated releases.


Versioning Strategy

We use a hybrid versioning strategy with:

  • Repository-wide tags for biweekly releases.
  • Independent semantic versioning for individual services.

Repository-wide Tags

We create biweekly release tags to capture the state of the entire repository. These tags act as snapshots and allow tracking of coordinated deployments across services.

Tagging Format:

release-YYYY.MM.DD
  • Example: release-2024.10.24

Usage:

  • A new tag is created at the end of every biweekly sprint at the head of develop branch in the abd-vro repository.
  • The tag should be duplicated to in the va-abd-rrd-argocd-applications-vault.
  • The tag reflects the repository’s state at the time of release.
  • This tag should correspond to the commit hash used to deploy the microservices.

Command to Create a Tag:

git tag -a release-YYYY.MM.DD -m "Biweekly release for YYYY-MM-DD"
git push origin release-YYYY.MM.DD

Service-level Semantic Versioning

Each microservice maintains independent semantic versions (following the Semantic Versioning rules: MAJOR.MINOR.PATCH).

  • MAJOR: Incompatible API changes.
  • MINOR: Backward-compatible functionality additions.
  • PATCH: Bug fixes or small improvements.

Service Version Example:

  • svc-bip-api_v1.2.3

Guidelines:

  • Every change to a service should be accompanied by a version bump.
  • A major version bump requires alignment with other dependent services, if applicable.
  • The same commit hash should ideally be used across all services for a given release.

How to Tag Services

Each service’s version can be managed through annotated Git tags.

Creating a Tag for a Service:

cd path/to/service
git tag -a <service>_v1.2.0 -m "Service update: Added new feature"
git push origin v1.2.0

Best Practices:

  • Use annotated tags with meaningful messages to describe changes.
  • Ensure all service versions are tracked properly, especially if multiple services are updated simultaneously.

Summary

This hybrid approach ensures:

  • Flexibility: Services evolve independently with semantic versioning.
  • Consistency: Repository tags provide a unified view of biweekly releases.
  • Traceability: Versioned services and release tags make it easy to track what’s deployed where.

By following this strategy, we ensure smoother coordination between teams and maintain clarity across services and environments.


Related Sources

VRO Deployment Policy

Appendix: Helpful Git Commands

  • List all tags:

    git tag
  • Show details of a specific tag:

    git show <tag-name>
  • Delete a local tag (if needed):

    git tag -d <tag-name>
  • Delete a remote tag:

    git push origin --delete <tag-name>

This versioning strategy will evolve as we continue improving our development and deployment practices. If you encounter any issues or have suggestions, please contact the VRO engineering team.

Clone this wiki locally