Merge "Add tool to backup Mongo tables and postman collection as sample"
[releng.git] / jjb / releng-macros.yaml
index 2c694c8..3afe848 100644 (file)
     name: jacoco-nojava-workaround
     builders:
         - shell: 'mkdir -p $WORKSPACE/target/classes'
+
+
+# New Releng macros
+
+- builder:
+    name: build-html-and-pdf-docs-output
+    builders:
+        - shell: |
+            #!/bin/bash -e
+            set -o pipefail
+            export PATH=$PATH:/usr/local/bin/
+
+            [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+
+            _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
+                _name="${dir##*/}"
+                _build="$dir/build"
+                _output="docs/output/$_name"
+
+                echo
+                echo "#################${dir//?/#}"
+                echo "Building DOCS in $dir"
+                echo "#################${dir//?/#}"
+                echo
+
+                sed -i "s/_sha1_/$_git_sha1/g" "$dir/index.rst"
+
+                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"
+
+                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
+
+- builder:
+    name: upload-under-review-docs-to-opnfv-artifacts
+    builders:
+        - shell: |
+            #!/bin/bash -e
+            set -o pipefail
+            export PATH=$PATH:/usr/local/bin/
+
+            [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+            [[ -d docs/output ]]
+
+            echo
+            echo "###########################"
+            echo "UPLOADING DOCS UNDER REVIEW"
+            echo "###########################"
+            echo
+
+            gs_base="artifacts.opnfv.org/review"
+            gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
+            local_path="docs/$GERRIT_CHANGE_NUMBER"
+
+            mv docs/output "$local_path"
+            gsutil -m cp -r "$local_path" "gs://$gs_base"
+
+            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" \
+                    "gs://$gs_path"/**.html
+            fi
+
+            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
+
+- builder:
+    name: upload-merged-docs-to-opnfv-artifacts
+    builders:
+        - shell: |
+            #!/bin/bash -e
+            set -o pipefail
+            export PATH=$PATH:/usr/local/bin/
+
+            [[ -d docs/output ]]
+
+            echo
+            echo "#####################"
+            echo "UPLOADING MERGED DOCS"
+            echo "#####################"
+            echo
+
+            if [[ "$GERRIT_BRANCH" == "master" ]] ; then
+                gs_base="artifacts.opnfv.org/$GERRIT_PROJECT"
+            else
+                gs_base="artifacts.opnfv.org/$GERRIT_PROJECT/$GERRIT_BRANCH"
+            fi
+            gs_path="$gs_base/docs"
+            local_path="docs/docs"
+
+            mv docs/output "$local_path"
+            gsutil -m cp -r "$local_path" "gs://$gs_base"
+
+            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" \
+                    "gs://$gs_path"/**.html
+            fi
+
+            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
+
+- 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
+    builders:
+        - shell: |
+            #!/bin/bash -e
+            export PATH=$PATH:/usr/local/bin/
+
+            [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+
+            gs_path="artifacts.opnfv.org/review/$GERRIT_CHANGE_NUMBER"
+
+            if gsutil ls "gs://$gs_path" > /dev/null 2>&1 ; then
+                echo
+                echo "Deleting Out-of-dated Documents..."
+                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