diff options
-rw-r--r-- | extra/release_process.md | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/extra/release_process.md b/extra/release_process.md new file mode 100644 index 00000000..77e28035 --- /dev/null +++ b/extra/release_process.md @@ -0,0 +1,48 @@ + +## 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` |