X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Freleng-macros.yaml;h=3afe8482a143c1cd38845e8424206b67778df51e;hb=19852f3337812c944906b8427cd81fd3480fb859;hp=2c694c847560edb8c6fd27e8ecc96dd9e9c4d7e2;hpb=2d371b271dd95913d46b1a2f179a71a69c548515;p=releng.git diff --git a/jjb/releng-macros.yaml b/jjb/releng-macros.yaml index 2c694c847..3afe8482a 100644 --- a/jjb/releng-macros.yaml +++ b/jjb/releng-macros.yaml @@ -143,3 +143,202 @@ 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