From c81a88b9636975d26520486e0ea26d960e98e893 Mon Sep 17 00:00:00 2001 From: Roman Gorshunov Date: Thu, 7 Feb 2019 00:37:10 +0100 Subject: [PATCH] Embed UML generated diagrams into docs, fix docs build Remove manual generation of UML diagrams; they will be built by Sphinx itself. Require to install PlantUML and Graphviz via bindep in openstack-tox-docs job; ReadTheDocs service already has both PlantUML and Graphviz installed for documentation builds. Change-Id: I21ab124a80e7768bc9edd891b975b4e0f8a6e50d Story: 2004747 --- Makefile | 2 ++ bindep.txt | 6 ++++++ doc/requirements.txt | 1 + doc/source/conf.py | 1 + doc/source/contributor/developer-overview.rst | 4 ++-- doc/source/images/architecture-pegleg.png | Bin 37602 -> 0 bytes doc/source/images/architecture.png | Bin 23232 -> 0 bytes tools/build-docs.sh | 5 ----- 8 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 bindep.txt delete mode 100644 doc/source/images/architecture-pegleg.png delete mode 100644 doc/source/images/architecture.png diff --git a/Makefile b/Makefile index e513c7de..7489a6c4 100644 --- a/Makefile +++ b/Makefile @@ -94,6 +94,8 @@ clean: rm -rf build helm delete helm-template ||: rm -rf doc/build + # Don't remove .placeholder from doc/source/_static/ + rm -rf doc/api doc/source/_static/* doc/source/contributor/api .PHONY: docs docs: clean build_docs diff --git a/bindep.txt b/bindep.txt new file mode 100644 index 00000000..b8ef165e --- /dev/null +++ b/bindep.txt @@ -0,0 +1,6 @@ +# This file contains runtime (non-python) dependencies +# More info at: https://docs.openstack.org/infra/bindep/readme.html + +# PlantUML is used for documentation builds, graphviz is it's soft dependancy +plantuml +graphviz diff --git a/doc/requirements.txt b/doc/requirements.txt index 08ab488f..755facfb 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -6,6 +6,7 @@ sphinx_rtd_theme reno>=2.5.0 # Apache-2.0 plantuml sphinxcontrib-apidoc>=0.2.0 # BSD +sphinxcontrib-plantuml # NOTE(felipemonteiro): Required by RTD to make oslo.policy and # oslo.config sample generation work. diff --git a/doc/source/conf.py b/doc/source/conf.py index 62f3c118..08dd88f9 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -40,6 +40,7 @@ extensions = [ 'sphinx.ext.todo', 'sphinx.ext.viewcode', 'sphinxcontrib.apidoc', + 'sphinxcontrib.plantuml', 'oslo_config.sphinxconfiggen', 'oslo_policy.sphinxpolicygen', # NOTE(fmontei): This is here so that readthedocs can publish releasenotes diff --git a/doc/source/contributor/developer-overview.rst b/doc/source/contributor/developer-overview.rst index 718ec622..eba1bb3f 100644 --- a/doc/source/contributor/developer-overview.rst +++ b/doc/source/contributor/developer-overview.rst @@ -26,7 +26,7 @@ Airship components. Architecture ============ -.. image:: ../images/architecture.png +.. uml:: ../diagrams/architecture.uml :alt: High level architecture of Deckhand From a high-level perspective, Deckhand consists of a RESTful API, a document @@ -41,7 +41,7 @@ Deckhand uses Barbican to securely storage sensitive document data. `Pegleg `_ in effect provides Deckhand with a CLI, which facilitates communication with Deckhand. -.. image:: ../images/architecture-pegleg.png +.. uml:: ../diagrams/architecture-pegleg.uml :alt: High level architecture of Deckhand + Pegleg Components diff --git a/doc/source/images/architecture-pegleg.png b/doc/source/images/architecture-pegleg.png deleted file mode 100644 index 85428fbecddc16ad1cba24731fff24c8b9862b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37602 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 XL{r^&N@~81|B9THvLxogqv!tze8qQt diff --git a/doc/source/images/architecture.png b/doc/source/images/architecture.png deleted file mode 100644 index 225a7948a1df51544fda4413baad11ccd1e9bb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23232 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 AvH$=8 diff --git a/tools/build-docs.sh b/tools/build-docs.sh index ec2e4372..198c0bd4 100755 --- a/tools/build-docs.sh +++ b/tools/build-docs.sh @@ -5,11 +5,6 @@ set -ex -# Generate architectural diagrams. -mkdir -p doc/source/images -python -m plantuml doc/source/diagrams/*.uml -mv doc/source/diagrams/*.png doc/source/images - # Generate documentation. rm -rf doc/build doc/source/contributor/api/ releasenotes/build sphinx-apidoc -o doc/api deckhand