| --- |
| - scm: |
| name: doc-scm |
| scm: |
| - git: |
| url: "https://gerrit.onap.org/r/{project}" |
| refspec: "+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*" |
| branches: |
| - "{ref}" |
| |
| - trigger: |
| name: doc-rules-patchset-created |
| triggers: |
| - gerrit: |
| trigger-on: |
| - patchset-created-event |
| - comment-added-contains-event: |
| comment-contains-value: recheck |
| - comment-added-contains-event: |
| comment-contains-value: reverify |
| server-name: "Primary" |
| projects: |
| - project-compare-type: "ANT" |
| project-pattern: "**" |
| branches: |
| - branch-compare-type: "ANT" |
| branch-pattern: "**/*" |
| - branch-compare-type: "ANT" |
| branch-pattern: "refs/tags/**" |
| |
| - builder: |
| name: doc-rules |
| builders: |
| # yamllint disable rule:line-length |
| - shell: | |
| #!/bin/bash |
| . /lib/lsb/init-functions || exit 0 |
| exitstatus="0" |
| warning="0" |
| # message, begin |
| log_success_msg "INFO Starting additional checks related to documentation." |
| log_success_msg "INFO See https://git.onap.org/doc/doc-best-practice for example config files (master branch)." |
| log_success_msg "INFO Modify example config files if you like to use them in a release branch." |
| log_success_msg "INFO See https://wiki.onap.org/x/w4IEBw for the detailed procedure #02." |
| log_success_msg "INFO In case of questions please contact the ONAP documentation team." |
| # docs directory |
| if [ ! -d docs ] ; then |
| log_success_msg "INFO Directory docs not found. Skipping further checks." |
| exit 0 |
| fi |
| # config files, required |
| for i in docs/index.rst docs/conf.py docs/requirements-docs.txt docs/_static/css/ribbon.css; do |
| if [ ! -f $i ] ; then |
| log_failure_msg "FAIL $i missing. Please add it or remove the full docs directory." |
| exitstatus="1" |
| else |
| log_success_msg "INFO $i found." |
| fi |
| done |
| # config files, no longer required |
| for i in docs/conf.yaml; do |
| if [ -f $i ] ; then |
| log_failure_msg "FAIL $i found. It is no longer required. Please remove it." |
| exitstatus="1" |
| else |
| log_success_msg "INFO $i not found." |
| fi |
| done |
| # tox.ini @ docs directory |
| filename="docs/tox.ini" |
| if [ ! -f $filename ] ; then |
| log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory." |
| exitstatus="1" |
| else |
| log_success_msg "INFO $filename found." |
| # sphinx-build command and -W option |
| sphinxbuild_detected=0 |
| linenumber=0 |
| while IFS="" read -r line || [ -n "$line" ] ; do |
| linenumber=$((linenumber+1)) |
| if echo $line | grep -q '^[ \t]*sphinx-build.*' ; then |
| sphinxbuild_detected="1" |
| if echo $line | grep -q '^[ \t]*sphinx-build.* -W ' ; then |
| log_success_msg "INFO sphinx-build option '-W' used in $filename, line $linenumber." |
| elif echo $line | grep -q ' \-b spelling ' ; then |
| log_warning_msg "WARN sphinx-build option '-W' missing for spellcheck in $filename, line $linenumber." |
| warning="1" |
| else |
| log_failure_msg "FAIL sphinx-build option '-W' missing in $filename, line $linenumber. Please add it." |
| exitstatus="1" |
| fi |
| fi |
| done < $filename |
| if [ "$sphinxbuild_detected" = "0" ]; then |
| log_failure_msg "FAIL Sphinx-build command(s) missing in $filename. Please add it." |
| exitstatus="1" |
| fi |
| # second tox.ini @ root directory |
| if [ -f ./tox.ini ] ; then |
| # sphinx-build command |
| if cat ./tox.ini | grep -q '^[ \t]*sphinx-build.*' ; then |
| log_warning_msg "WARN tox.ini also exists in root directory and contains sphinx-build command(s). Please check for redundancies." |
| warning="1" |
| fi |
| fi |
| unset sphinxbuild_detected |
| unset linenumber |
| fi |
| unset filename |
| # ribbon.css |
| filename="docs/_static/css/ribbon.css" |
| if [ ! -f $filename ]; then |
| log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory." |
| exitstatus="1" |
| else |
| log_success_msg "INFO $filename found." |
| # max-width parameter |
| cssmaxwidth=$(grep '^[ \t]*max-width:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//'); |
| if [[ ! $cssmaxwidth == *"max-width: 800px"* ]]; then |
| log_failure_msg "FAIL Setting 'max-width: 800px' missing in $filename. Please add it." |
| exitstatus="1" |
| else |
| log_success_msg "INFO Setting 'max-width: 800px' found in $filename." |
| fi |
| unset cssmaxwidth |
| fi |
| unset filename |
| # message, end |
| if [ "$exitstatus" = "0" ]; then |
| if [ "$warning" = "0" ]; then |
| log_success_msg "INFO Congratulations! No documentation problem(s) detected." |
| else |
| log_warning_msg "WARN No major documentation problem(s) detected but there are warnings!" |
| fi |
| else |
| if [ ! "$warning" = "0" ]; then |
| log_warning_msg "WARN Please check the detected documentation warning(s)!" |
| fi |
| log_failure_msg "FAIL Please fix the detected documentation problem(s)!" |
| fi |
| exit $exitstatus |
| # yamllint enable |
| |
| - job-template: |
| name: doc-rules |
| node: ubuntu1804-docker-8c-8g |
| triggers: |
| - doc-rules-patchset-created |
| scm: |
| - doc-scm: |
| ref: $GERRIT_REFSPEC |
| project: $GERRIT_PROJECT |
| builders: |
| - doc-rules |
| |
| - project: |
| name: "doc-rules" |
| jobs: |
| - "doc-rules" |