summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extra/release_process.md48
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`