xPulse
πŸ‡¬πŸ‡§ EN

xPulse Chat – Release Day & Staging Switch Protocol

This document describes the complete flow of a release day: from the end of the test period through the production release to setting up the new staging environment for the next RC.


Overview

End of Test Period
↓
Merge RC to production & deploy
↓
Staging teardown (incl. log deletion) ← promise to testers
↓
Prepare new RC branch
↓
Set up new staging
↓
Send out new feedback survey

1. End of Test Period


2. Production Release

2.1 Merge Branch

git checkout main
git merge --no-ff release/vX.Y.Z
git tag vX.Y.Z
git push origin main --tags

2.2 Deploy to Production

make prod-down
git pull
make prod

2.3 Smoke Test


3. Staging Teardown

Privacy promise: After each test period ends, all staging containers, volumes, and logs are completely removed. Tester activity is no longer reconstructable afterwards.

3.1 Makefile Target

make stage-teardown

The target handles automatically (see Makefile):

  1. Stop and remove containers
  2. Remove Docker volumes (-v)
  3. Delete log files in var/log/stage/
  4. Remove Docker images for this RC

3.2 Verify Manually

# No containers running anymore
docker ps | grep stage
# Log directory empty
ls -la var/log/stage/
# Subdomain no longer reachable
curl -I https://rc-X-Y-Z.stage.xpulse.one
# β†’ should return 404 / Connection refused

4. Prepare New RC Branch

git checkout -b release/vA.B.C
# Update .env.stage:
# RC_VERSION=rc-A-B-C

5. Set Up New Staging

make stage

Smoke Test Staging


6. New Feedback Survey


Makefile Reference

Target Description
make stage Start staging
make stage-down Stop staging
make stage-teardown Full teardown incl. logs
make stage-update Pull + restart
make prod Deploy to production
make prod-down Stop production

Version History of This Protocol

Date Release Notes
– v1.2.0 β†’ v1.3.0 First documented release day
en/release-protocol.md 2026-04-17