Release process

Before release

  • Update requirements*.txt (use pip list -o).
  • Make sure that setup.py has proper requirements.
  • Check .travis.yaml if the proper Django and cryptography versions are tested.
  • Check test coverage (setup.py coverage).
  • Update version parameter in setup.py.
  • Update version and release in docs/source/conf.py.
  • Make sure that docs/source/changelog.rst is up to date.
  • Make sure that tox runs through for all environments.
  • Make sure that python setup.py docker_test runs through.
  • Push the last commit and make sure that Travis and Read The Docs are updated.

Docker image

Create a docker image:

docker build --no-cache -t django-ca-dev .
docker run --rm -d --name=django-ca-dev -p 8000:8000 django-ca-dev
docker exec -it django-ca-dev python ca/manage.py createsuperuser
docker exec -it django-ca-dev python ca/manage.py init_ca \
   example /C=AT/ST=Vienna/L=Vienna/O=Org/CN=ca.example.com

… and browse http://localhost:8000/admin.

Release process

  • Tag the release: git tag -s $version

  • Push the tag: git push origin --tags

  • Create a release on GitHub.

  • Upload release to PyPI: python setup.py sdist bdist_wheel upload.

  • Tag and upload the docker image (note that we create a image revision by appending -1):

    docker tag django-ca-dev mathiasertl/django-ca
    docker tag django-ca-dev mathiasertl/django-ca:$version
    docker tag django-ca-dev mathiasertl/django-ca:$version-1
    docker push mathiasertl/django-ca
    docker push mathiasertl/django-ca:$version
    docker push mathiasertl/django-ca:$version-1