# SEE 16.11.2022 Notes - Release Management
## Overview / Current context
We have a semi-automated BTD (build-test-deploy) process. At this stage, the release validation is largely done manually, release notes as well, and deploying an item to production is a multi-step manual process that requires tribal knowledge.
## Goals
- [ ] Release Cycle and Lead time reduced
## Current state
- [ ] Data migration is hard to validate. Migrations run in parallel when multiple instances of the server are used which breaks them frequently.
- [ ] BACKUPS ARE HARD TO RESTORE. Require tribal knowledge. Canvas templates are huge and break the restore. Lead time of data restore is very high.
- [ ] Release notes written manually
- [ ] Release validation done largely by QA(Evgeni) and not distributed among the team
- [ ] Builds in acceptance, demo, production don't validate deployments in multiple namespaces leading to false negative failed builds
- [ ] Version management is done manually
- [ ] Repetetive work done manually
- [ ] No release checklist
- [ ] Authorization reset is done manually with personal accounts
- [ ] Release scope + timeline is almost always unclear. Release planning should be improved. Regular release cadance?
- [ ] Translations are also done manually now
- [ ] We have QA column with many items in progress just before the release
- [ ] Frequently disruptive changes before a release
- [ ] Always rushing the release
- [ ] Release notes on infra-ops done manually
- [ ] Access control & approvals of the release process coupled with the infrastructure definitions
- [ ] Release process is not documented
- [ ] Github actions are outdated
- [ ] Pull Requests not always manually validated by the reviewer
- [ ] NPM packages pushed to npmjs manually
## Desired state
- [ ] Release checklist available and verified with each release
- [ ] Release flow documented with diagrams
- [ ] Access control & approvals of the release process de-coupled from the infrastructure definitions
- [ ] Migrations run BEFORE the server. If the migration fails backup needs to be restored automatically. If the backup fails a list of users receive a notification.
- [ ] Data backups restored in ~5 minutes with no tribal knowledge involved (just run a single sql command)
- [ ] Release notes built up from commits (e.g. the way Ory does that)
- [ ] Client regression suit with smoke tests (sanity checks)
- [ ] Semantic versioning with tooling
- [ ] Optionally AHT
- [ ] PRs always functionally validated by the reviewer (at least the straight case)
- [ ] Authorization reset done with service account as part of the deployment. Feedback provided if it fails.
- [ ] No false negatives regarding the deployment state.
- [ ] Release planning improved - scope, timeline of all releases in a sprint agreed up front (at the beginning of the sprint)
- [ ] NPM packages pushed to npmjs with github action
## Actions
- [ ] @Valentin - Evaluate Github Enterprise
- [ ] @Valentin @Evgeni - create release checklist
- [ ] @Valentin - create diagrams + documentation about the release process
- [ ] @Valentin @4wrEm8T9TJWmfygK5dQIvA data migrations automated (sidecar) + validated before the server starts
- [ ] @4wrEm8T9TJWmfygK5dQIvA - Release planning
- [ ] @4wrEm8T9TJWmfygK5dQIvA - Translation process integrated in the release
###### tags: `SEE`, `Release Management`, `DevOps`