📅 Versioning and Release Management
This document outlines how Inner Journey manages versioning and releases to ensure stability, compatibility, and a smooth deployment process. Adhering to these practices helps maintain organized and reliable releases. 🌟
🛠️ Versioning Strategy
Effective versioning is crucial for managing dependencies and understanding changes between releases.
API Versioning
- Approach: Planned for future implementation using URL path prefixes (e.g.,
/v1/onboarding/chat) to allow multiple API versions to coexist. - Compatibility: New API versions aim to maintain backward compatibility for at least one previous release cycle to minimize disruption for consumers.
Database Schema
- Firestore: Schema modifications (like adding new fields to the
userscollection) are designed to be non-breaking and are implemented incrementally. - Migration: Database migration scripts, planned for future use, will reside in
/help_scripts/to manage necessary data transformations between schema versions.
Code Versioning
- Git Tags: Every official release is tagged in the Git repository (e.g.,
v1.0.0) for easy reference and traceability. - Semantic Versioning (SemVer): We strictly follow Semantic Versioning (
MAJOR.MINOR.PATCH) principles for all releases:MAJORversion change indicates incompatible API changes.MINORversion change adds functionality in a backward-compatible manner.PATCHversion change includes backward-compatible bug fixes.
🚀 Release Process
Our release process ensures that new features and fixes are delivered reliably and predictably.
Release Cycle
- Frequency: Releases are typically planned to align with sprint completion (approximately every 2-4 weeks).
- Staging Environment: All features undergo thorough testing in a dedicated staging environment that mirrors production before being deployed live.
Deployment
- Automation (CI/CD): Continuous Integration and Continuous Deployment pipelines using GitHub Actions and Google Cloud Build automate the deployment process to Firebase Hosting (frontend) and Cloud Run (backend).
- Rollback Strategy: Quick rollbacks are facilitated through Git tags and Cloud Run's revision management capabilities in case of unforeseen issues.
Release Notes
- Documentation: Comprehensive release notes are published on GitHub Releases for each version. These detail new features, bug fixes, performance improvements, and any potential breaking changes.
- Communication: Future plans include implementing in-app notifications to inform users about significant updates or major releases.
For detailed technical implementation of our release workflows, please refer to the configuration files in our GitHub repository: .github/workflows/.