Refactor: Cleanup for pre-commit
[ci-management.git] / jjb / doc / rules.yaml
1 ---
2 - scm:
3       name: doc-scm
4       scm:
5           - git:
6                 url: "https://gerrit.onap.org/r/{project}"
7                 refspec: "+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*"
8                 branches:
9                     - "{ref}"
10
11 - trigger:
12       name: doc-rules-patchset-created
13       triggers:
14           - gerrit:
15                 trigger-on:
16                     - patchset-created-event
17                     - comment-added-contains-event:
18                           comment-contains-value: recheck
19                     - comment-added-contains-event:
20                           comment-contains-value: reverify
21                 server-name: "Primary"
22                 projects:
23                     - project-compare-type: "ANT"
24                       project-pattern: "**"
25                       branches:
26                           - branch-compare-type: "ANT"
27                             branch-pattern: "**/*"
28                           - branch-compare-type: "ANT"
29                             branch-pattern: "refs/tags/**"
30
31 - builder:
32       name: doc-rules
33       builders:
34           # yamllint disable rule:line-length
35           - shell: |
36                 #!/bin/bash
37                 . /lib/lsb/init-functions || exit 0
38                 exitstatus="0"
39                 warning="0"
40                 # message, begin
41                 log_success_msg "INFO Starting additional checks related to documentation."
42                 log_success_msg "INFO See https://git.onap.org/doc/doc-best-practice for example config files (master branch)."
43                 log_success_msg "INFO Modify example config files if you like to use them in a release branch."
44                 log_success_msg "INFO See https://wiki.onap.org/x/w4IEBw for the detailed procedure #02."
45                 log_success_msg "INFO In case of questions please contact the ONAP documentation team."
46                 # docs directory
47                 if [ ! -d docs ] ; then
48                   log_success_msg "INFO Directory docs not found. Skipping further checks."
49                   exit 0
50                 fi
51                 # config files, required
52                 for i in docs/index.rst docs/conf.py docs/requirements-docs.txt docs/_static/css/ribbon.css; do
53                   if [ ! -f $i ] ; then
54                     log_failure_msg "FAIL $i missing. Please add it or remove the full docs directory."
55                     exitstatus="1"
56                   else
57                     log_success_msg "INFO $i found."
58                   fi
59                 done
60                 # config files, no longer required
61                 for i in docs/conf.yaml; do
62                   if [ -f $i ] ; then
63                     log_failure_msg "FAIL $i found. It is no longer required. Please remove it."
64                     exitstatus="1"
65                   else
66                     log_success_msg "INFO $i not found."
67                   fi
68                 done
69                 # tox.ini @ docs directory
70                 filename="docs/tox.ini"
71                 if [ ! -f $filename ] ; then
72                   log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory."
73                   exitstatus="1"
74                 else
75                   log_success_msg "INFO $filename found."
76                   # sphinx-build command and -W option
77                   sphinxbuild_detected=0
78                   linenumber=0
79                   while IFS="" read -r line || [ -n "$line" ] ; do
80                     linenumber=$((linenumber+1))
81                     if echo $line | grep -q '^[ \t]*sphinx-build.*' ; then
82                       sphinxbuild_detected="1"
83                       if echo $line | grep -q '^[ \t]*sphinx-build.* -W ' ; then
84                         log_success_msg "INFO sphinx-build option '-W' used in $filename, line $linenumber."
85                       elif echo $line | grep -q ' \-b spelling ' ; then
86                         log_warning_msg "WARN sphinx-build option '-W' missing for spellcheck in $filename, line $linenumber."
87                         warning="1"
88                       else
89                         log_failure_msg "FAIL sphinx-build option '-W' missing in $filename, line $linenumber. Please add it."
90                         exitstatus="1"
91                       fi
92                     fi
93                   done < $filename
94                   if [ "$sphinxbuild_detected" = "0" ]; then
95                     log_failure_msg "FAIL Sphinx-build command(s) missing in $filename. Please add it."
96                     exitstatus="1"
97                   fi
98                   # second tox.ini @ root directory
99                   if [ -f ./tox.ini ] ; then
100                     # sphinx-build command
101                     if cat ./tox.ini | grep -q '^[ \t]*sphinx-build.*' ; then
102                       log_warning_msg "WARN tox.ini also exists in root directory and contains sphinx-build command(s). Please check for redundancies."
103                       warning="1"
104                     fi
105                   fi
106                   unset sphinxbuild_detected
107                   unset linenumber
108                 fi
109                 unset filename
110                 # ribbon.css
111                 filename="docs/_static/css/ribbon.css"
112                 if [ ! -f $filename ]; then
113                   log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory."
114                   exitstatus="1"
115                 else
116                   log_success_msg "INFO $filename found."
117                   # max-width parameter
118                   cssmaxwidth=$(grep '^[ \t]*max-width:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
119                   if [[ ! $cssmaxwidth == *"max-width: 800px"* ]]; then
120                     log_failure_msg "FAIL Setting 'max-width: 800px' missing in $filename. Please add it."
121                     exitstatus="1"
122                   else
123                     log_success_msg "INFO Setting 'max-width: 800px' found in $filename."
124                   fi
125                   unset cssmaxwidth
126                 fi
127                 unset filename
128                 # message, end
129                 if [ "$exitstatus" = "0" ]; then
130                   if [ "$warning" = "0" ]; then
131                     log_success_msg "INFO Congratulations! No documentation problem(s) detected."
132                   else
133                     log_warning_msg "WARN No major documentation problem(s) detected but there are warnings!"
134                   fi
135                 else
136                   if [ ! "$warning" = "0" ]; then
137                     log_warning_msg "WARN Please check the detected documentation warning(s)!"
138                   fi
139                   log_failure_msg "FAIL Please fix the detected documentation problem(s)!"
140                 fi
141                 exit $exitstatus
142           # yamllint enable
143
144 - job-template:
145       name: doc-rules
146       node: ubuntu1804-docker-8c-8g
147       triggers:
148           - doc-rules-patchset-created
149       scm:
150           - doc-scm:
151                 ref: $GERRIT_REFSPEC
152                 project: $GERRIT_PROJECT
153       builders:
154           - doc-rules
155
156 - project:
157       name: "doc-rules"
158       jobs:
159           - "doc-rules"