# Release checklist This document contains the workflows to follow for all changes and releases to `hpo`. The worklow assures that the `main` branch always holds a functional version of `hpo` with all tests passing. The `main` branch can be ahead of the official `crates.io` release. New versions for `crates.io` releases are created independently of the regular updates and will contain all changes present in the `main` branch at that point. My goal is to automate the version bump and release process using Github Actions at some point. This procedure is just a suggestion at this point and can be modified if needs arise. ## Regular updates / Normal development - [ ] Develop in a dedicated branch (or your own fork): `git checkout -b ` - [ ] Rebase onto `main`: `git rebase main ` - [ ] Double check for good code, sensible API and well-explained docs - [ ] Run format, clippy, tests and doc-generation: `cargo fmt --check && cargo clippy && cargo test && cargo doc` - [ ] Push to remote: `git push -u origin ` - [ ] Create merge/pull request to `main` branch - [ ] Once CICD passes, changes are merged to `main` ## Version bumps - [ ] Make dedicated branch named after version: `git checkout main && git pull && git checkout -b release/..` - [ ] Update Cargo.toml with new version - [ ] Update dependencies if needed and possible - [ ] Check if README or docs need update - [ ] Add Changelog summary of changes - [ ] Run format, clippy, tests and doc-generation: `cargo fmt --check && cargo clippy && cargo test && cargo doc` - [ ] add git tag with version: `git tag v..` - [ ] push to remote, also push tags: `git push -u origin release/.. && git push tags` - [ ] Merge into main - [ ] update main branch locally: `git checkout main && git pull` - [ ] release to cargo: `cargo publish`