### Release process
1. Have all your code merged to `develop`.
2. Have the version bumped. (Consult `How to do versioning`)
3. Create a PR to merge `develop` to `master/main`. (Consult `How to create a release PR`)
4. Merge using the `merge` strategy.
5. Create a release (consult `How to create a release`)
6. Wait for the action `Deploy to DockerHub` to finish.
7. A deployable docker image has been created.
---
### How to do versioning
- The proper format is `0.X.Y`.
- `X` is a major version and `Y` is a minor version.
- `0.X.0` has breaking changes with the previous version;
- ??`0.X.Y` are patches, fixes and new features without breaking changes.
### How to create a release
1. Go to https://github.com/alkem-io/XXX/releases, where `XXX` is a repository, i.e https://github.com/alkem-io/server/releases.
1. Start via the `Draft a new release` button.
1. Create a NEW tag via the `Choose a tag` button.
1. For the target branch put the branch from which you create this release - typically `master` or `main`.
- ?? If a version is already released consult `How to do patches`
1. For the title put the summary of features in the release
1. Click on `Generate release notes`. This will fill the description with all the PRs merged in this version. Remove the PRs that are not feature, like version bumping.
1. Publish the release
1. A Github action is triggered, which will publish a docker image tagged with this version.
1. Create a new branch on remote, which the name of the version, tracking the just merged develop.
Never merge develop back into it until the end of it's life.
### How to create a release PR
1. In the title use `[version] Summary of features in the release`
2. Leave the description empty
3. After releasing put the release notes inside the description
### How to do patches [Draft]
- Ideally we don't want new features inside patches.
- Branch off the release branch and never merge develop into it.
- merge fixes into the release branch
- release patched versions off the release branch
- ?? when you are happy with the state merge the release branch into develop
- ?? merge the release branch into master