summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/functest/build-docu-verify.sh3
-rw-r--r--jjb/functest/build-upload-docu.sh22
-rw-r--r--jjb/functest/functest.yml8
-rw-r--r--jjb/genesis/build-docu-verify.sh (renamed from jjb/opnfvdocs/build-docu-verify.sh)9
-rw-r--r--jjb/genesis/build-docu.sh38
-rw-r--r--jjb/genesis/build-upload-docu.sh67
-rw-r--r--jjb/genesis/genesis-docs.yml62
-rw-r--r--jjb/genesis/genesis-fuel.yml204
-rw-r--r--jjb/octopus/build-docu-verify.sh3
-rw-r--r--jjb/octopus/build-upload-docu.sh22
-rw-r--r--jjb/opnfvdocs/docu-build.sh (renamed from jjb/opnfvdocs/build-upload-docu.sh)23
-rw-r--r--jjb/opnfvdocs/docu-verify.sh33
-rw-r--r--jjb/opnfvdocs/opnfvdocs.yml12
-rw-r--r--jjb/parser/docu-build.sh62
-rw-r--r--jjb/parser/docu-verify.sh32
-rw-r--r--jjb/parser/parser.yml37
-rw-r--r--jjb/pharos/build-docu-verify.sh3
-rw-r--r--jjb/pharos/build-upload-docu.sh22
-rw-r--r--jjb/pharos/pharos.yml6
-rw-r--r--test.html362
20 files changed, 598 insertions, 432 deletions
diff --git a/jjb/functest/build-docu-verify.sh b/jjb/functest/build-docu-verify.sh
index e8f34a784..c692226dd 100644
--- a/jjb/functest/build-docu-verify.sh
+++ b/jjb/functest/build-docu-verify.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="functest"
export PATH=$PATH:/usr/local/bin/
diff --git a/jjb/functest/build-upload-docu.sh b/jjb/functest/build-upload-docu.sh
index bd5abdbf2..ee45d68a3 100644
--- a/jjb/functest/build-upload-docu.sh
+++ b/jjb/functest/build-upload-docu.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="functest"
export PATH=$PATH:/usr/local/bin/
@@ -40,3 +43,22 @@ for file in "${{files[@]}}"; do
done
+images=()
+while read -r -d ''; do
+ images+=("$REPLY")
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
diff --git a/jjb/functest/functest.yml b/jjb/functest/functest.yml
index 8ef926914..a4466f8a5 100644
--- a/jjb/functest/functest.yml
+++ b/jjb/functest/functest.yml
@@ -42,7 +42,7 @@
project-type: freestyle
- node: orange-build
+ node: ericsson-test
logrotate:
daysToKeep: 30
@@ -109,6 +109,8 @@
- job-template:
name: 'functest-daily-{stream}'
+ node: master
+
# Job template for daily builders
#
# Required Variables:
@@ -154,6 +156,8 @@
- job-template:
name: 'functest-verify'
+ node: master
+
project-type: freestyle
logrotate:
@@ -203,6 +207,8 @@
- job-template:
name: 'functest-merge'
+ node: master
+
# builder-merge job to run JJB update
#
# This job's purpose is to update all the JJB
diff --git a/jjb/opnfvdocs/build-docu-verify.sh b/jjb/genesis/build-docu-verify.sh
index 061e46d22..06b374e16 100644
--- a/jjb/opnfvdocs/build-docu-verify.sh
+++ b/jjb/genesis/build-docu-verify.sh
@@ -1,5 +1,8 @@
#!/bin/bash
-project="opnfvdocs"
+set -e
+set -o pipefail
+
+project="genesis"
export PATH=$PATH:/usr/local/bin/
git_sha1="$(git rev-parse HEAD)"
@@ -8,12 +11,12 @@ docu_build_date="$(date)"
files=()
while read -r -d ''; do
files+=("$REPLY")
-done < <(find * -type f -iname '*.rst' -print0)
+done < <(find . -type f -iname '*.rst' -print0)
for file in "${{files[@]}}"; do
file_cut="${{file%.*}}"
- gs_cp_folder="${{file_cut}}"
+ gs_cp_folder="$(echo "$file"| cut -d "/" -f2,3)"
# sed part
sed -i "s/_sha1_/$git_sha1/g" $file
diff --git a/jjb/genesis/build-docu.sh b/jjb/genesis/build-docu.sh
deleted file mode 100644
index b3869fcf7..000000000
--- a/jjb/genesis/build-docu.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-project="genesis"
-export PATH=$PATH:/usr/local/bin/
-
-files=()
-while read -r -d ''; do
- files+=("$REPLY")
-done < <(find . -type f -iname '*.rst' -print0)
-
-for file in "${{files[@]}}"; do
-
- file_cut="${{file%.*}}"
- gs_cp_folder="$(echo "$file"| cut -d "/" -f2,3)"
-
- html_file=$file_cut".html"
-
- echo "rst2html $file"
- rst2html $file | gsutil cp -L gsoutput.txt - \
- gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$html_file")
- gsutil setmeta -h "Content-Type:text/html" \
- -h "Cache-Control:private, max-age=0, no-transform" \
- gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$html_file")
- cat gsoutput.txt
- rm -f gsoutput.txt
-
- pdf_file="$file_cut"".pdf"
-
- echo "rst2pdf $file"
- rst2pdf "$file" -o - | gsutil cp -L gsoutput.txt - \
- gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$pdf_file")
- gsutil setmeta -h "Content-Type:application/pdf" \
- -h "Cache-Control:private, max-age=0, no-transform" \
- gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$pdf_file")
- cat gsoutput.txt
- rm -f gsoutput.txt
-
-done
-
diff --git a/jjb/genesis/build-upload-docu.sh b/jjb/genesis/build-upload-docu.sh
new file mode 100644
index 000000000..2a6bbf725
--- /dev/null
+++ b/jjb/genesis/build-upload-docu.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+set -e
+set -o pipefail
+
+project="genesis"
+export PATH=$PATH:/usr/local/bin/
+
+git_sha1="$(git rev-parse HEAD)"
+docu_build_date="$(date)"
+
+files=()
+while read -r -d ''; do
+ files+=("$REPLY")
+done < <(find . -type f -iname '*.rst' -print0)
+
+for file in "${{files[@]}}"; do
+
+ file_cut="${{file%.*}}"
+ gs_cp_folder="$(echo "$file"| cut -d "/" -f2,3)"
+
+ # sed part
+ sed -i "s/_sha1_/$git_sha1/g" $file
+ sed -i "s/_date_/$docu_build_date/g" $file
+
+ # rst2html part
+ html_file=$file_cut".html"
+ echo "rst2html $file"
+ rst2html $file | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$html_file")
+ gsutil setmeta -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$html_file")
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+ # rst2pdf part
+ pdf_file="$file_cut"".pdf"
+ echo "rst2pdf $file"
+ rst2pdf "$file" -o - | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$pdf_file")
+ gsutil setmeta -h "Content-Type:application/pdf" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder"/$(basename "$pdf_file")
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
+images=()
+while read -r -d ''; do
+ images+=("$REPLY")
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
diff --git a/jjb/genesis/genesis-docs.yml b/jjb/genesis/genesis-docs.yml
index 14ef95ba9..21c16f7ad 100644
--- a/jjb/genesis/genesis-docs.yml
+++ b/jjb/genesis/genesis-docs.yml
@@ -4,7 +4,8 @@
name: genesis-docs
jobs:
- - 'genesis-build-docs'
+ - 'genesis-merge-docs'
+ - 'genesis-verify-docs'
# stream: branch with - in place of / (eg. stable-helium)
# branch: branch (eg. stable/helium)
@@ -18,7 +19,9 @@
# job templates
########################
- job-template:
- name: 'genesis-build-docs'
+ name: 'genesis-merge-docs'
+
+ node: master
project-type: freestyle
@@ -59,5 +62,58 @@
builders:
- shell:
- !include-raw build-docu.sh
+ !include-raw build-upload-docu.sh
+
+- job-template:
+ name: 'genesis-verify-docs'
+
+ node: master
+
+ project-type: freestyle
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 40
+ artifactDaysToKeep: -1
+ artifactNumToKeep: 5
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - gerrit-parameter:
+ branch: 'master'
+
+ scm:
+ - gerrit-trigger-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ choosing-strategy: 'default'
+
+ wrappers:
+ - ssh-agent-credentials:
+ user: '{ssh-credentials}'
+
+ triggers:
+ - gerrit:
+ trigger-on:
+ - patchset-created-event:
+ exclude-drafts: 'false'
+ exclude-trivial-rebase: 'false'
+ exclude-no-code-change: 'false'
+ - draft-published-event
+ - comment-added-contains-event:
+ comment-contains-value: 'recheck'
+ - comment-added-contains-event:
+ comment-contains-value: 'reverify'
+
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: 'genesis'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/master'
+
+ builders:
+ - shell:
+ !include-raw build-docu-verify.sh
diff --git a/jjb/genesis/genesis-fuel.yml b/jjb/genesis/genesis-fuel.yml
index fca2db817..6662c7d19 100644
--- a/jjb/genesis/genesis-fuel.yml
+++ b/jjb/genesis/genesis-fuel.yml
@@ -9,6 +9,9 @@
- 'genesis-fuel-verify'
- 'genesis-fuel-merge'
- 'genesis-fuel-daily-{stream}'
+ - 'genesis-fuel-build'
+ - 'genesis-fuel-deploy'
+ - 'genesis-fuel-test'
# stream: branch with - in place of / (eg. stable-helium)
# branch: branch (eg. stable/helium)
@@ -248,6 +251,207 @@
- 'installer-upload-artifact'
- 'installer-deploy-quick-fix'
+- job-template:
+ name: 'genesis-fuel-build'
+
+ project-type: freestyle
+
+ disabled: true
+
+ node: ericsson-build
+
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/genesis
+ description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
+ - string:
+ name: GERRIT_BRANCH
+ default: origin/master
+ description: "Branch to build, deploy and test."
+ - string:
+ name: GERRIT_REFSPEC
+ default: refs/heads/master
+ description: "Refspec to retrieve."
+ - string:
+ name: GS_URL
+ default: 'artifacts.opnfv.org/genesis/fuel'
+ description: "URL to Google Storage."
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+ - string:
+ name: CACHE_DIRECTORY
+ default: $HOME/opnfv/cache/genesis-fuel
+ description: "Cache location that is where the cache is populated and used during builds to reduce the build time."
+ - string:
+ name: ARTIFACT_VERSION
+ default: $BUILD_ID
+ description: "Version number to append to resulting ISO."
+ - string:
+ name: SKIP_BUILD
+ default: 0
+ description: "Temporary parameter for deployment testing to skip the build and run deployment only."
+
+ scm:
+ - git:
+ skip-tag: true
+ url: $GIT_BASE
+ branches:
+ - $GERRIT_BRANCH
+ refspec: $GERRIT_REFSPEC
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o nounset
+ set -o pipefail
+ set -x
+
+ echo "Hello World!"
+
+- job-template:
+ name: 'genesis-fuel-deploy'
+
+ project-type: freestyle
+
+ disabled: true
+
+ node: opnfv-jump-1
+
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/genesis
+ description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
+ - string:
+ name: GERRIT_BRANCH
+ default: origin/master
+ description: "Branch to build, deploy and test."
+ - string:
+ name: GERRIT_REFSPEC
+ default: refs/heads/master
+ description: "Refspec to retrieve."
+ - string:
+ name: GS_URL
+ default: 'artifacts.opnfv.org/genesis/fuel'
+ description: "URL to Google Storage."
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+ - string:
+ name: CACHE_DIRECTORY
+ default: $HOME/opnfv/cache/genesis-fuel
+ description: "Cache location that is where the cache is populated and used during builds to reduce the build time."
+ - string:
+ name: ARTIFACT_VERSION
+ default: $BUILD_ID
+ description: "Version number to append to resulting ISO."
+ - string:
+ name: SKIP_BUILD
+ default: 0
+ description: "Temporary parameter for deployment testing to skip the build and run deployment only."
+
+ scm:
+ - git:
+ skip-tag: true
+ url: $GIT_BASE
+ branches:
+ - $GERRIT_BRANCH
+ refspec: $GERRIT_REFSPEC
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o nounset
+ set -o pipefail
+ set -x
+
+ echo "Hello World!"
+
+- job-template:
+ name: 'genesis-fuel-test'
+
+ project-type: freestyle
+
+ disabled: false
+
+ node: ericsson-test
+
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/genesis
+ description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
+ - string:
+ name: GERRIT_BRANCH
+ default: origin/master
+ description: "Branch to build, deploy and test."
+ - string:
+ name: GERRIT_REFSPEC
+ default: refs/heads/master
+ description: "Refspec to retrieve."
+ - string:
+ name: GS_URL
+ default: 'artifacts.opnfv.org/genesis/fuel'
+ description: "URL to Google Storage."
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+ - string:
+ name: CACHE_DIRECTORY
+ default: $HOME/opnfv/cache/genesis-fuel
+ description: "Cache location that is where the cache is populated and used during builds to reduce the build time."
+ - string:
+ name: ARTIFACT_VERSION
+ default: $BUILD_ID
+ description: "Version number to append to resulting ISO."
+ - string:
+ name: SKIP_BUILD
+ default: 0
+ description: "Temporary parameter for deployment testing to skip the build and run deployment only."
+
+ scm:
+ - git:
+ skip-tag: true
+ url: $GIT_BASE
+ branches:
+ - $GERRIT_BRANCH
+ refspec: $GERRIT_REFSPEC
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o nounset
+ set -o pipefail
+ set -x
+
+ echo "Hello World!"
+
- builder:
name: installer-build
builders:
diff --git a/jjb/octopus/build-docu-verify.sh b/jjb/octopus/build-docu-verify.sh
index 01338efe4..9c288fa12 100644
--- a/jjb/octopus/build-docu-verify.sh
+++ b/jjb/octopus/build-docu-verify.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="octopus"
export PATH=$PATH:/usr/local/bin/
diff --git a/jjb/octopus/build-upload-docu.sh b/jjb/octopus/build-upload-docu.sh
index 81f875dcf..fdd1463d7 100644
--- a/jjb/octopus/build-upload-docu.sh
+++ b/jjb/octopus/build-upload-docu.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="octopus"
export PATH=$PATH:/usr/local/bin/
@@ -40,3 +43,22 @@ for file in "${{files[@]}}"; do
done
+images=()
+while read -r -d ''; do
+ images+=("$REPLY")
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
diff --git a/jjb/opnfvdocs/build-upload-docu.sh b/jjb/opnfvdocs/docu-build.sh
index b7437265d..499bdbe4b 100644
--- a/jjb/opnfvdocs/build-upload-docu.sh
+++ b/jjb/opnfvdocs/docu-build.sh
@@ -1,5 +1,8 @@
#!/bin/bash
-project="opnfvdocs"
+set -e
+set -o pipefail
+
+project="$(git remote -v | head -n1 | awk '{{print $2}}' | sed -e 's,.*:\(.*/\)\?,,' -e 's/\.git$//')"
export PATH=$PATH:/usr/local/bin/
git_sha1="$(git rev-parse HEAD)"
@@ -40,3 +43,21 @@ for file in "${{files[@]}}"; do
done
+images=()
+while read -r -d ''; do
+ images+=("$REPLY")
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
diff --git a/jjb/opnfvdocs/docu-verify.sh b/jjb/opnfvdocs/docu-verify.sh
new file mode 100644
index 000000000..f337a7fae
--- /dev/null
+++ b/jjb/opnfvdocs/docu-verify.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -e
+set -o pipefail
+
+project="$(git remote -v | head -n1 | awk '{{print $2}}' | sed -e 's,.*:\(.*/\)\?,,' -e 's/\.git$//')"
+export PATH=$PATH:/usr/local/bin/
+
+git_sha1="$(git rev-parse HEAD)"
+docu_build_date="$(date)"
+
+files=()
+while read -r -d ''; do
+ files+=("$REPLY")
+done < <(find * -type f -iname '*.rst' -print0)
+
+for file in "${{files[@]}}"; do
+
+ file_cut="${{file%.*}}"
+ gs_cp_folder="${{file_cut}}"
+
+ # sed part
+ sed -i "s/_sha1_/$git_sha1/g" $file
+ sed -i "s/_date_/$docu_build_date/g" $file
+
+ # rst2html part
+ echo "rst2html $file"
+ rst2html $file > $file_cut".html"
+
+ echo "rst2pdf $file"
+ rst2pdf $file -o $file_cut".pdf"
+
+done
+
diff --git a/jjb/opnfvdocs/opnfvdocs.yml b/jjb/opnfvdocs/opnfvdocs.yml
index 2d3945227..39e33eb54 100644
--- a/jjb/opnfvdocs/opnfvdocs.yml
+++ b/jjb/opnfvdocs/opnfvdocs.yml
@@ -16,6 +16,8 @@
- job-template:
name: 'opnfvdocs-daily-{stream}'
+ node: master
+
# Job template for daily builders
#
# Required Variables:
@@ -49,11 +51,13 @@
builders:
- shell:
- !include-raw build-upload-docu.sh
+ !include-raw docu-build.sh
- job-template:
name: 'opnfvdocs-verify'
+ node: master
+
project-type: freestyle
logrotate:
@@ -98,11 +102,13 @@
builders:
- shell:
- !include-raw build-docu-verify.sh
+ !include-raw docu-verify.sh
- job-template:
name: 'opnfvdocs-merge'
+ node: master
+
# builder-merge job to run JJB update
#
# This job's purpose is to update all the JJB
@@ -146,5 +152,5 @@
builders:
- shell:
- !include-raw build-upload-docu.sh
+ !include-raw docu-build.sh
diff --git a/jjb/parser/docu-build.sh b/jjb/parser/docu-build.sh
new file mode 100644
index 000000000..7358118bd
--- /dev/null
+++ b/jjb/parser/docu-build.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -e
+set -o pipefail
+project="$(git remote -v | head -n1 | awk '{{print $2}}' | sed -e 's,.*:\(.*/\)\?,,' -e 's/\.git$//')"
+export PATH=$PATH:/usr/local/bin/
+
+git_sha1="$(git rev-parse HEAD)"
+docu_build_date="$(date)"
+
+files=()
+while read -r -d ''; do
+ files+=("$REPLY")
+done < <(find * -type f -iname '*.rst' -print0)
+
+for file in "${{files[@]}}"; do
+
+ file_cut="${{file%.*}}"
+ gs_cp_folder="${{file_cut}}"
+
+ # sed part
+ sed -i "s/_sha1_/$git_sha1/g" $file
+ sed -i "s/_date_/$docu_build_date/g" $file
+
+ # rst2html part
+ echo "rst2html $file"
+ rst2html $file | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder".html
+ gsutil setmeta -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder".html
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+ echo "rst2pdf $file"
+ rst2pdf $file -o - | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder".pdf
+ gsutil setmeta -h "Content-Type:application/pdf" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$gs_cp_folder".pdf
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
+images=()
+while read -r -d ''; do
+ images+=("$REPLY)
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
diff --git a/jjb/parser/docu-verify.sh b/jjb/parser/docu-verify.sh
new file mode 100644
index 000000000..3221dc2d3
--- /dev/null
+++ b/jjb/parser/docu-verify.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+set -o pipefail
+project="$(git remote -v | head -n1 | awk '{{print $2}}' | sed -e 's,.*:\(.*/\)\?,,' -e 's/\.git$//')"
+export PATH=$PATH:/usr/local/bin/
+
+git_sha1="$(git rev-parse HEAD)"
+docu_build_date="$(date)"
+
+files=()
+while read -r -d ''; do
+ files+=("$REPLY")
+done < <(find * -type f -iname '*.rst' -print0)
+
+for file in "${{files[@]}}"; do
+
+ file_cut="${{file%.*}}"
+ gs_cp_folder="${{file_cut}}"
+
+ # sed part
+ sed -i "s/_sha1_/$git_sha1/g" $file
+ sed -i "s/_date_/$docu_build_date/g" $file
+
+ # rst2html part
+ echo "rst2html $file"
+ rst2html $file > $file_cut".html"
+
+ echo "rst2pdf $file"
+ rst2pdf $file -o $file_cut".pdf"
+
+done
+
diff --git a/jjb/parser/parser.yml b/jjb/parser/parser.yml
index 88c32a6a6..2c8a2fa7e 100644
--- a/jjb/parser/parser.yml
+++ b/jjb/parser/parser.yml
@@ -33,6 +33,8 @@
- job-template:
name: 'parser-daily-{stream}'
+ node: master
+
# Job template for daily builders
#
# Required Variables:
@@ -43,10 +45,10 @@
varsetabove: '{somevar}'
logrotate:
- daysToKeep: '{build-days-to-keep}'
- numToKeep: '{build-num-to-keep}'
- artifactDaysToKeep: '{build-artifact-days-to-keep}'
- artifactNumToKeep: '{build-artifact-num-to-keep}'
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
parameters:
- project-parameter:
@@ -69,10 +71,8 @@
- test-macro
builders:
- - shell: |
- pwd
- find .
- echo "Hello world from parser {somevar} daily"
+ - shell:
+ !include-raw docu-build.sh
postbuilders:
- test-macro
@@ -80,6 +80,8 @@
- job-template:
name: 'parser-verify'
+ node: master
+
project-type: freestyle
logrotate:
@@ -123,14 +125,14 @@
branch-pattern: '**/master'
builders:
- - shell: |
- pwd
- find .
- echo "verify logic goes here"
+ - shell:
+ !include-raw docu-verify.sh
- job-template:
name: 'parser-merge'
+ node: master
+
# builder-merge job to run JJB update
#
# This job's purpose is to update all the JJB
@@ -173,13 +175,6 @@
branch-pattern: '**/master'
builders:
- - shell: |
- pwd
- find .
- echo "merge logic goes here"
-
-
-
-
-
+ - shell:
+ !include-raw docu-build.sh
diff --git a/jjb/pharos/build-docu-verify.sh b/jjb/pharos/build-docu-verify.sh
index 46862d913..50d387079 100644
--- a/jjb/pharos/build-docu-verify.sh
+++ b/jjb/pharos/build-docu-verify.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="pharos"
export PATH=$PATH:/usr/local/bin/
diff --git a/jjb/pharos/build-upload-docu.sh b/jjb/pharos/build-upload-docu.sh
index caf102119..50191e517 100644
--- a/jjb/pharos/build-upload-docu.sh
+++ b/jjb/pharos/build-upload-docu.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+set -o pipefail
+
project="pharos"
export PATH=$PATH:/usr/local/bin/
@@ -40,3 +43,22 @@ for file in "${{files[@]}}"; do
done
+images=()
+while read -r -d ''; do
+ images+=("$REPLY")
+done < <(find * -type f \( -iname \*.jpg -o -iname \*.png \) -print0)
+
+for img in "${{images[@]}}"; do
+
+ # uploading found images
+ echo "uploading $img"
+ cat "$img" | gsutil cp -L gsoutput.txt - \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ gsutil setmeta -h "Content-Type:image/jpeg" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/"$project"/"$img"
+ cat gsoutput.txt
+ rm -f gsoutput.txt
+
+done
+
diff --git a/jjb/pharos/pharos.yml b/jjb/pharos/pharos.yml
index 85f03b799..8b5a01251 100644
--- a/jjb/pharos/pharos.yml
+++ b/jjb/pharos/pharos.yml
@@ -33,6 +33,8 @@
- job-template:
name: 'pharos-daily-{stream}'
+ node: master
+
# Job template for daily builders
#
# Required Variables:
@@ -78,6 +80,8 @@
- job-template:
name: 'pharos-verify'
+ node: master
+
project-type: freestyle
logrotate:
@@ -127,6 +131,8 @@
- job-template:
name: 'pharos-merge'
+ node: master
+
# builder-merge job to run JJB update
#
# This job's purpose is to update all the JJB
diff --git a/test.html b/test.html
deleted file mode 100644
index 7fe7ce438..000000000
--- a/test.html
+++ /dev/null
@@ -1,362 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" dir="ltr" class="client-nojs">
-<head>
-<meta charset="UTF-8" />
-<title>OpenStack</title>
-<meta name="generator" content="MediaWiki 1.25wmf4" />
-<link rel="shortcut icon" href="/favicon.ico" />
-<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="OpenStack (en)" />
-<link rel="EditURI" type="application/rsd+xml" href="https://wiki.openstack.org/w/api.php?action=rsd" />
-<link rel="alternate" hreflang="x-default" href="/wiki/Main_Page" />
-<link rel="copyright" href="http://creativecommons.org/licenses/by/3.0/" />
-<link rel="alternate" type="application/atom+xml" title="OpenStack Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
-<link rel="stylesheet" href="https://wiki.openstack.org/w/load.php?debug=false&amp;lang=en&amp;modules=ext.uls.nojs%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.ui.button&amp;only=styles&amp;skin=strapping&amp;*" />
-<link rel="stylesheet" href="/w/skins/strapping/bootstrap/css/bootstrap.css?303" media="screen" />
-<link rel="stylesheet" href="/w/skins/strapping/bootstrap/awesome/css/font-awesome.css?303" media="screen" />
-<link rel="stylesheet" href="/w/skins/strapping/screen.css?303" media="screen" />
-<link rel="stylesheet" href="/w/skins/strapping/theme.css?303" media="screen" /><meta name="ResourceLoaderDynamicStyles" content="" />
-<link rel="stylesheet" href="https://wiki.openstack.org/w/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=strapping&amp;*" />
-<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
-/* cache key: openstack_wiki:resourceloader:filter:minify-css:7:d3155f57bef5c67e78be5cab96908cad */</style>
-<script src="https://wiki.openstack.org/w/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=strapping&amp;*"></script>
-<script>if(window.mw){
-mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Main_Page","wgTitle":"Main Page","wgCurRevisionId":73535,"wgRevisionId":73535,"wgArticleId":1126,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"Main_Page","wgIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgIsMainPage":true,"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"hidesig":true,"preview":false,"previewDialog":false,"publish":false},"wgULSAcceptLanguageList":[],"wgULSCurrentAutonym":"English","wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}"});
-}</script><script>if(window.mw){
-mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":1,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"strapping","stubthreshold":0,"thumbsize":5,"underline":2,"uselivepreview":0,"usenewrc":1,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"watchrollback":0,
-"wllimit":250,"useeditwarning":1,"prefershttps":1,"openid-show-openid":true,"openid-userinfo-update-on-login-nickname":false,"openid-userinfo-update-on-login-email":false,"openid-userinfo-update-on-login-fullname":false,"openid-userinfo-update-on-login-language":false,"openid-userinfo-update-on-login-timezone":false,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"translate":0,"translate-editlangs":"default","translate-recent-groups":"","translate-sandbox":"","echo-notify-show-link":true,"echo-show-alert":true,"echo-email-frequency":0,"echo-email-format":"plain-text","echo-subscriptions-email-system":true,"echo-subscriptions-web-system":true,"echo-subscriptions-email-user-rights":true,"echo-subscriptions-web-user-rights":true,"echo-subscriptions-email-other":false,"echo-subscriptions-web-other":true,"echo-subscriptions-email-edit-user-talk":false,"echo-subscriptions-web-edit-user-talk":true,"echo-subscriptions-email-reverted":false,"echo-subscriptions-web-reverted":true,
-"echo-subscriptions-email-article-linked":false,"echo-subscriptions-web-article-linked":false,"echo-subscriptions-email-mention":false,"echo-subscriptions-web-mention":true,"uls-preferences":"","language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs110":false,"searchNs111":false,"searchNs828":false,"searchNs829":false,"searchNs1198":false,"searchNs1199":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\"});},{},{});
-/* cache key: openstack_wiki:resourceloader:filter:minify-js:7:9103c5351c1af08715851bded530c248 */
-}</script>
-<script>if(window.mw){
-mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax","ext.uls.init","ext.uls.interface"]);
-}</script>
-<style type='text/css'>
-li#pt-openidlogin {
-background: url(/w/extensions/OpenID/skin/icons/openid-inputicon.png) top left no-repeat;
-padding-left: 20px;
-text-transform: none;
-}
-</style>
-<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins/strapping/csshover.min.htc")}</style><![endif]-->
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-</head>
-<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Main_Page skin-strapping action-view">
-
-<div id="userbar" class="navbar navbar-static">
- <div class="navbar-inner">
- <div style="width: auto;" class="container">
-
- <div class="pull-left">
- <ul class="nav logo-container" role="navigation"><li id="p-logo"><a href="/wiki/Main_Page" title="Visit the main page"><img src="https://wiki.openstack.org/w/images/thumb/c/c4/OpenStack_Logo_-_notext.png/30px-OpenStack_Logo_-_notext.png" alt="OpenStack"></a><li></ul>
-
-<!-- 0 -->
- <ul class="nav" role="navigation">
- <li class="dropdown" id="p-namespaces" class="vectorMenu">
- <a data-toggle="dropdown" class="dropdown-toggle brand" role="menu">Page <b class="caret"></b></a>
- <ul aria-labelledby="Namespaces" role="menu" class="dropdown-menu" >
-
- <li id="ca-nstab-main" class="selected"><a href="/wiki/Main_Page" title="View the content page [c]" accesskey="c" tabindex="-1">Page</a></li><li id="ca-talk"><a href="/wiki/Talk:Main_Page" title="Discussion about the content page [t]" accesskey="t" tabindex="-1">Discussion</a></li><li id="ca-viewsource"><a href="/w/index.php?title=Main_Page&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e" tabindex="-1">View source</a></li><li id="ca-history" class="collapsible"><a href="/w/index.php?title=Main_Page&amp;action=history" title="Past revisions of this page [h]" accesskey="h" tabindex="-1">History</a></li></ul></li></ul>
-<!-- /0 -->
-
-<!-- 0 -->
-
-<!-- /0 -->
-
-<!-- 0 -->
-
-<!-- /0 -->
-
-<!-- 0 -->
- <ul class="nav" role="navigation">
- <li class="dropdown" id="p-Print/export" class="vectorMenu">
- <a data-toggle="dropdown" class="dropdown-toggle" role="menu">Print/export <b class="caret"></b></a>
- <ul aria-labelledby="Print/export" role="menu" class="dropdown-menu" >
- <li class=""><a id="coll-create_a_book" href="/w/index.php?title=Special:Book&amp;bookcmd=book_creator&amp;referer=Main+Page">Create a book</a></li>
- <li class=""><a id="coll-download-as-rl" href="/w/index.php?title=Special:Book&amp;bookcmd=render_article&amp;arttitle=Main+Page&amp;oldid=73535&amp;writer=rl">Download as PDF</a></li>
- <li class=""><a id="t-print" href="/w/index.php?title=Main_Page&amp;printable=yes" title="Printable version of this page [p]" accesskey="p">Printable version</a></li> </li>
- </ul></ul>
-<!-- /Print/export -->
-
-<!-- 0 -->
-
- <ul class="nav" role="navigation">
-
- <li class="dropdown" id="p-toolbox" class="vectorMenu">
-
- <a data-toggle="dropdown" class="dropdown-toggle" role="button">Tools <b class="caret"></b></a>
-
- <ul aria-labelledby="Tools" role="menu" class="dropdown-menu" >
-
- <li id="t-info"><a href="/w/index.php?title=Main_Page&amp;action=info" title="More information about this page">Page information</a></li><li id="t-permalink"><a href="/w/index.php?title=Main_Page&amp;oldid=73535" title="Permanent link to this revision of the page">Permanent link</a></li><li class="divider"></li><li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/Main_Page" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li class="divider"></li><li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/Main_Page" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li> </ul>
-
- </li>
-
- </ul>
-
-<!-- /0 -->
- </div>
-
- <div class="pull-right">
-
-<!-- 0 -->
- <form class="navbar-search" action="/w/index.php" id="searchform">
- <input id="searchInput" class="search-query" type="search" accesskey="f" title="Special:Search" placeholder="Search" name="search" value="">
- <input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton btn hidden" /> </form>
-
-
-<!-- /0 -->
-
-<!-- 0 -->
- <ul class="nav pull-right" role="navigation">
- <li class="dropdown" id="p-notifications" class="vectorMenu">
- </li>
- <li class="dropdown" id="p-createaccount" class="vectorMenu">
- <li id="pt-createaccount"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Main+Page&amp;type=signup" title="You are encouraged to create an account and log in; however, it is not mandatory">Create account</a></li> </li>
- <li class="dropdown" id="p-login" class="vectorMenu">
- <li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Main+Page" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li> </li>
- <li class="dropdown" id="p-openidlogin" class="vectorMenu">
- <li id="pt-openidlogin"><a href="/w/index.php?title=Special:OpenIDLogin&amp;returnto=Main_Page">Log in / create account with OpenID</a></li> </li>
- <li class="dropdown" id="p-personaltools" class="vectorMenu">
- <a data-toggle="dropdown" class="dropdown-toggle" role="button">
- <i class="icon-user"></i>
- <b class="caret"></b></a>
- <ul aria-labelledby="Personal tools" role="menu" class="dropdown-menu" >
- <li id="pt-uls" class="active"><a href="#" class="uls-trigger autonym">English</a></li> </ul>
- </li>
- </ul>
-
-<!-- /0 -->
- </div>
-
- </div>
- </div>
-</div>
-
- <div id="mw-page-base" class="noprint"></div>
- <div id="mw-head-base" class="noprint"></div>
-
- <!-- Header -->
- <div id="page-header" class="container signed-out">
- <section class="span12">
-
-
- <ul class="navigation nav nav-pills pull-right searchform-disabled">
-
-
-<!-- 0 -->
-
- <li class=""><a href="http://www.openstack.org" id="n-Home" rel="nofollow">Home</a></li>
- <li class=""><a href="http://www.openstack.org/software" id="n-Software" rel="nofollow">Software</a></li>
- <li class=""><a href="http://www.openstack.org/user-stories" id="n-User-Stories" rel="nofollow">User Stories</a></li>
- <li class=""><a href="http://www.openstack.org/community" id="n-Community" rel="nofollow">Community</a></li>
- <li class=""><a href="http://www.openstack.org/profile" id="n-Profile" rel="nofollow">Profile</a></li>
- <li class=""><a href="http://www.openstack.org/blog" id="n-Blog" rel="nofollow">Blog</a></li>
- <li class=""><a href="http://wiki.openstack.org" id="n-Wiki" rel="nofollow">Wiki</a></li>
- <li class=""><a href="http://docs.openstack.org" id="n-Documentation" rel="nofollow">Documentation</a></li>
-<!-- /coll-print_export -->
-
- </ul>
-
- </section>
- </div>
-
-
-
- <!-- content -->
- <section id="content" class="mw-body container 0">
- <div id="top"></div>
- <div id="mw-js-message" style="display:none;"></div>
- <!-- bodyContent -->
- <div id="bodyContent">
- <!-- jumpto -->
- <div id="jump-to-nav" class="mw-jump">
- Jump to: <a href="#mw-head">navigation</a>,
- <a href="#p-search">search</a>
- </div>
- <!-- /jumpto -->
-
- <!-- innerbodycontent -->
- <div id="innerbodycontent" class="row nolayout"><div class="offset1 span10">
- <h1 id="firstHeading" class="firstHeading page-header">
- <span dir="auto">Main Page</span>
- </h1>
- <!-- subtitle -->
- <div id="contentSub" ></div>
- <!-- /subtitle -->
- <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div id="mf-index">
-<table border="0" width="100%"><tr><td width="20%" align="center">
-<p><a href="/wiki/File:Openstack-vertical-small.png" class="image"><img alt="Openstack-vertical-small.png" src="/w/images/5/53/Openstack-vertical-small.png" width="216" height="216" /></a>
-</p>
-</td><td>
-<p><b>The OpenStack Mission:</b> to produce the ubiquitous Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable.
-</p><p>OpenStack is <a href="/wiki/Open" title="Open">open</a> source, <a href="/wiki/Open" title="Open">openly</a> designed, <a href="/wiki/Open" title="Open">openly</a> developed by an <a href="/wiki/Open" title="Open">open</a> community.
-</p>
-</td></tr>
-</table>
-<table border="0" width="100%">
-<tr valign="top"><td width="33%">
-<h4><span class="mw-headline" id="Getting_started">Getting started</span></h4>
-<ul><li> Read official <a rel="nofollow" class="external text" href="http://docs.openstack.org/">documentation</a></li>
-<li> Ask us questions on <a rel="nofollow" class="external text" href="http://ask.openstack.org/">Ask OpenStack</a></li>
-<li> Talk to us on our <a href="/wiki/IRC" title="IRC">IRC channels</a></li>
-<li> Join the conversation on our <a href="/wiki/Mailing_Lists" title="Mailing Lists">Mailing Lists</a></li>
-<li> All OpenStack <a href="/wiki/Releases" title="Releases">releases</a> and release notes</li>
-<li> <b>Get the <a href="/wiki/Getting_The_Code" title="Getting The Code">source code</a></b></li>
-<li> Give OpenStack <a rel="nofollow" class="external text" href="http://www.openstack.org/software/start/">a trial run</a></li>
-<li> Watch <a href="/wiki/Demo_Videos" title="Demo Videos">demo videos</a></li>
-<li> Go back to <a rel="nofollow" class="external text" href="http://www.openstack.org">main OpenStack website</a></li></ul>
-</td><td width="33%">
-<h4><span class="mw-headline" id="Contribute_to_OpenStack">Contribute to OpenStack</span></h4>
-<ul><li> <b><a href="/wiki/How_To_Contribute" title="How To Contribute">How To Contribute</a></b></li>
-<li> <a href="/wiki/Release_Cycle" title="Release Cycle">Explanation of the Release cycle</a></li>
-<li> See the <a href="/wiki/Current_release_schedule" title="Current release schedule" class="mw-redirect">current release cycle schedule</a></li>
-<li> <b>How to <a rel="nofollow" class="external text" href="http://docs.openstack.org/infra/manual/developers.html">submit changes</a></b></li>
-<li> <a rel="nofollow" class="external text" href="https://review.openstack.org/">Code reviews (Gerrit)</a></li>
-<li> <a rel="nofollow" class="external text" href="http://docs.openstack.org/infra/manual/developers.html#peer-review">Guidelines for code reviewers</a></li>
-<li> <a rel="nofollow" class="external text" href="http://status.openstack.org/zuul/">Gate system status (Zuul)</a></li>
-<li> <a rel="nofollow" class="external text" href="http://status.openstack.org/release/">Status of current development release</a></li>
-<li> How to use Launchpad <a href="/wiki/Bugs" title="Bugs">Bugs</a> and <a href="/wiki/Blueprints" title="Blueprints">Blueprints</a></li>
-<li> <a href="/wiki/How_To_Use_The_Wiki" title="How To Use The Wiki">How to use this wiki</a></li></ul>
-</td><td width="33%">
-<h4><span class="mw-headline" id="Community">Community</span></h4>
-<ul><li> <a href="/wiki/Open" title="Open">Open</a> - What openness means to us</li>
-<li> <a href="/wiki/Governance" title="Governance">Governance</a> - How OpenStack is governed</li>
-<li> <a href="/wiki/Meetings" title="Meetings">Online Meetings</a></li>
-<li> <a href="/wiki/Summit" title="Summit">Design Summits</a></li>
-<li> Mid-cycle <a href="/wiki/Sprints" title="Sprints">Sprints</a></li>
-<li> <a href="/wiki/OpenStack_User_Groups" title="OpenStack User Groups">OpenStack User Groups</a></li>
-<li> <a rel="nofollow" class="external text" href="http://www.openstack.org/blog/category/newsletter/">OpenStack Blog</a>, with <a rel="nofollow" class="external text" href="http://www.openstack.org/blog/category/newsletter/">weekly newsletters</a></li>
-<li> <a rel="nofollow" class="external text" href="http://planet.openstack.org/">Planet OpenStack</a> - Blogs about OpenStack</li>
-<li> <a href="/wiki/New_home" title="New home">Categorized index</a> of pages on this wiki</li></ul>
-</td></tr></table>
-<hr />
-<table border="0" width="100%"><tr><td align="center" width="20%">
-<p><a href="/wiki/File:Openstack-compute-icon.png" class="image"><img alt="Openstack-compute-icon.png" src="/w/images/2/25/Openstack-compute-icon.png" width="111" height="91" /></a>
-</p>
-</td><td>
-<p><b>OpenStack Project Teams</b> are the building blocks to achieve OpenStack's mission. One can think of Project Teams as teams of people using tools (code repository, bug tracker, etc) and coordinated processes to produce a number of deliverables, in order to achieve a clearly stated objective.
-</p>
-</td></tr>
-</table>
-<table border="0" width="100%">
-<tr valign="top"><td rowspan="2" width="33%">
-<h4><span class="mw-headline" id="Main_services">Main services</span></h4>
-<ul><li> Identity (<b><a href="/wiki/Keystone" title="Keystone">Keystone</a></b>)</li>
-<li> Compute (<b><a href="/wiki/Nova" title="Nova">Nova</a></b>)</li>
-<li> Image service (<b><a href="/wiki/Glance" title="Glance">Glance</a></b>)</li>
-<li> Networking (<b><a href="/wiki/Neutron" title="Neutron">Neutron</a></b>)</li>
-<li> Object Storage (<b><a href="/wiki/Swift" title="Swift">Swift</a></b>)</li>
-<li> Block Storage (<b><a href="/wiki/Cinder" title="Cinder">Cinder</a></b>)</li>
-<li> Orchestration (<b><a href="/wiki/Heat" title="Heat">Heat</a></b>)</li>
-<li> Database Service (<b><a href="/wiki/Trove" title="Trove">Trove</a></b>)</li>
-<li> Bare Metal (<b><a href="/wiki/Ironic" title="Ironic">Ironic</a></b>)</li>
-<li> Data processing (<b><a href="/wiki/Sahara" title="Sahara">Sahara</a></b>)</li>
-<li> Message service (<b><a href="/wiki/Zaqar" title="Zaqar">Zaqar</a></b>)</li>
-<li> Key management (<b><a href="/wiki/Barbican" title="Barbican">Barbican</a></b>)</li>
-<li> DNS (<b><a href="/wiki/Designate" title="Designate">Designate</a></b>)</li>
-<li> Shared Filesystems (<b><a href="/wiki/Manila" title="Manila">Manila</a></b>)</li></ul>
-</td><td rowspan="2" width="33%">
-<h4><span class="mw-headline" id="Supporting_services">Supporting services</span></h4>
-<ul><li> Dashboard (<b><a href="/wiki/Horizon" title="Horizon">Horizon</a></b>)</li>
-<li> Telemetry (<b><a href="/wiki/Ceilometer" title="Ceilometer">Ceilometer</a></b>)</li>
-<li> Common Libraries (<b><a href="/wiki/Oslo" title="Oslo">Oslo</a></b>)</li>
-<li> Deployment (<b><a href="/wiki/TripleO" title="TripleO">TripleO</a></b>)</li></ul>
-</td><td width="33%">
-<h4><span class="mw-headline" id="Horizontal_teams">Horizontal teams</span></h4>
-<ul><li> <b><a href="/wiki/Documentation" title="Documentation">Documentation</a></b></li>
-<li> <b><a href="/wiki/QA" title="QA">QA</a></b> and <b><a href="/wiki/DevStack" title="DevStack">DevStack</a></b></li>
-<li> <b><a href="/wiki/Infrastructure" title="Infrastructure">Infrastructure</a></b></li>
-<li> <b><a href="/wiki/Release_Cycle_Management" title="Release Cycle Management">Release cycle management</a></b></li></ul>
-</td></tr>
-<tr valign="bottom"><td>
-<p>See also the list of other <a rel="nofollow" class="external text" href="https://wiki.openstack.org/wiki/Category:Working_Groups">working groups</a>.
-</p>
-</td></tr>
-</table>
-<p><br />
-</p>
-</div>
-
-<!--
-NewPP limit report
-CPU time usage: 0.096 seconds
-Real time usage: 0.102 seconds
-Preprocessor visited node count: 39/1000000
-Preprocessor generated node count: 60/1000000
-Post‐expand include size: 0/2097152 bytes
-Template argument size: 0/2097152 bytes
-Highest expansion depth: 2/40
-Expensive parser function count: 0/100
--->
-
-<!-- Saved in parser cache with key openstack_wiki:pcache:idhash:1126-0!*!0!!*!5!* and timestamp 20150311091814 and revision id 73535
- -->
-</div> </div></div>
- <!-- /innerbodycontent -->
-
- <!-- printfooter -->
- <div class="printfooter">
- Retrieved from "<a dir="ltr" href="https://wiki.openstack.org/w/index.php?title=Main_Page&amp;oldid=73535">https://wiki.openstack.org/w/index.php?title=Main_Page&amp;oldid=73535</a>" </div>
- <!-- /printfooter -->
- <!-- catlinks -->
- <div id='catlinks' class='catlinks catlinks-allhidden'></div> <!-- /catlinks -->
- <div class="visualClear"></div>
- <!-- debughtml -->
- <!-- /debughtml -->
- </div>
- <!-- /bodyContent -->
- </section>
- <!-- /content -->
-
- <!-- footer -->
-
-
- <div id="footer" class="footer container">
- <div class="row">
-
- <ul id="footer-places">
- <li id="footer-places-privacy"><a href="/wiki/OpenStack:Privacy_policy" title="OpenStack:Privacy policy">Privacy policy</a></li>
- <li id="footer-places-about"><a href="/wiki/OpenStack:About" title="OpenStack:About">About OpenStack</a></li>
- <li id="footer-places-disclaimer"><a href="/wiki/OpenStack:General_disclaimer" title="OpenStack:General disclaimer">Disclaimers</a></li>
- <li id="footer-places-mobileview"><a href="https://wiki.openstack.org/w/index.php?title=Main_Page&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li>
- </ul>
- <ul id="footer-icons" class="noprint">
- <li id="footer-copyrightico">
- <a href="http://creativecommons.org/licenses/by/3.0/"><img src="/w/resources/assets/licenses/cc-by.png" alt="Attribution 3.0 Unported (CC BY 3.0)" width="88" height="31" /></a>
- </li>
- <li id="footer-poweredbyico">
- <a href="//www.mediawiki.org/"><img src="/w/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
- </li>
- </ul>
- </div>
- </div>
- <!-- /footer -->
-
-
- <script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
-mw.loader.state({"skins.strapping":"loading","site":"loading","user":"ready","user.groups":"ready"});
-}</script>
-<script>if(window.mw){
-document.write("\u003Cscript src=\"https://wiki.openstack.org/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=skins.strapping\u0026amp;only=scripts\u0026amp;skin=strapping\u0026amp;*\"\u003E\u003C/script\u003E");
-}</script>
-<script>if(window.mw){
-mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.uls.pt"],null,true);
-}</script>
-<script src="//bits.wikimedia.org/geoiplookup"></script>
-<script>if(window.mw){
-document.write("\u003Cscript src=\"https://wiki.openstack.org/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=site\u0026amp;only=scripts\u0026amp;skin=strapping\u0026amp;*\"\u003E\u003C/script\u003E");
-}</script>
-<script type="text/javascript">
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try {
-var pageTracker = _gat._getTracker("UA-17511903-1");
-pageTracker._trackPageview();
-} catch(err) {}
-</script><script>if(window.mw){
-mw.config.set({"wgBackendResponseTime":130});
-}</script>
- </body>
-</html>