diff --git a/docs/changelog.rst b/docs/changelog.rst index a383b228..3c095330 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,3 +1,5 @@ +.. _changelog: + ========= Changelog ========= diff --git a/docs/contributing.rst b/docs/contributing.rst index b9a077d6..f7b9f936 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -69,3 +69,56 @@ You can also use the ``fixtures.py`` script to recreate the testing version of ` Then run Datasette like this:: datasette fixtures.db -m fixtures-metadata.json + +Editing and building the documentation +-------------------------------------- + +Datasette's documentation lives in the ``docs/`` directory and is deployed automatically using `Read The Docs `__. + +You can build it locally by installing ``sphinx`` and ``sphinx_rtd_theme`` in your Datasette development environment and then running ``make`` directly in the ``docs/`` directory:: + + source venv/bin/activate + pip install sphinx sphinx_rtd_theme + cd docs/ + make + +This will create the HTML version of the documentation in ``docs/_build/html``. You can open it in your browser like so:: + + open _build/html/index.html + +Any time you make changes to a ``.rst`` file you can re-run ``make`` to update the built documents, then refresh them in your browser. + +The documentation is written using reStructuredText. You may find this article on `The subset of reStructuredText worth committing to memory `__ useful. + +Release process +--------------- + +Datasette releases are performed using tags. When a new version tag is pushed to GitHub, a `Travis CI task `__ will perform the following: + +* Run the unit tests against all supported Python versions. If the tests pass... +* Set up https://v0-25-1.datasette.io/ (but with the new tag) to point to a live demo of this release +* Build a Docker image of the release and push a tag to https://hub.docker.com/r/datasetteproject/datasette +* Re-point the "latest" tag on Docker Hub to the new image +* Build a wheel bundle of the underlying Python source code +* Push that new wheel up to PyPI: https://pypi.org/project/datasette/ + +Datasette follows `Semantic Versioning `__:: + + major.minor.patch + +We increment ``major`` for backwards-incompatible releases. Datasette is currently pre-1.0 so the major version is always ``0``. + +We increment ``minor`` for new features. + +We increment ``patch`` for bugfix releass. + +To release a new version, first create a commit that updates :ref:`the changelog ` with highlights of the new version. An example `commit can be seen here `__. + +Then run the following:: + + git tag 0.25.2 + git push && git push --tags + +You will need to have push access to the main Datasette GitHub repository. + +Once the release is out, you can manually update https://github.com/simonw/datasette/releases