blob: d9f87af51f0b2c3065d8d5039b483297119bd5d5 [file] [log] [blame]
Rich Bennettd504dc82018-05-31 08:40:36 -04001.. This work is licensed under a Creative Commons Attribution 4.0
2.. International License. http://creativecommons.org/licenses/by/4.0
3.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
Rich Bennettac93e0e2017-07-19 01:36:52 -04004
Rich Bennettac93e0e2017-07-19 01:36:52 -04005
Rich Bennett1da30462017-08-24 12:11:36 -04006Setting Up
7==========
jsseidelda2324a2017-09-15 10:43:14 -04008
Andrea Visnyei8f678192020-05-29 12:48:12 +02009ONAP documentation is stored in git repositories, changes are managed
10with gerrit reviews, and published documents generated when there is a
11change in any source used to build the documentation.
12
13Authors create source for documents in reStructured Text (RST) that is
14rendered to HTML and published on Readthedocs.io.
15The developer Wiki or other web sites can reference these rendered
16documents directly allowing projects to easily maintain current release
17documentation.
18
Rich Bennetta9d6a442017-08-25 02:37:15 -040019Some initial set up is required to connect a project with
Rich Bennett1da30462017-08-24 12:11:36 -040020the master document structure and enable automated publishing of
Blaisonneau David2963ece2017-11-27 10:07:18 +010021changes as summarized in the following diagram and description below
Rich Bennett1da30462017-08-24 12:11:36 -040022below.
Rich Bennettac93e0e2017-07-19 01:36:52 -040023
Rich Bennett1da30462017-08-24 12:11:36 -040024.. seqdiag::
Rich Bennetta9d6a442017-08-25 02:37:15 -040025 :height: 700
26 :width: 1000
Rich Bennettac93e0e2017-07-19 01:36:52 -040027
Rich Bennett1da30462017-08-24 12:11:36 -040028 seqdiag {
Rich Bennett1da30462017-08-24 12:11:36 -040029 DA [label = "Doc Project\nAuthor/Committer", color=lightblue];
30 DR [label = "Doc Gerrit Repo" , color=pink];
31 PR [label = "Other Project\nGerrit Repo", color=pink ];
32 PA [label = "Other Project\nAuthor/Committer", color=lightblue];
Blaisonneau David2963ece2017-11-27 10:07:18 +010033
Rich Bennette4c42512017-09-06 08:07:22 -040034 PA -> DR [label = "Add project repo as\ngit submodule" ];
35 DR -> DA [label = "Review & Plan to\nIntegrate Content with\nTocTree Structure" ];
36 DR <-- DA [label = "Vote +2/Merge" ];
Blaisonneau David2963ece2017-11-27 10:07:18 +010037 PA <-- DR [label = "Merge Notification" ];
Rich Bennette4c42512017-09-06 08:07:22 -040038 PA -> PR [label = "Create in project repo\ntop level directory and index.rst" ];
Rich Bennett358472a2017-08-31 08:05:36 -040039 PR -> DA [label = "Add as Reviewer" ];
40 PR <-- DA [label = "Approve and Integrate" ];
41 PA <-- PR [label = "Merge" ];
Rich Bennett1da30462017-08-24 12:11:36 -040042 }
Blaisonneau David2963ece2017-11-27 10:07:18 +010043
Andrea Visnyei8f678192020-05-29 12:48:12 +020044Setup project repositories
45--------------------------
Rich Bennettd504dc82018-05-31 08:40:36 -040046These steps are performed for each project repository that
47provides documentation.
Rich Bennett1da30462017-08-24 12:11:36 -040048
Andrea Visnyei8f678192020-05-29 12:48:12 +0200491. Set two variables that will be used in the subsequent steps.
Rich Bennettd504dc82018-05-31 08:40:36 -040050Set *reponame* to the project repository you are setting up
51just as it appears in the **Project Name** column of
52the Gerrit projects page.
53Set *lfid* to your Linux Foundation identity that you use to
54login to gerrit or for git clone requests over ssh.
Rich Bennette4c42512017-09-06 08:07:22 -040055
56.. code-block:: bash
57
58 reponame=
59 lfid=
60
Andrea Visnyei8f678192020-05-29 12:48:12 +0200612. Add a directory in the doc project where your
Rich Bennettd504dc82018-05-31 08:40:36 -040062project will be included as a submodule and at least one reference
63from the doc project to the documentation index in your repository.
Krzysztof Opasiak6688fd02019-07-09 23:31:00 +020064The following sequence will do this over ssh. Please note that the
65reference to your project in *repolist.rst* should be considered
66temporary and removed when you reference it from more appropriate
67place.
Rich Bennett5baea462017-09-13 03:19:19 -040068
69.. caution::
70
Rich Bennettd504dc82018-05-31 08:40:36 -040071 If your access network restricts ssh, you will need to use equivalent
72 git commands and HTTP Passwords as described `here <http://wiki.onap.org/x/X4AP>`_.
Blaisonneau David2963ece2017-11-27 10:07:18 +010073
Krzysztof Opasiak8b43b972019-05-29 17:29:48 +020074.. caution::
75
76 Don't replace ../ in *git submodule add* with any relative path on
77 your local file system. It refers to the location of your repository
78 on the server.
79
Rich Bennett358472a2017-08-31 08:05:36 -040080.. code-block:: bash
81
Rich Bennette4c42512017-09-06 08:07:22 -040082 git clone ssh://$lfid@gerrit.onap.org:29418/doc
Rich Bennett358472a2017-08-31 08:05:36 -040083 cd doc
84 mkdir -p `dirname docs/submodules/$reponame`
Rich Bennett2360e212017-09-20 08:26:05 -040085 git submodule add ../$reponame docs/submodules/$reponame.git
Rich Bennette4c42512017-09-06 08:07:22 -040086 git submodule init docs/submodules/$reponame.git
87 git submodule update docs/submodules/$reponame.git
Rich Bennett358472a2017-08-31 08:05:36 -040088
Rich Bennette4c42512017-09-06 08:07:22 -040089 echo " $reponame <../submodules/$reponame.git/docs/index>" >> docs/release/repolist.rst
Blaisonneau David2963ece2017-11-27 10:07:18 +010090
Rich Bennett358472a2017-08-31 08:05:36 -040091 git add .
Rich Bennette4c42512017-09-06 08:07:22 -040092 git commit -s
Rich Bennett358472a2017-08-31 08:05:36 -040093 git review
Blaisonneau David2963ece2017-11-27 10:07:18 +010094
Rich Bennett5baea462017-09-13 03:19:19 -040095.. caution::
96 Wait for the above change to be merged before any merge to the
97 project repository that you have just added as a submodule.
Rich Bennettd504dc82018-05-31 08:40:36 -040098 If the project repository added as submodule changes before the
99 doc project merge, git may not automatically update the submodule
100 reference on changes and/or the verify job will fail in the step below.
Rich Bennett358472a2017-08-31 08:05:36 -0400101
102
Andrea Visnyei8f678192020-05-29 12:48:12 +02001033. Create a docs directory in your repository with
Rich Bennettd504dc82018-05-31 08:40:36 -0400104an index.rst file. The following sequence will complete the minimum
105required over ssh. As you have time to convert or add new content you
106can update the index and add files under the docs folder.
Rich Bennett5baea462017-09-13 03:19:19 -0400107
108.. hint::
109 If you have additional content, you can include it by editing the
110 index.rst file and/or adding other files before the git commit.
Rich Bennettd504dc82018-05-31 08:40:36 -0400111 See `Templates and Examples`_ below and :ref:`converting-to-rst`
112 for more information.
Blaisonneau David2963ece2017-11-27 10:07:18 +0100113
Rich Bennett1da30462017-08-24 12:11:36 -0400114
115.. code-block:: bash
116
Rich Bennette4c42512017-09-06 08:07:22 -0400117 git clone ssh://$lfid@gerrit.onap.org:29418/$reponame
Rich Bennetta9d6a442017-08-25 02:37:15 -0400118 cd $reponame
Rich Bennett1da30462017-08-24 12:11:36 -0400119 mkdir docs
120 echo ".. This work is licensed under a Creative Commons Attribution 4.0 International License.
121
Rich Bennetta9d6a442017-08-25 02:37:15 -0400122 TODO Add files to toctree and delete this header
123 ------------------------------------------------
Rich Bennett1da30462017-08-24 12:11:36 -0400124 .. toctree::
125 :maxdepth: 1
Blaisonneau David2963ece2017-11-27 10:07:18 +0100126
Rich Bennett1da30462017-08-24 12:11:36 -0400127 " > docs/index.rst
Blaisonneau David2963ece2017-11-27 10:07:18 +0100128
Rich Bennett1da30462017-08-24 12:11:36 -0400129 git add .
Rich Bennette4c42512017-09-06 08:07:22 -0400130 git commit -s
Rich Bennett1da30462017-08-24 12:11:36 -0400131 git review
Blaisonneau David2963ece2017-11-27 10:07:18 +0100132
Rich Bennettac93e0e2017-07-19 01:36:52 -0400133
Rich Bennett1da30462017-08-24 12:11:36 -0400134The diagram below illustrates what is accomplished in the setup steps
Rich Bennetta9d6a442017-08-25 02:37:15 -0400135above from the perspective of a file structure created for a local test,
Rich Bennett358472a2017-08-31 08:05:36 -0400136a jenkins verify job, and/or published release documentation including:
Rich Bennett0c826432017-09-18 17:28:09 -0400137
138- ONAP gerrit project repositories,
Rich Bennettac93e0e2017-07-19 01:36:52 -0400139
Rich Bennettd504dc82018-05-31 08:40:36 -0400140- doc project repository master document index.rst, templates,
141 configuration, and other documents
142
143- submodules directory where other project repositories and
144 directories/files are referenced
145
146- file structure: directories (ellipses), files(boxes)
147
148- references: directory/files (solid edges), git submodule
149 (dotted edges), sphinx toctree (dashed edges)
Rich Bennettac93e0e2017-07-19 01:36:52 -0400150
151.. graphviz::
152
Blaisonneau David2963ece2017-11-27 10:07:18 +0100153
Rich Bennettac93e0e2017-07-19 01:36:52 -0400154 digraph docstructure {
155 size="8,12";
156 node [fontname = "helvetica"];
157 // Align gerrit repos and docs directories
Rich Bennetta9d6a442017-08-25 02:37:15 -0400158 {rank=same doc aaf aai reponame repoelipse vnfsdk vvp}
Rich Bennett1da30462017-08-24 12:11:36 -0400159 {rank=same confpy release templates masterindex submodules otherdocdocumentelipse}
Rich Bennett358472a2017-08-31 08:05:36 -0400160 {rank=same releasedocumentindex releaserepolist}
Rich Bennettac93e0e2017-07-19 01:36:52 -0400161
162 //Illustrate Gerrit Repos and provide URL/Link for complete repo list
163 gerrit [label="gerrit.onap.org/r", href="https://gerrit.onap.org/r/#/admin/projects/" ];
Rich Bennett358472a2017-08-31 08:05:36 -0400164 doc [href="https://gerrit.onap.org/r/gitweb?p=doc.git;a=tree"];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400165 gerrit -> doc;
166 gerrit -> aaf;
167 gerrit -> aai;
Blaisonneau David2963ece2017-11-27 10:07:18 +0100168 gerrit -> reponame;
Rich Bennett1da30462017-08-24 12:11:36 -0400169 gerrit -> repoelipse;
170 repoelipse [label=". . . ."];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400171 gerrit -> vnfsdk;
172 gerrit -> vvp;
173
Rich Bennetta9d6a442017-08-25 02:37:15 -0400174 //Show example of local reponame instance of component info
175 reponame -> reponamedocsdir;
Blaisonneau David2963ece2017-11-27 10:07:18 +0100176 reponamesm -> reponamedocsdir;
Rich Bennetta9d6a442017-08-25 02:37:15 -0400177 reponamedocsdir [label="docs"];
Blaisonneau David2963ece2017-11-27 10:07:18 +0100178 reponamedocsdir -> repnamedocsdirindex;
Rich Bennette4c42512017-09-06 08:07:22 -0400179 repnamedocsdirindex [label="index.rst", shape=box];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400180
Blaisonneau David2963ece2017-11-27 10:07:18 +0100181 //Show detail structure of a portion of doc/docs
Rich Bennettac93e0e2017-07-19 01:36:52 -0400182 doc -> docs;
Blaisonneau David2963ece2017-11-27 10:07:18 +0100183 docs -> confpy;
Rich Bennett1da30462017-08-24 12:11:36 -0400184 confpy [label="conf.py",shape=box];
Blaisonneau David2963ece2017-11-27 10:07:18 +0100185 docs -> masterindex;
Rich Bennett358472a2017-08-31 08:05:36 -0400186 masterindex [label="Master\nindex.rst", shape=box];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400187 docs -> release;
Blaisonneau David2963ece2017-11-27 10:07:18 +0100188 docs -> templates;
189 docs -> otherdocdocumentelipse;
Rich Bennett1da30462017-08-24 12:11:36 -0400190 otherdocdocumentelipse [label="...other\ndocuments"];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400191 docs -> submodules
Blaisonneau David2963ece2017-11-27 10:07:18 +0100192
Rich Bennett1da30462017-08-24 12:11:36 -0400193 masterindex -> releasedocumentindex [style=dashed, label="sphinx\ntoctree\nreference"];
Blaisonneau David2963ece2017-11-27 10:07:18 +0100194
Rich Bennett1da30462017-08-24 12:11:36 -0400195 //Show submodule linkage to docs directory
Blaisonneau David2963ece2017-11-27 10:07:18 +0100196 submodules -> reponamesm [style=dotted,label="git\nsubmodule\nreference"];
Rich Bennette4c42512017-09-06 08:07:22 -0400197 reponamesm [label="reponame.git"];
Rich Bennettac93e0e2017-07-19 01:36:52 -0400198
Rich Bennett1da30462017-08-24 12:11:36 -0400199 //Example Release document index that references component info provided in other project repo
Blaisonneau David2963ece2017-11-27 10:07:18 +0100200 release -> releasedocumentindex;
Rich Bennett1da30462017-08-24 12:11:36 -0400201 releasedocumentindex [label="index.rst", shape=box];
Rich Bennett358472a2017-08-31 08:05:36 -0400202 releasedocumentindex -> releaserepolist [style=dashed, label="sphinx\ntoctree\nreference"];
Blaisonneau David2963ece2017-11-27 10:07:18 +0100203 releaserepolist [label="repolist.rst", shape=box];
Rich Bennett358472a2017-08-31 08:05:36 -0400204 release -> releaserepolist;
Rich Bennette4c42512017-09-06 08:07:22 -0400205 releaserepolist -> repnamedocsdirindex [style=dashed, label="sphinx\ntoctree\nreference"];
Blaisonneau David2963ece2017-11-27 10:07:18 +0100206
Rich Bennettac93e0e2017-07-19 01:36:52 -0400207 }
208
Rich Bennettd504dc82018-05-31 08:40:36 -0400209Branches in the DOC Project
210---------------------------
211
212The DOC project 'master' branch aggregates the 'latest' content
213from all ONAP project repositories contributing documentation into a
214single tree file structure as described in the previous section. This
215branch is continuously integrated and deployed at Read The
216Docs as the 'latest' ONAP Documentation by:
217
218* Jenkins doc-verify-rtd and doc-merge-rtd jobs triggered whenever patches on
219 contributing repositories contain rst files at or below a top level
220 'docs' folder.
221
222* Subscription in the DOC project to changes in submodule repositories.
223 These changes appear in the DOC project as commits with title
224 'Updated git submodules' when a change to a contributing project
225 repository is merged. No DOC project code review occurs, only a
226 submodule repository commit hash is updated to track the head of each
227 contributing master branch.
228
229For each ONAP named release the DOC project creates a branch with the
230release name. The timing of the release branch is determined by
231work needed in the DOC project to prepare the release branch and the
232amount of change unrelated to the release in the master branch.
233For example contributing projects that create named release branches
234early to begin work on the next release and/or contributing projects
235to the master that are not yet part of the named release would result
236in an earlier named release branch to cleanly separate work to stabilize
237a release from other changes in the master branch.
238
239A named release branch is integrated and deployed at Read The Docs
240as the 'named release' by aggregating content from contributing
241project repositories. A contributing project repository can
242choose one of the following for the 'named release' branch:
243
244* Remove the contributing project repository submodule and RST
245 references when not part of the named release.
246
247* Provide a commit hash or tag for the contributing project master
248 branch to be used for the life of the release branch or until a
249 request is submitted to change the commit hash or tag.
250
251* Provide the commit hash for the head of a named release branch
252 created in the contributing project repository. This option
253 may be appropriate if frequent changes are expected over the
254 life of the named release and work the same way as the continuous
255 integration and deployment described for the master branch.
256
257The decision on option for each contributing project repository
258can be made or changed before the final release is approved. The
259amount of change and expected differences between master and a
260named release branch for each repository should drive the choice of
261option and timing.
262
Blaisonneau David2963ece2017-11-27 10:07:18 +0100263About GIT branches
264------------------
265
266GIT is a powerful tool allowing many actions, but without respecting some rules
Rich Bennettd504dc82018-05-31 08:40:36 -0400267the GIT structure can be quickly hard to maintain.
Blaisonneau David2963ece2017-11-27 10:07:18 +0100268
269Here are some conventions about GIT branches:
Rich Bennettd504dc82018-05-31 08:40:36 -0400270
Blaisonneau David2963ece2017-11-27 10:07:18 +0100271 - ALWAYS create a local branch to edit or create any file. This local branch
Rich Bennettd504dc82018-05-31 08:40:36 -0400272 will be considered as a topic in Gerrit and allow contributors to
273 work at the same time on the same project.
274
275 - 1 feature = 1 branch. In the case of documentation, a new chapter
276 or page about a new code feature can be considered as a 'doc feature'
277
278 - 1 bug = 1 branch. In the case of documentation, a correction on an
279 existing sentence can be considered as a 'doc bug'
280
Blaisonneau David2963ece2017-11-27 10:07:18 +0100281 - the master branch is considered as "unstable", containing new features that
282 will converge to a stable situation for the release date.
283
284The day of the release, the repository owner will create a new branch to
285fix the code and documentation. This will represent the 'stable' code of the
286release. In this context:
Rich Bennett7e34ab32018-04-18 11:03:25 -0400287
Blaisonneau David2963ece2017-11-27 10:07:18 +0100288 - NEVER push a new feature on a stable branch
Rich Bennett7e34ab32018-04-18 11:03:25 -0400289
Rich Bennettd504dc82018-05-31 08:40:36 -0400290 - Only bug correction are authorized on a stable branch using
291 cherry pick method
Blaisonneau David2963ece2017-11-27 10:07:18 +0100292
293.. image:: git_branches.png
294
Rich Bennetta9d6a442017-08-25 02:37:15 -0400295Creating Restructured Text
296==========================
Rich Bennettac93e0e2017-07-19 01:36:52 -0400297
Andrea Visnyeia2eb2e22020-09-25 12:23:47 +0200298ReStructuredText markup conventions
299-----------------------------------
300For detailed information on ReStructuredText and how to best use the format,
301see:
302
303- `ReStructured Text Primer <http://docutils.sourceforge.net/docs/user/rst/quickstart.html>`_
304- `ReStructured Text Quick Reference <http://docutils.sourceforge.net/docs/user/rst/quickref.html>`_
305
306
Rich Bennett5baea462017-09-13 03:19:19 -0400307Templates and Examples
308----------------------
Rich Bennett7134cba2017-10-10 07:39:06 -0400309Templates are available that capture the kinds of information
Blaisonneau David2963ece2017-11-27 10:07:18 +0100310useful for different types of projects and provide some examples of
Rich Bennettd504dc82018-05-31 08:40:36 -0400311restructured text. We organize templates in the following way to:
Rich Bennett7134cba2017-10-10 07:39:06 -0400312
Rich Bennettd504dc82018-05-31 08:40:36 -0400313 - help authors understand relationships between documents
314
315 - keep the user audience context in mind when writing and
316
317 - tailor sections for different kinds of projects.
318
319
320**Sections** Represent a certain type of content. A section
321is **provided** in an project repository, to describe something about
322the characteristics, use, capability, etc. of things in that repository.
323A section may also be **referenced** from other sections and in
324other repositories. For example, an API specification provided in a project
325repository might be referenced to in a Platform API Reference Guide.
Rich Bennett7134cba2017-10-10 07:39:06 -0400326The notes in the beginning of each section template provide
Rich Bennettd504dc82018-05-31 08:40:36 -0400327additional detail about what is typically covered and where
328there may be references to the section.
Rich Bennett7134cba2017-10-10 07:39:06 -0400329
Rich Bennettd504dc82018-05-31 08:40:36 -0400330**Collections** Are a set of sections that are typically provided
331for a particular type of project, repository, guide, reference manual, etc.
332For example, a collection for a platform component, an SDK, etc.
Rich Bennett7134cba2017-10-10 07:39:06 -0400333
Rich Bennettd504dc82018-05-31 08:40:36 -0400334You can: browse the template *collections* and *sections* below;
335show source to look at the Restructured Text and Sphinx directives used;
336copy the source either from a browser window or by downloading the
337file in raw form from
Rich Bennett7134cba2017-10-10 07:39:06 -0400338the `gerrit doc repository <https://gerrit.onap.org/r/gitweb?p=doc.git;a=tree;f=docs/templates;/>`_ and
339then add them to your repository docs folder and index.rst.
340
341
342Sections
343++++++++
Rich Bennett5baea462017-09-13 03:19:19 -0400344
345.. toctree::
346 :maxdepth: 1
347 :glob:
348
Rich Bennett7134cba2017-10-10 07:39:06 -0400349 ../../../templates/sections/*
350
351
352Collections
353+++++++++++
354
355.. toctree::
356 :maxdepth: 1
357 :glob:
358
359 ../../../templates/collections/*
360
361
Rich Bennett5baea462017-09-13 03:19:19 -0400362
Blaisonneau David2963ece2017-11-27 10:07:18 +0100363In addition to these simple templates and examples
Rich Bennett5baea462017-09-13 03:19:19 -0400364there are many open source projects (e.g. Open Daylight, Open Stack)
Rich Bennettd504dc82018-05-31 08:40:36 -0400365that are using Sphinx and Readthedocs where you may find examples
366to start with. Working with project teams we will continue to enhance
367templates here and capture frequently asked questions on the developer
368wiki question topic `documentation <https://wiki.onap.org/questions/topics/16384055/documentation>`_.
Rich Bennett5baea462017-09-13 03:19:19 -0400369
Rich Bennettd504dc82018-05-31 08:40:36 -0400370Each project should:
371
372 - decide what is relevant content
373
374 - determine the best way to create/maintain it in the CI/CD process and
375
376 - work with the documentation team to reference content from the
377 master index and guides.
378
379Consider options including filling in a template, identifying existing
380content that can be used as is or easily converted, and use of Sphinx
381directives/extensions to automatically generate restructured text
382from other source you already have.
Rich Bennettac93e0e2017-07-19 01:36:52 -0400383
Rich Bennetta9d6a442017-08-25 02:37:15 -0400384Links and References
Rich Bennett5baea462017-09-13 03:19:19 -0400385--------------------
Rich Bennettac93e0e2017-07-19 01:36:52 -0400386It's pretty common to want to reference another location in the
387ONAP documentation and it's pretty easy to do with
388reStructuredText. This is a quick primer, more information is in the
389`Sphinx section on Cross-referencing arbitrary locations
Aric Gardner6ceaa842020-04-10 14:00:17 -0400390<http://www.sphinx-doc.org/en/stable/markup/inline.html>`_.
Rich Bennettac93e0e2017-07-19 01:36:52 -0400391
392Within a single document, you can reference another section simply by::
393
394 This is a reference to `The title of a section`_
395
396Assuming that somewhere else in the same file there a is a section
397title something like::
398
399 The title of a section
400 ^^^^^^^^^^^^^^^^^^^^^^
401
402It's typically better to use ``:ref:`` syntax and labels to provide
403links as they work across files and are resilient to sections being
404renamed. First, you need to create a label something like::
405
406 .. _a-label:
407
408 The title of a section
409 ^^^^^^^^^^^^^^^^^^^^^^
410
411.. note:: The underscore (_) before the label is required.
412
413Then you can reference the section anywhere by simply doing::
414
415 This is a reference to :ref:`a-label`
416
417or::
418
419 This is a reference to :ref:`a section I really liked <a-label>`
420
421.. note:: When using ``:ref:``-style links, you don't need a trailing
422 underscore (_).
423
424Because the labels have to be unique, it usually makes sense to prefix
425the labels with the project name to help share the label space, e.g.,
426``sfc-user-guide`` instead of just ``user-guide``.
427
Rich Bennetta9d6a442017-08-25 02:37:15 -0400428Testing
429=======
Rich Bennettac93e0e2017-07-19 01:36:52 -0400430
Rich Bennetta9d6a442017-08-25 02:37:15 -0400431One RST File
432------------
Rich Bennettac93e0e2017-07-19 01:36:52 -0400433It is recommended that all rst content is validated by `doc8 <https://pypi.python.org/pypi/doc8>`_ standards.
434To validate your rst files using doc8, install doc8.
435
436.. code-block:: bash
437
438 sudo pip install doc8
439
440doc8 can now be used to check the rst files. Execute as,
441
442.. code-block:: bash
443
444 doc8 --ignore D000,D001 <file>
445
446
Rich Bennettac93e0e2017-07-19 01:36:52 -0400447
Rich Bennetta9d6a442017-08-25 02:37:15 -0400448One Project
449-----------
Rich Bennettac93e0e2017-07-19 01:36:52 -0400450To test how the documentation renders in HTML, follow these steps:
451
Pawel Wieczorek1a3294f2019-07-10 16:20:22 +0200452Install `virtual environment <https://pypi.org/project/virtualenv>`_ & create one.
Rich Bennettac93e0e2017-07-19 01:36:52 -0400453
454.. code-block:: bash
455
456 sudo pip install virtualenv
Pawel Wieczorek1a3294f2019-07-10 16:20:22 +0200457 virtualenv onap_docs
458
459Activate `onap_docs` virtual environment.
460
461.. code-block:: bash
462
463 source onap_docs/bin/activate
464
465.. note:: Virtual environment activation has to be performed before attempting to build documentation.
466 Otherwise, tools necessary for the process might not be available.
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200467
468Download a project repository.
469
470.. code-block:: bash
471
Pawel Wieczorek1a3294f2019-07-10 16:20:22 +0200472 git clone http://gerrit.onap.org/r/<project>
Rich Bennettac93e0e2017-07-19 01:36:52 -0400473
474Download the doc repository.
475
476.. code-block:: bash
477
478 git clone http://gerrit.onap.org/r/doc
479
480Change directory to doc & install requirements.
481
482.. code-block:: bash
483
484 cd doc
Pawel Wieczorek1a3294f2019-07-10 16:20:22 +0200485 pip install -r etc/requirements.txt
Rich Bennettac93e0e2017-07-19 01:36:52 -0400486
JakobKrieg09767152020-08-06 09:23:22 +0200487.. warning::
488
Andrea Visnyeia2eb2e22020-09-25 12:23:47 +0200489 Just follow the next step (copying conf.py from Doc project to your project)
490 if that is your intention, otherwise skip it. Currently all projects should already have a conf.py file.
JakobKrieg09767152020-08-06 09:23:22 +0200491 Through the next step, this file and potential extensions in your project get overriden.
492
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200493Copy the conf.py file to your project folder where RST files have been kept:
Rich Bennettac93e0e2017-07-19 01:36:52 -0400494
495.. code-block:: bash
496
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200497 cp docs/conf.py <path-to-project-folder>/<folder where are rst files>
Rich Bennettac93e0e2017-07-19 01:36:52 -0400498
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200499Copy the static files to the project folder where RST files have been kept:
Rich Bennettac93e0e2017-07-19 01:36:52 -0400500
501.. code-block:: bash
502
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200503 cp -r docs/_static/ <path-to-project-folder>/<folder where are rst files>
Rich Bennettac93e0e2017-07-19 01:36:52 -0400504
505Build the documentation from within your project folder:
506
507.. code-block:: bash
508
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200509 sphinx-build -b html <path-to-project-folder>/<folder where are rst files> <path-to-output-folder>
Rich Bennettac93e0e2017-07-19 01:36:52 -0400510
511Your documentation shall be built as HTML inside the
512specified output folder directory.
513
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200514You can use your Web Browser to open
515and check resulting html pages in the output folder.
516
Pawel Wieczorek1a3294f2019-07-10 16:20:22 +0200517.. note:: Be sure to remove the `conf.py`, the static/ files and the output folder from the `<project>/docs/`. This is for testing only. Only commit the rst files and related content.
Rich Bennettac93e0e2017-07-19 01:36:52 -0400518
jsseidel80666192017-09-19 13:29:23 -0400519.. _building-all-documentation:
Rich Bennettac93e0e2017-07-19 01:36:52 -0400520
Rich Bennetta9d6a442017-08-25 02:37:15 -0400521All Documentation
522-----------------
Rich Bennettd504dc82018-05-31 08:40:36 -0400523To build the all documentation under doc/, follow these steps:
Rich Bennettac93e0e2017-07-19 01:36:52 -0400524
Pawel Wieczorek6e823832019-07-10 16:31:27 +0200525Install `tox <https://pypi.org/project/tox>`_.
Rich Bennettac93e0e2017-07-19 01:36:52 -0400526
527.. code-block:: bash
528
Pawel Wieczorek6e823832019-07-10 16:31:27 +0200529 sudo pip install tox
Rich Bennetta9d6a442017-08-25 02:37:15 -0400530
531Download the DOC repository.
532
533.. code-block:: bash
534
535 git clone http://gerrit.onap.org/r/doc
536
Rich Bennett9c3af502018-04-26 09:30:57 -0400537Build documentation using tox local environment & then open using any browser.
Rich Bennetta9d6a442017-08-25 02:37:15 -0400538
539.. code-block:: bash
540
541 cd doc
Cédric Ollivier268209c2017-11-10 11:31:53 +0100542 tox -elocal
Rich Bennetta9d6a442017-08-25 02:37:15 -0400543 firefox docs/_build/html/index.html
544
Cédric Ollivier268209c2017-11-10 11:31:53 +0100545.. note:: Make sure to run `tox -elocal` and not just `tox`.
Rich Bennett50d0d882019-03-08 17:03:58 -0500546 This updates all submodule repositories that are integrated
547 by the doc project.
Rich Bennett9c3af502018-04-26 09:30:57 -0400548
Rich Bennettd504dc82018-05-31 08:40:36 -0400549There are additional tox environment options for checking External
Rene_Robertbf4ab4e2019-07-01 18:12:40 +0200550URLs and Spelling. Use the tox environment options below and then
Rich Bennett50d0d882019-03-08 17:03:58 -0500551look at the output with the Linux `more` or similar command
552scan for output that applies to the files you are validating.
Rich Bennett9c3af502018-04-26 09:30:57 -0400553
554.. code-block:: bash
555
556 tox -elinkcheck
557 more < docs/_build/linkcheck/output.txt
558
559 tox -espellcheck
560 more < docs/_build/spellcheck/output.txt