diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e028b27c188e8f1070f8f31963ba4f2dbb82ee54..2daf3e1bbee5b23de59955287fb8d5c3e8ed7ad2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -75,7 +75,7 @@ upload:
   script:
     - mv "$pypirc" $HOME/.pypirc
     - pipenv run build
-    - pipenv run upload
+    - pipenv run upload dist/*
   variables: *variables
   cache: *cache
   rules:
diff --git a/Pipfile b/Pipfile
index 9ed9870f7da6cf99364022efa3353950bc4b42ec..0a19f57e81baf2911dc76cea23042c1e9860b20e 100644
--- a/Pipfile
+++ b/Pipfile
@@ -13,7 +13,7 @@ template = {editable = true,path = "."}
 lint = "pre-commit run --all-files"
 build = "python setup.py bdist_wheel"
 clean = "git clean -fdX"
-upload = "sh -c 'twine upload dist/*'"
+upload = "twine upload"
 bats = "bats -t tests/"
 check = "sh -c 'rm -rf dist/ && python setup.py bdist_wheel && twine check dist/*'"
 doctest = "sh -c 'python -m doctest template/*.py'"
diff --git a/README.rst b/README.rst
index b16919910547c8c6efa1bc816de87f5ffef3b37e..1d2ba6e548505958053ae9e1775180b5f3b27292 100644
--- a/README.rst
+++ b/README.rst
@@ -77,8 +77,10 @@ Release
 
 Release requires `Pipenv <https://docs.pipenv.org>`_. To bump the version run
 :code:`pipenv run bumpversion major|minor|patch` to update the version and git
-commit and tag. Then run :code:`pipenv run upload` to upload the new version to
-PyPI and :code:`git push --follow-tags` to push the git commit and tag.
+commit and tag the changes, then run :code:`git push --follow-tags` to push the
+git commit and tag. The GitLab CI will then build and upload a release to PyPI.
+To manually upload to PyPI run :code:`pipenv run build` to build the Python
+package and :code:`pipenv run upload -s dist/*` to upload a signed version.
 
 License
 -------