Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
Add documentation to be rendered by readthedocs #128
Open
KonstantinSchubert
wants to merge 2 commits into
everware:master
from
KonstantinSchubert:add_readthedocs
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
Jump to file or symbol
Failed to load files and symbols.
177
docs/Makefile
| @@ -0,0 +1,177 @@ | ||
| +# Makefile for Sphinx documentation | ||
| +# | ||
| + | ||
| +# You can set these variables from the command line. | ||
| +SPHINXOPTS = | ||
| +SPHINXBUILD = sphinx-build | ||
| +PAPER = | ||
| +BUILDDIR = _build | ||
| + | ||
| +# User-friendly check for sphinx-build | ||
| +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) | ||
| +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) | ||
| +endif | ||
| + | ||
| +# Internal variables. | ||
| +PAPEROPT_a4 = -D latex_paper_size=a4 | ||
| +PAPEROPT_letter = -D latex_paper_size=letter | ||
| +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||
| +# the i18n builder cannot share the environment and doctrees with the others | ||
| +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||
| + | ||
| +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext | ||
| + | ||
| +help: | ||
| + @echo "Please use \`make <target>' where <target> is one of" | ||
| + @echo " html to make standalone HTML files" | ||
| + @echo " dirhtml to make HTML files named index.html in directories" | ||
| + @echo " singlehtml to make a single large HTML file" | ||
| + @echo " pickle to make pickle files" | ||
| + @echo " json to make JSON files" | ||
| + @echo " htmlhelp to make HTML files and a HTML help project" | ||
| + @echo " qthelp to make HTML files and a qthelp project" | ||
| + @echo " devhelp to make HTML files and a Devhelp project" | ||
| + @echo " epub to make an epub" | ||
| + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" | ||
| + @echo " latexpdf to make LaTeX files and run them through pdflatex" | ||
| + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" | ||
| + @echo " text to make text files" | ||
| + @echo " man to make manual pages" | ||
| + @echo " texinfo to make Texinfo files" | ||
| + @echo " info to make Texinfo files and run them through makeinfo" | ||
| + @echo " gettext to make PO message catalogs" | ||
| + @echo " changes to make an overview of all changed/added/deprecated items" | ||
| + @echo " xml to make Docutils-native XML files" | ||
| + @echo " pseudoxml to make pseudoxml-XML files for display purposes" | ||
| + @echo " linkcheck to check all external links for integrity" | ||
| + @echo " doctest to run all doctests embedded in the documentation (if enabled)" | ||
| + | ||
| +clean: | ||
| + rm -rf $(BUILDDIR)/* | ||
| + | ||
| +html: | ||
| + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | ||
| + @echo | ||
| + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." | ||
| + | ||
| +dirhtml: | ||
| + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml | ||
| + @echo | ||
| + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." | ||
| + | ||
| +singlehtml: | ||
| + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml | ||
| + @echo | ||
| + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." | ||
| + | ||
| +pickle: | ||
| + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle | ||
| + @echo | ||
| + @echo "Build finished; now you can process the pickle files." | ||
| + | ||
| +json: | ||
| + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json | ||
| + @echo | ||
| + @echo "Build finished; now you can process the JSON files." | ||
| + | ||
| +htmlhelp: | ||
| + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp | ||
| + @echo | ||
| + @echo "Build finished; now you can run HTML Help Workshop with the" \ | ||
| + ".hhp project file in $(BUILDDIR)/htmlhelp." | ||
| + | ||
| +qthelp: | ||
| + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp | ||
| + @echo | ||
| + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ | ||
| + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" | ||
| + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/everware.qhcp" | ||
| + @echo "To view the help file:" | ||
| + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/everware.qhc" | ||
| + | ||
| +devhelp: | ||
| + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp | ||
| + @echo | ||
| + @echo "Build finished." | ||
| + @echo "To view the help file:" | ||
| + @echo "# mkdir -p $$HOME/.local/share/devhelp/everware" | ||
| + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/everware" | ||
| + @echo "# devhelp" | ||
| + | ||
| +epub: | ||
| + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub | ||
| + @echo | ||
| + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." | ||
| + | ||
| +latex: | ||
| + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
| + @echo | ||
| + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." | ||
| + @echo "Run \`make' in that directory to run these through (pdf)latex" \ | ||
| + "(use \`make latexpdf' here to do that automatically)." | ||
| + | ||
| +latexpdf: | ||
| + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
| + @echo "Running LaTeX files through pdflatex..." | ||
| + $(MAKE) -C $(BUILDDIR)/latex all-pdf | ||
| + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||
| + | ||
| +latexpdfja: | ||
| + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
| + @echo "Running LaTeX files through platex and dvipdfmx..." | ||
| + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja | ||
| + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||
| + | ||
| +text: | ||
| + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text | ||
| + @echo | ||
| + @echo "Build finished. The text files are in $(BUILDDIR)/text." | ||
| + | ||
| +man: | ||
| + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man | ||
| + @echo | ||
| + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." | ||
| + | ||
| +texinfo: | ||
| + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||
| + @echo | ||
| + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." | ||
| + @echo "Run \`make' in that directory to run these through makeinfo" \ | ||
| + "(use \`make info' here to do that automatically)." | ||
| + | ||
| +info: | ||
| + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||
| + @echo "Running Texinfo files through makeinfo..." | ||
| + make -C $(BUILDDIR)/texinfo info | ||
| + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." | ||
| + | ||
| +gettext: | ||
| + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale | ||
| + @echo | ||
| + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." | ||
| + | ||
| +changes: | ||
| + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes | ||
| + @echo | ||
| + @echo "The overview file is in $(BUILDDIR)/changes." | ||
| + | ||
| +linkcheck: | ||
| + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck | ||
| + @echo | ||
| + @echo "Link check complete; look for any errors in the above output " \ | ||
| + "or in $(BUILDDIR)/linkcheck/output.txt." | ||
| + | ||
| +doctest: | ||
| + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest | ||
| + @echo "Testing of doctests in the sources finished, look at the " \ | ||
| + "results in $(BUILDDIR)/doctest/output.txt." | ||
| + | ||
| +xml: | ||
| + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml | ||
| + @echo | ||
| + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." | ||
| + | ||
| +pseudoxml: | ||
| + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml | ||
| + @echo | ||
| + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." |
| @@ -0,0 +1,48 @@ | ||
| +Being everware compatible | ||
| +================ | ||
| + | ||
| +To make your existing repository work with `everware` it needs to contain a `Dockerfile` that describes how to create the image your code will run in. | ||
| + | ||
| +You can think of [`docker`](https://www.docker.com/) images as extremely lightweight virtual machines. [Find out more about docker](https://www.docker.com/whatisdocker). | ||
| + | ||
| +For most users the simplest way to make their repository `everware`-ready is to create a `Dockerfile` in their repositories top level directory which simply inherits `FROM` an existing `docker` image that works with `everware`. You can make small modifications to existing images to install extra libraries or pieces of software. If this is you, read about how to [use an existing docker image](). | ||
| + | ||
| +If you are an experienced `docker` user or have really specific needs you can also start from scratch. However this means you need to take care of making the image you create compatible with `everware`. If this is you, read about how to [start from scratch](https://github.com/everware/everware/wiki/Being-everware-compatible#building-your-own-image-from-scratch). | ||
| + | ||
| + | ||
| +## Using an existing docker image | ||
| + | ||
| +A lot of different `docker` containers already exist, so your chances are good that you do not have to create one from scratch for your repository. | ||
| + | ||
| +The most basic `Dockerfile` to get your repository to work with `everware` is: | ||
| + | ||
| +``` | ||
| +FROM everware/base | ||
| +``` | ||
| + | ||
| +This is extremely barebones but brings with it all the infrastructure that is needed. Probably you want to extend your image with a few useful bits of software. Check out our [`everware/container-tools`](https://github.com/everware/basic-container) repository and the [`README.md`](https://github.com/everware/container-tools/blob/master/README.md) therein for ideas on how to do that. | ||
| + | ||
| +You can also use an image which has more software pre-installed. The [`everware-dimuon-example`](https://github.com/everware/everware-dimuon-example) repository uses a [`Dockerfile`](https://github.com/everware/everware-dimuon-example/blob/master/Dockerfile) which takes a base image (`anaderi/rep-jupyterhub`) and extends it by installing two additional python libraries. This is convenient as that docker image already contains a large number of libraries and all the `everware` specific setup steps. | ||
| + | ||
| +Check out the `anaderi/jupyterhub` [`Dockerfile`](https://hub.docker.com/r/anaderi/rep-jupyterhub/~/dockerfile/) to see the long list of software installed by default. | ||
| + | ||
| +If you do not need extra setup steps for your code to run you can use `anaderi/rep-jupyterhub` as the basis for your repository by creating a `Dockerfile` in the top level directory of your repository with the following contents: | ||
| + | ||
| +``` | ||
| +FROM anaderi/rep-jupyterhub | ||
| +MAINTAINER John Doe <john.doe@example.com> | ||
| +``` | ||
| + | ||
| +This is enough to make your repository `everware`-ready. | ||
| + | ||
| + | ||
| +## Building your own image from scratch | ||
| + | ||
| +If you are more experienced with `docker` or have special requirements then you can start from scratch. However this means you need to make sure your `docker` image contains a few extra things to make it work with `everware`. When the container is started it needs to launch a custom `singleuser.py` script which comes from `jupyterhub` (this takes care of setting up routing, etc) as well as cloning the `git` repository. | ||
| + | ||
| +For details of how to setup a container from the Ubuntu base image check out the [`everware/container-tools`](https://github.com/everware/basic-container) repository and the [`README.md`](https://github.com/everware/container-tools/blob/master/README.md). The repository contains two images: `everware/base` and `everware/science-python`. These are not meant for production use but to document the process of creating your own containers from scratch and then building on top of them. | ||
| + | ||
| +> The [`everware/container-tools`](https://github.com/everware/container-tools) repository | ||
| +> contains examples, documentation, and tools for constructing and populating your containers. | ||
| + | ||
| +The `everware/base` container does just the bare minimum to be compatible with `everware`. As a result it does not contain any special libraries. It does install python 2 and 3. Python 3 is required for `jupyterhub` which is what `everware` uses as the web-interface. |
Oops, something went wrong.