Release Process¶
Before You Read¶
This guide covers versioning and release tagging. For how the release propagates to the cluster see GitOps Workflow.
Versioning Convention¶
[NEEDS TEAM INPUT: describe the versioning scheme used — semantic versioning (v1.2.3), date-based, commit SHA-based, or a combination. Is there a release-version file in each repo?]
The Bitbucket pipeline in infrastructure-management/bitbucket-pipelines.yml triggers on version tags matching *v* (e.g., v1.2.3).
Release Steps¶
1. Create a Release Tag¶
# In the microservice repository
git checkout main
git pull origin main
# Tag the release
git tag -a v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
2. CI Builds the Release Image¶
Bitbucket Pipelines builds and pushes:
[NEEDS TEAM INPUT: does the pipeline also build a latest tag? Does it auto-update the infra repo?]
3. Update Infra Repo¶
Update the image tag in infrastructure-configuration with the release version:
Commit and open a PR. After merge, ArgoCD deploys.
4. Tag the Infra Repo¶
[NEEDS TEAM INPUT: is there a practice of tagging the infra repo to record which versions are deployed to which environment?]
Release Notes¶
[NEEDS TEAM INPUT: describe where release notes live — Bitbucket, Confluence, a CHANGELOG.md file?]
Hotfix Process¶
For critical production bugs:
- Create a hotfix branch from the production tag:
git checkout -b hotfix/v1.2.4 v1.2.3 - Apply the fix and commit
- Tag:
git tag v1.2.4 - Push and open PR for review
- After merge, follow GitOps Workflow for deployment
Rollback¶
If a release is bad, see Rollbacks for immediate response, then follow the hotfix process above.