CI: Update packer cloud setting to use HCL2 file
[ci-management.git] / jjb / doc / rules.yaml
index 7024490..b78c5aa 100644 (file)
@@ -1,11 +1,12 @@
+---
 - scm:
     name: doc-scm
     scm:
       - git:
-          url: 'https://gerrit.onap.org/r/{project}'
-          refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
+          url: "https://gerrit.onap.org/r/{project}"
+          refspec: "+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*"
           branches:
-            - '{ref}'
+            - "{ref}"
 
 - trigger:
     name: doc-rules-patchset-created
                 comment-contains-value: recheck
             - comment-added-contains-event:
                 comment-contains-value: reverify
-          server-name: 'Primary'
+          server-name: "Primary"
           projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '**'
+            - project-compare-type: "ANT"
+              project-pattern: "**"
               branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/*'
-                - branch-compare-type: 'ANT'
-                  branch-pattern: 'refs/tags/**'
+                - 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"
-          log_success_msg "Starting additional checks related to documentation."
-          log_success_msg "See https://git.onap.org/doc/doc-best-practice for example config files (master branch)."
-          log_success_msg "Modify example config files if you like to use them in a release branch."
-          log_success_msg "See https://wiki.onap.org/x/w4IEBw for the detailed procedure #02."
-          log_success_msg "In case of questions please contact the ONAP documentation team."
+          # message, begin
+          log_success_msg "INFO doc-rules Version 23-07-07-A"
+          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 "Directory docs not found. Skipping further checks."
+            log_success_msg "INFO Directory docs not found. Skipping further checks."
             exit 0
           fi
-          for i in docs/index.rst docs/conf.py docs/requirements-docs.txt docs/_static/css/ribbon.css; do
+          # config files, required
+          for i in docs/index.rst docs/conf.py docs/requirements-docs.txt docs/_static/css/ribbon.css .readthedocs.yaml; do
             if [ ! -f $i ] ; then
-              log_failure_msg "$i missing. Please add it or remove the full docs directory."
+              log_failure_msg "FAIL $i missing. Please add it or remove the full docs directory."
               exitstatus="1"
             else
-              log_success_msg "$i found."
+              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 "$i found. It is no longer required. Please remove it."
+              log_failure_msg "FAIL $i found. It is no longer required. Please remove it."
               exitstatus="1"
             else
-              log_success_msg "$i not found."
+              log_success_msg "INFO $i not found."
             fi
           done
+          # tox.ini @ docs directory
           filename="docs/tox.ini"
           if [ ! -f $filename ] ; then
-            log_failure_msg "$filename missing. Please add it or remove the full docs directory."
+            log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory."
             exitstatus="1"
           else
-            log_success_msg "$filename found."
+            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
               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 "sphinx-build option '-W' used in $filename, line $linenumber."
+                  log_success_msg "INFO sphinx-build option '-W' used in $filename, line $linenumber."
                 elif echo $line | grep -q ' \-b spelling ' ; then
-                  log_warning_msg "sphinx-build option '-W' not used for spellcheck in $filename, line $linenumber."
+                  log_warning_msg "WARN sphinx-build option '-W' missing for spellcheck in $filename, line $linenumber."
                   warning="1"
                 else
-                  log_failure_msg "sphinx-build option '-W' missing in $filename, line $linenumber. Please add it."
-                  exitstatus="1"
+                  log_warning_msg "WARN sphinx-build option '-W' missing in $filename, line $linenumber. Please add it."
+                  warning="1"
+                  #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 "Sphinx-build command(s) missing in $filename. Please add it."
-              exitstatus="1"
+              log_warning_msg "WARN Sphinx-build command(s) missing in $filename. Please add it."
+              warning="1"
+              #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 "$filename missing. Please add it or remove the full docs directory."
+            log_failure_msg "FAIL $filename missing. Please add it or remove the full docs directory."
             exitstatus="1"
           else
-            log_success_msg "$filename found."
+            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 "Setting 'max-width: 800px' missing in $filename. Please add it."
+              log_failure_msg "FAIL Setting 'max-width: 800px' missing in $filename. Please add it."
               exitstatus="1"
             else
-              log_success_msg "Setting 'max-width: 800px' found in $filename."
+              log_success_msg "INFO Setting 'max-width: 800px' found in $filename."
             fi
             unset cssmaxwidth
           fi
           unset filename
+          # readthedocs.yaml
+          filename=".readthedocs.yaml"
+          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."
+            # obsolete parameter: (build:) image: latest
+            buildimage=$(grep '^[ \t]*image:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
+            if [[ $buildimage == *"latest"* ]]; then
+              log_failure_msg "FAIL Setting '(build: image:) latest' found in $filename. Please remove it."
+              exitstatus="1"
+            else
+              log_success_msg "INFO Setting '(build: image:) latest' not found in $filename."
+            fi
+            unset buildimage
+            # obsolete parameter: (python:) version: 3.7
+            pythonversion=$(grep '^[ \t]*version:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
+            if [[ $pythonversion == *"3.7"* ]]; then
+              log_failure_msg "FAIL Setting '(python:) version: 3.7' found in $filename. Please remove it."
+              exitstatus="1"
+            else
+              log_success_msg "INFO Setting '(python:) version: 3.7' not found in $filename."
+            fi
+            unset pythonversion
+            # obsolete parameter: submodules:
+            submodules=$(grep '^[ \t]*submodules:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
+            if [[ $submodules == *"submodules:"* ]]; then
+              log_failure_msg "FAIL Setting 'submodules:' found in $filename. Please remove it."
+              exitstatus="1"
+            else
+              log_success_msg "INFO Setting 'submodules:' not found in $filename."
+            fi
+            unset submodules
+            # required parameter: (build:) os:
+            buildos=$(grep '^[ \t]*os:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
+            if [[ ! $buildos == *"ubuntu-20.04"* ]]; then
+              log_failure_msg "FAIL Setting '(build:) os: ubuntu-20.04' missing in $filename. Please add it."
+              exitstatus="1"
+            else
+              log_success_msg "INFO Setting '(build:) os: ubuntu-20.04' found in $filename."
+            fi
+            unset buildos
+            # required parameter: (build: tools:) python
+            buildtoolspython=$(grep '^[ \t]*python:' $filename | sed -e 's/^[ \t]*//' | sed -e 's/;$//');
+            if [[ ! $buildtoolspython == *\"3.8\"* ]]; then
+              log_failure_msg "FAIL Setting '(build: tools:) python: \"3.8\"' missing in $filename. Please add it."
+              exitstatus="1"
+            else
+              log_success_msg "INFO Setting '(build: tools:) python: \"3.8\"' found in $filename."
+            fi
+            unset buildtoolspython
+          fi
+          unset filename
+          # message, end
           if [ "$exitstatus" = "0" ]; then
             if [ "$warning" = "0" ]; then
-              log_success_msg "Congratulations! No documentation problem(s) detected."
+              log_success_msg "INFO Congratulations! No documentation problem(s) detected."
             else
-              log_warning_msg "No major documentation problem(s) detected but there are warnings!"
+              log_warning_msg "WARN No major documentation problem(s) detected but there are warnings!"
             fi
           else
-            log_failure_msg "Please fix the detected documentation problem(s)!"
+            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
       - doc-rules
 
 - project:
-    name: 'doc-rules'
+    name: "doc-rules"
     jobs:
-      - 'doc-rules'
+      - "doc-rules"