summaryrefslogtreecommitdiff
path: root/RELEASE.md
diff options
context:
space:
mode:
Diffstat (limited to 'RELEASE.md')
-rw-r--r--RELEASE.md106
1 files changed, 106 insertions, 0 deletions
diff --git a/RELEASE.md b/RELEASE.md
new file mode 100644
index 00000000..57172a00
--- /dev/null
+++ b/RELEASE.md
@@ -0,0 +1,106 @@
+## NOTICE
+
+this is not accurate anymore and needs to be reworked.
+
+
+## Release instructions
+
+When releasing a new version, the following steps should be taken:
+
+1. Make sure all automated tests pass.
+
+2. Make sure the package metadata in `setup.py` is up-to-date. You can
+ verify the information by re-generating the egg info:
+
+ ```
+ python setup.py egg_info
+ ```
+
+ and inspecting `src/pysaml2.egg-info/PKG-INFO`. You should also make sure
+ that the long description renders as valid reStructuredText. You can
+ do this by using the `rst2html.py` utility from [docutils]:
+
+ ```
+ python setup.py --long-description | rst2html > test.html
+ ```
+
+ If this will produce warning or errors, PyPI will be unable to render
+ the long description nicely. It will treat it as plain text instead.
+
+3. Update the version in the [VERSION] file and report the changes in
+ [CHANGELOG.md] and commit the changes.:
+
+ ```
+ git add CHANGELOG.md
+ git add VERSION
+ git commit -v -s -m "Release version X.Y.Z"
+ ```
+
+4. Create a release [branch]:
+
+ ```
+ git branch vX.Y.Z
+ ```
+
+5. Create a release [tag]:
+
+ ```
+ git tag -a -s vX.Y.Z -m "Version X.Y.Z"
+ ```
+
+6. Push these changes to Github:
+
+ ```
+ git push --follow-tags origin vX.Y.Z
+ git push --follow-tags origin vX.Y.Z:vX.Y.Z
+ ```
+
+7. Create a source and wheel distribution and upload it to PyPI:
+
+ generate a source and wheel distribution at once
+ ```
+ python setup.py sdist bdist_wheel
+ ```
+
+ generated files are under dist/
+ ```
+ ls dist/
+ ```
+
+ upload release on test.pypi.org
+ ```
+ twine upload --repository-url https://test.pypi.org/legacy/ dist/pysaml2-X.Y.Z*
+ ```
+
+ then, upload release on official pypi.org
+ ```
+ twine upload dist/pysaml2-X.Y.Z*
+ ```
+
+8. Upload the documentation to PyPI. First you need to generate the html
+ version of the documentation:
+
+ ```
+ cd docs/
+ make clean
+ make html
+ cd _build/html
+ zip -r pysaml2-docs.zip *
+ ```
+
+ Submit the generated pysaml2-docs.zip file.
+
+9. Send an email to the pysaml2 list announcing this release
+
+
+**Important:** Once released to PyPI or any other public download location,
+a released egg may *never* be removed, even if it has proven to be a faulty
+release ("brown bag release"). In such a case it should simply be superseded
+immediately by a new, improved release.
+
+
+ [VERSION]: https://github.com/IdentityPython/pysaml2/blob/master/VERSION
+ [CHANGELOG.md]: https://github.com/IdentityPython/pysaml2/blob/master/CHANGELOG.md
+ [docutils]: http://docutils.sourceforge.net/
+ [branch]: https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell
+ [tag]: https://git-scm.com/book/en/v2/Git-Basics-Tagging#_annotated_tags