## Fatcat Release Process This roughly describes the process of pushing a new minor (or patch) release of Fatcat to various targets. The order of operations here hasn't been reviewed yet, this is mostly just a checklist of things that need to happen. Eg, maybe the tag shouldn't be created until after client libraries have been pushed and the project deployed successfully. - merge/push/deploy any outstanding patches ahead of the version bump - update the version number in fatcat-openapi2.yml - codegen the rust libraries - edit both the `fatcat` and `fatcat-openapi` Cargo.toml files and update the version numbers. Make sure you commit the `fatcat-openapi` one before re-codegen or it will get clobbered (!) - codegen python client; may need to hand-tweak setup.py and README changes - edit `python_openapi_client/fatcat_openapi_client/__version__.py` and set the correct version number - under `python`, wipe either the entire local `.venv` or just the `fatcat_openapi_client` library copy. quit any pipenv shells, and re-run `pipenv --install`. - grep the repository with the old version number to see if anything was missed (you should expect at least CHANGELOG to match) - run all the tests locally and commit everything - update CHANGELOG.md in it's own commit - push for remote CI to run, eg on a separate branch. don't proceed until CI runs successfully! - after CI passes, locally merge to master, then tag the CHANGELOG commit with the new version number. sign the tag. this looks like `git tag v0.1.2 -s` - push master and the tags to all notable git remotes - deploy changes, remembering to rebuild rust and pipenv Great! Now we can push new python package (`fatcat-openapi-client`): - `rm -rf dist/` - `python3 setup.py sdist bdist_wheel` - Upload to test.pypi.org first, check that things look ok: `python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*` - Then real pypi.org: `python3 -m twine upload dist/*` and rust (`fatcat-openapi`): - `cd rust/fatcat-openapi/` - try first with: `cargo publish --dry-run` - then: `cargo publish`