name: PROJECT
default: '{project}'
description: "JJB configured PROJECT parameter to identify an opnfv Gerrit project"
+ - string:
+ name: GS_BASE
+ default: artifacts.opnfv.org/$PROJECT
+ description: "URL to Google Storage."
+ - string:
+ name: GS_BASE_PROXY
+ default: build.opnfv.org/artifacts/$PROJECT
+ description: "URL to Google Storage proxy"
- parameter:
name: gerrit-parameter
timeout: 360
fail: true
+- trigger:
+ name: 'brahmaputra-trigger-daily-disabled'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'brahmaputra-trigger-daily-enabled'
+ triggers:
+ - timed: '0 2 * * *'
+
- trigger:
name: gerrit-trigger-patch-submitted
triggers:
name: build-html-and-pdf-docs-output
builders:
- shell: |
- #!/bin/bash -e
- set -o pipefail
+ #!/bin/bash
+ set -o errexit
+ set -o xtrace
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
+ GERRIT_COMMENT=gerrit_comment.txt ./releng/utils/docs-build.sh
- builder:
name: upload-under-review-docs-to-opnfv-artifacts
builders:
- shell: |
- #!/bin/bash -e
+ #!/bin/bash
+ set -o errexit
set -o pipefail
+ set -o xtrace
export PATH=$PATH:/usr/local/bin/
[[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
- [[ -d docs/output ]]
+ [[ -d docs_output ]] || exit 0
echo
echo "###########################"
echo "###########################"
echo
- gs_base="artifacts.opnfv.org/review"
+ gs_base="artifacts.opnfv.org/$PROJECT/review"
gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
- local_path="docs/$GERRIT_CHANGE_NUMBER"
+ local_path="upload/$GERRIT_CHANGE_NUMBER"
- mv docs/output "$local_path"
+ mkdir -p upload
+ 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
sed -e "s|^$local_path| http://$gs_path|" >> gerrit_comment.txt
- builder:
- name: upload-merged-docs-to-opnfv-artifacts
+ name: upload-generated-docs-to-opnfv-artifacts
builders:
- shell: |
- #!/bin/bash -e
+ #!/bin/bash
+ set -o errexit
set -o pipefail
+ set -o xtrace
export PATH=$PATH:/usr/local/bin/
- [[ -d docs/output ]]
+ [[ -d docs_output ]] || exit 0
echo
- echo "#####################"
- echo "UPLOADING MERGED DOCS"
- echo "#####################"
+ echo "########################"
+ echo "UPLOADING GENERATED 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"
+ gs_path="$GS_URL/docs"
+ local_path="upload/docs"
- mv docs/output "$local_path"
- gsutil -m cp -r "$local_path" "gs://$gs_base"
+ mkdir -p upload
+ mv docs_output "$local_path"
+ gsutil -m cp -r "$local_path" "gs://$GS_URL"
if gsutil ls "gs://$gs_path" | grep -e 'html$' > /dev/null 2>&1 ; then
gsutil -m setmeta \
name: report-docs-build-result-to-gerrit
builders:
- shell: |
- #!/bin/bash -e
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
export PATH=$PATH:/usr/local/bin/
if [[ -e gerrit_comment.txt ]] ; then
echo
name: remove-old-docs-from-opnfv-artifacts
builders:
- shell: |
- #!/bin/bash -e
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
export PATH=$PATH:/usr/local/bin/
[[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+ gs_path="artifacts.opnfv.org/$PROJECT/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
gs_path="artifacts.opnfv.org/review/$GERRIT_CHANGE_NUMBER"
if gsutil ls "gs://$gs_path" > /dev/null 2>&1 ; then
gsutil -m rm -r "gs://$gs_path"
fi
+- builder:
+ name: build-and-upload-artifacts-json-api
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ export PATH=$PATH:/usr/local/bin/
+
+ virtualenv -p python2.7 $WORKSPACE/releng_artifacts
+ source $WORKSPACE/releng_artifacts/bin/activate
+
+ # install python packages
+ pip install google-api-python-client
+
+ # generate and upload index file
+ echo "Generating Artifacts API ..."
+ python $WORKSPACE/utils/opnfv-artifacts.py > index.json
+ gsutil cp index.json gs://artifacts.opnfv.org/index.json
+
+ deactivate
+
+- builder:
+ name: lint-python-code
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
+ export PATH=$PATH:/usr/local/bin/
+
+ virtualenv -p python2.7 $WORKSPACE/releng_flake8
+ source $WORKSPACE/releng_flake8/bin/activate
+
+ # install python packages
+ pip install flake8
+
+ # generate and upload lint log
+ echo "Running flake8 code on $PROJECT ..."
+
+ # Get number of flake8 violations. If none, this will be an
+ # empty string: ""
+ FLAKE_COUNT="$(find . \
+ -path './releng_flake8' -prune -o \
+ -type f -name "*.py" -print | \
+ xargs flake8 --exit-zero -qq --count 2>&1)"
+
+ if [ ! -z $FLAKE_COUNT ]; then
+ echo "Flake8 Violations: $FLAKE_COUNT" >> lint.log
+ find . \
+ -path './releng_flake8' -prune -o \
+ -type f -name "*.py" -print | \
+ xargs flake8 --exit-zero --first >> violation.log
+ SHOWN=$(wc -l violation.log | cut -d' ' -f1)
+ echo -e "First $SHOWN shown\n---" >> lint.log
+ cat violation.log >> lint.log
+ sed -r -i '4,$s/^/ /g' lint.log
+ rm violation.log
+ else
+ echo -e "Flake8 Violations: 0" > lint.log
+ fi
+
+ deactivate
+
+- builder:
+ name: report-lint-result-to-gerrit
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
+ export PATH=$PATH:/usr/local/bin/
+ if [[ -e lint.log ]] ; then
+ echo -e "\nposting linting report to gerrit...\n"
+ cat lint.log
+ echo
+ ssh -p 29418 gerrit.opnfv.org \
+ "gerrit review -p $GERRIT_PROJECT \
+ -m \"$(cat lint.log)\" \
+ $GERRIT_PATCHSET_REVISION"
+ fi
+
- builder:
name: upload-review-docs
builders:
name: upload-merged-docs
builders:
- build-html-and-pdf-docs-output
- - upload-merged-docs-to-opnfv-artifacts
+ - upload-generated-docs-to-opnfv-artifacts
- report-docs-build-result-to-gerrit
- remove-old-docs-from-opnfv-artifacts