-
Notifications
You must be signed in to change notification settings - Fork 6
Versioning and Release Strategy (WIP 🚧 )
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.
We use a hybrid versioning strategy with:
- Repository-wide tags for biweekly releases.
- Independent semantic versioning for individual services.
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 theabd-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
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.
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.
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.
-
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.