Releasing
This page is a guide to releasing new versions of Oscar. It's documented as there are quite a few things to do.
These are the steps involved.
- Run
pytest
and check that the tests on Github actions are passing.
make lint
-
Pull updates from Transifex (forcing download of all files) with:
tx pull -a -f
-
Update compiled message files and commit:
make compile_translations
Ensure the docs build correctly (without warnings):
make docs
Ensure the release branch is enabled on readthedocs and the docs are building correctly there.
Update list of Oscar contributors:
git log --format="%aN" | sort | uniq -c | sort -rn | awk '$1>=$THRESHOLD {$1=""; print $0}' | cut -d" " -f2- > AUTHORS
Update the oscar version in the following files:
src/oscar/__init__.py
package.json
package-lock.json (two occurrences)
Commit these changes.
Make a commit that bumps the version number to final
, and tag that commit, e.g.:
$ git tag <version, e.g 1.0>
Push the branch and the tag:
$ git push
$ git push origin <tag name, e.g 1.0>
Create a new branch releases/<version>
and push it.
Release both a source distribution and a wheel to PyPi:
$ pip install --upgrade pip wheel twine
$ npm ci
$ rm -rf src/oscar/static/
$ rm -rf dist/
$ rm -rf build/
$ npm run build
$ python setup.py clean --all
$ python setup.py sdist bdist_wheel
$ twine upload dist/*
-
Tweet about it via @django_oscar
-
Email mailing list with link to release notes
-
Update readthedocs to use the new version as the latest (only relevant for major version bumps)
-
Update Google Drive stats
-
Update oscarcommerce.com (if appropriate)
-
Clean up remote branches that are no longer needed. Delete with:
git push origin :branch-to-delete
-
Merge release branch back into master
-
Bump the Oscar version on master, and add release notes for the new version. Onwards!
Have a banana!