sozu/RELEASE.md

60 lines
1.8 KiB
Markdown

# Release process
Sozu has a lot of moving pieces and some dependent projects, so
## Checklist
### Documentation
In cases of changes to:
- the configuration file format: update `bin/config.toml` and `doc/how_to_use.md`
- the configuration state: update `lib/src/lib.rs` documentation, and examples in `lib/examples`
- the command messages: update `command/README.md` and `lib/src/lib.rs`
### Testing
### Worker liveness
Launch sozu with `worker_automatic_restart` on, test a request, kill a worker, test a request
### Upgrades
- compile a sozu and sozuctl of the previous published version, store the binaries somewhere
- compile a sozu of the latest version
- start the old sozu version
- query its configuration state
- replace the old sozu file with the new one
- launch an upgrade with sozuctl
- check that the new sozu runs properly (listens for new connections, handles requests, etc)
- check the new sozu's state, compared to the previous one
- verify that the old workers quit correctly (if they were handling WebSocket connections, check that the master detetcs when you kill them)
For minor and patch releases, the upgrade process must always pass correctly.
### Update the changelog
## Publish the new version
update the version number in `Cargo.toml` files in:
- `command/`
- `lib/`
- `bin/`
Run `cargo build` at the root of the project to update the `Cargo.lock` file.
Commit the `Cargo.toml` and `Cargo.lock` changes.
Wait for the Travis CI build to pass.
## Following checks
Verify that the [Docker container](https://hub.docker.com/r/clevercloud/sozu/) was built correctly.
Update related projects to use the latest version of `sozu-command-lib` and `sozu-command-futures`:
- [sozu-acme](https://github.com/sozu-proxy/sozu-acme)
- [sozu-demo](https://github.com/sozu-proxy/sozu-demo)