Merge "Add tool to backup Mongo tables and postman collection as sample"
[releng.git] / jjb / releng-macros.yaml
index ece8367..3afe848 100644 (file)
     builders:
         - shell: 'mkdir -p $WORKSPACE/target/classes'
 
+
+# New Releng macros
+
 - builder:
     name: build-html-and-pdf-docs-output
     builders:
 
             [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
 
-            git_sha1="$(git rev-parse HEAD)"
-
-            find docs/ -type f -iname '*.rst' -print0 | while read file
-            do
-                sed -i "s/_sha1_/$git_sha1/g" "$file"
-            done
+            _get_title_script="
+            import os
+            from docutils import core, nodes
+            with open('index.rst', 'r') as file:
+                data = file.read()
+            doctree = core.publish_doctree(data,
+                settings_overrides={'report_level': 5,
+                                    'halt_level': 5})
+            if isinstance(doctree[0], nodes.title):
+                title = doctree[0]
+            else:
+                for c in doctree.children:
+                    if isinstance(c, nodes.section):
+                        title = c[0]
+                        break
+            print title.astext()"
+            _git_sha1="$(git rev-parse HEAD)"
+
+            git clone ssh://gerrit.opnfv.org:29418/releng
+            [[ -d releng ]]
 
             find docs/ -name 'index.rst' -printf '%h\n' | while read dir
             do
                 echo "#################${dir//?/#}"
                 echo
 
-                mkdir -p "$_output"
+                sed -i "s/_sha1_/$_git_sha1/g" "$dir/index.rst"
 
-                sphinx-build -b html -E -c docs/etc "$dir" "$_output"
+                if [[ ! -f "$dir/conf.py" ]] ; then
+                    cp releng/docs/etc/conf.py "$dir/conf.py"
+                    _title=$(cd $dir; python -c "$_get_title_script")
+                    echo "latex_documents = [('index', '$_name.tex', \"$_title\", 'OPNFV', 'manual'),]" >> "$dir/conf.py"
+                fi
+                cp -f releng/docs/etc/opnfv-logo.png "$dir/opnfv-logo.png"
 
-                sphinx-build -b latex -E -c docs/etc "$dir" "$_build"
-                make -C "$_build" LATEXOPTS='--interaction=nonstopmode' all-pdf
-                mv "$_build"/*.pdf "$_output"
+                mkdir -p "$_output"
+
+                sphinx-build -b html -E "$dir" "$_output"
+
+                # Note: PDF creation may fail in project doc builds.
+                #       We allow this test to be marked as succeeded with
+                #       failure in PDF creation, but leave message to fix it.
+                #       Any failure has to be fixed before B release.
+                {
+                    sphinx-build -b latex -E "$dir" "$_build"
+                    make -C "$_build" LATEXOPTS='--interaction=nonstopmode' all-pdf
+                    mv "$_build/$_name.pdf" "$_output"
+                } || {
+                    _msg="Error: PDF creation for $dir has failed, please fix source rst file(s)."
+                    echo
+                    echo "$_msg"
+                    echo
+                    echo "$_msg" >> gerrit_comment.txt
+                }
             done
 
-- publisher:
+- builder:
     name: upload-under-review-docs-to-opnfv-artifacts
-    publishers:
+    builders:
         - shell: |
             #!/bin/bash -e
             set -o pipefail
             [[ -d docs/output ]]
 
             echo
-            echo "##########################"
-            echo "UPLOADING DOCS UNER REVIEW"
-            echo "##########################"
+            echo "###########################"
+            echo "UPLOADING DOCS UNDER REVIEW"
+            echo "###########################"
             echo
 
-            gs_path="artifacts.opnfv.org/review/$GERRIT_CHANGE_NUMBER"
+            gs_base="artifacts.opnfv.org/review"
+            gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
+            local_path="docs/$GERRIT_CHANGE_NUMBER"
 
-            gsutil cp -r docs/output/* "gs://$gs_path"
+            mv docs/output "$local_path"
+            gsutil -m cp -r "$local_path" "gs://$gs_base"
 
-            gsutil ls "gs://$gs_path" | grep -e 'html$' | while read file
-            do
-                gsutil setmeta \
+            if gsutil ls "gs://$gs_path" | grep -e 'html$' > /dev/null 2>&1 ; then
+                gsutil -m setmeta \
                     -h "Content-Type:text/html" \
                     -h "Cache-Control:private, max-age=0, no-transform" \
-                    "$file"
-            done
+                    "gs://$gs_path"/**.html
+            fi
 
-            gerrit_comment="Document link(s):
-            $(gsutil ls "gs://$gs_path" | grep -e 'index.html$' -e 'pdf$' | sed 's/^gs/http/')"
-            echo
-            echo "$gerrit_comment"
-            echo
-            {gerrit-review} -p {project} -m "$gerrit_comment" $GERRIT_PATCHSET_REVISION
+            echo "Document link(s):" >> gerrit_comment.txt
+            find "$local_path" | grep -e 'index.html$' -e 'pdf$' | \
+                sed -e "s|^$local_path|    http://$gs_path|" >> gerrit_comment.txt
 
-- publisher:
+- builder:
     name: upload-merged-docs-to-opnfv-artifacts
-    publishers:
+    builders:
         - shell: |
             #!/bin/bash -e
             set -o pipefail
             echo "#####################"
             echo
 
-            if [[ "{branch}" == "master" ]] ; then
-                gs_path="artifacts.opnfv.org/{project}/docs"
+            if [[ "$GERRIT_BRANCH" == "master" ]] ; then
+                gs_base="artifacts.opnfv.org/$GERRIT_PROJECT"
             else
-                gs_path="artifacts.opnfv.org/{project}/{branch}/docs"
+                gs_base="artifacts.opnfv.org/$GERRIT_PROJECT/$GERRIT_BRANCH"
             fi
+            gs_path="$gs_base/docs"
+            local_path="docs/docs"
 
-            gsutil cp -r docs/output/* "gs://$gs_path"
+            mv docs/output "$local_path"
+            gsutil -m cp -r "$local_path" "gs://$gs_base"
 
-            gsutil ls "gs://$gs_path" | grep -e 'html$' | while read file
-            do
-                gsutil setmeta \
+            if gsutil ls "gs://$gs_path" | grep -e 'html$' > /dev/null 2>&1 ; then
+                gsutil -m setmeta \
                     -h "Content-Type:text/html" \
                     -h "Cache-Control:private, max-age=0, no-transform" \
-                    "$file"
-            done
+                    "gs://$gs_path"/**.html
+            fi
 
-            gerrit_comment="Document link(s):
-            $(gsutil ls "gs://$gs_path" | grep -e 'index.html$' -e 'pdf$' | sed 's/^gs/http/')"
-            echo
-            echo "$gerrit_comment"
-            echo
-            {gerrit-review} -p {project} -m "$gerrit_comment" $GERRIT_PATCHSET_REVISION
+            echo "Document link(s):" >> gerrit_comment.txt
+            find "$local_path" | grep -e 'index.html$' -e 'pdf$' | \
+                sed -e "s|^$local_path|    http://$gs_path|" >> gerrit_comment.txt
 
-- publisher:
+- builder:
+    name: report-docs-build-result-to-gerrit
+    builders:
+        - shell: |
+            #!/bin/bash -e
+            export PATH=$PATH:/usr/local/bin/
+            if [[ -e gerrit_comment.txt ]] ; then
+                echo
+                echo "posting review comment to gerrit..."
+                echo
+                cat gerrit_comment.txt
+                echo
+                ssh -p 29418 gerrit.opnfv.org \
+                    "gerrit review -p $GERRIT_PROJECT \
+                     -m '$(cat gerrit_comment.txt)' \
+                     $GERRIT_PATCHSET_REVISION"
+            fi
+
+- builder:
     name: remove-old-docs-from-opnfv-artifacts
-    publishers:
+    builders:
         - shell: |
             #!/bin/bash -e
             export PATH=$PATH:/usr/local/bin/
             if gsutil ls "gs://$gs_path" > /dev/null 2>&1 ; then
                 echo
                 echo "Deleting Out-of-dated Documents..."
-                gsutil rm -r "gs://$gs_path_review"
+                gsutil -m rm -r "gs://$gs_path"
             fi
+
+- builder:
+    name: upload-review-docs
+    builders:
+        - build-html-and-pdf-docs-output
+        - upload-under-review-docs-to-opnfv-artifacts
+        - report-docs-build-result-to-gerrit
+
+- builder:
+    name: upload-merged-docs
+    builders:
+        - build-html-and-pdf-docs-output
+        - upload-merged-docs-to-opnfv-artifacts
+        - report-docs-build-result-to-gerrit
+        - remove-old-docs-from-opnfv-artifacts