Release Workflow
Complete guide to our release management process and deployment pipeline
Release Workflow
Looking for the step-by-step guide to trigger releases? See GitHub Release Process for the workflow-based release steps.
Overview
Our release process is designed to ensure stable, predictable deployments while maintaining flexibility for urgent fixes. We follow a structured branching strategy with automated testing and staged deployments across multiple environments.
Release workflows are automated via GitHub Actions dispatch workflows. Release engineers (release-devs and devops teams) trigger workflows from the GitHub Actions UI.
Key Principles
- Regular Release Cadence: Code releases every Tuesday
- Dual-Track Development: Separate branches for features and hotfixes
- Progressive Testing: E2E → Sanity → Production
- Regional Deployments: Phased rollout across production regions
Branching Strategy
We maintain two primary development branches:
Develop Branch
- Purpose: Features and changes with large impact areas
- Release Cycle: Every two weeks
- Use Case: New features, major refactoring, significant improvements
Hotfix Branch
- Purpose: Bug fixes and changes with small impact areas
- Release Cycle: Every week
- Use Case: Critical bugs, minor fixes, low-risk updates
Release Schedule
Weekly Timeline
| Day | Activity | Description |
|---|---|---|
| Tuesday | Release Day | Code deployed to production |
| Wednesday - Thursday | Active Development | PRs created and reviewed |
| Friday (Second Half) or Monday (First Half) | Code Freeze | Release PR created against main |
Release Cycles
- Hotfix: Weekly releases (every Tuesday)
- Develop: Bi-weekly releases (every two weeks on Tuesday)
Development Workflow
1. Create Pull Request
Create your PR against the appropriate branch:
# For features or large changes
git checkout -b feature/your-feature-name
# Create PR against 'develop' branch
# For bug fixes or small changes
git checkout -b fix/your-bug-fix
# Create PR against 'hotfix' branch2. Merge to Development Branch
Once your PR is approved and merged:
- Develop branch → Automatically deployed to
e2e-lhapp.crelop.solutions - Hotfix branch → Automatically deployed to
e2e-lhapp.crelop.solutions
3. Testing on E2E Environment
After merge, your changes are available on the E2E environment:
- URL: https://e2e-lhapp.crelop.solutions
- Purpose: Developer testing and verification
- Action: Verify your changes work as expected
4. QA Verification
Once you've verified your changes:
- Update the ticket status
- Request QA team to verify
- QA performs functional testing
Release Process
Release workflows are triggered from the GitHub Actions UI. See the GitHub Release Process page for the complete step-by-step guide.
Summary
- Merge to Main —
Release: Merge to Mainworkflow mergesdeveloporhotfixintomain - Branch realignment —
main → develop & hotfixruns automatically - Pre-Production —
Release: Pre-Productioncreates a release PR with AI-generated notes - QA verification — QA tests on sanity environment
- Merge release PR —
main → production - Release Summary — Cross-repo Slack notification from
release-notesrepo
Phase 1: Code Freeze
Timeline: Friday (second half) or Monday (first half)
- Development teams stop merging new changes
- Release PR created against
mainbranch - Final review of included changes
Phase 2: Sanity Environment
Environment: main branch
- URL: https://sanity-lhapp.crelio.solutions
- Purpose: QA automation suite execution
- QA team runs comprehensive sanity tests
- Regression testing performed
Phase 3: Production Deployment
Triggered: After QA approval
mainbranch merged toprod-<region_name>branches- Serves production servers per region
- Deployment pipeline triggered manually
# Regional production branches
prod-us
prod-eu
prod-asia
# ... other regionsEnvironment Hierarchy
Quick Reference
When to Use Each Branch
Use develop when:
- Adding new features
- Making architectural changes
- Refactoring with wide impact
- Changes affecting multiple services
Use hotfix when:
- Fixing production bugs
- Making small UI tweaks
- Updating copy or content
- Changes with isolated impact
Important URLs
| Environment | URL | Purpose |
|---|---|---|
| E2E | https://e2e-lhapp.crelop.solutions | Developer testing |
| Sanity | https://sanity-lhapp.crelio.solutions | QA automation |
| Production | Various regional URLs | Live customer-facing |
Best Practices
✅ Do's
- Test your changes thoroughly on E2E before requesting QA
- Create PRs well before code freeze to allow time for review
- Communicate with team if your change might affect others
- Monitor deployments after production release
❌ Don'ts
- Don't merge to
develop/hotfixduring code freeze - Don't skip E2E verification before involving QA
- Don't create large PRs against
hotfixbranch - Don't trigger production deployment without QA approval
Last Updated: March 2026