Skip to main content

📅 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 users collection) 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:
    • MAJOR version change indicates incompatible API changes.
    • MINOR version change adds functionality in a backward-compatible manner.
    • PATCH version 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/.