Fix for building on CentOS
[releng.git] / jjb / yardstick / yardstick.yml
index 4783ba1..a961903 100644 (file)
@@ -1,7 +1,18 @@
 - project:
     name: yardstick
+
+    installer:
+        - fuel:
+            node: 'opnfv-jump-2'
+            installer_type: 'fuel'
+            installer_ip: '10.20.0.2'
+        - foreman:
+            node: 'opnfv-jump-2'
+            installer_type: 'foreman'
+            installer_ip: '172.30.10.73'
+
     jobs:
-        - 'yardstick-daily-{stream}'
+        - 'yardstick-{installer}-{stream}'
         - 'yardstick-merge'
         - 'yardstick-verify'
 
     stream:
         - master:
             branch: 'master'
+        - stable-arno:
+            branch: 'stable/arno'
+            gs-pathname: '/arno'
 
     project: 'yardstick'
-    somevar: 'foo'
-
-- job-template:
-    name: 'yardstick-daily-{stream}'
-
-    # Job template for daily builders
-    #
-    # Required Variables:
-    #     stream:    branch with - in place of / (eg. stable)
-    #     branch:    branch (eg. stable)
-
-    node: master
-
-    project-type: freestyle
-    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}'
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/$PROJECT
-            description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
-    triggers:
-        - timed: 'H H * * *'
-
-    prebuilders:
-        - test-macro
-
-    builders:
-        - shell: |
-            pwd
-            find .
-            echo "Hello world from yardstick {somevar} daily"
-
-    postbuilders:
-        - test-macro
 
 - job-template:
     name: 'yardstick-verify'
 
     project-type: freestyle
 
-    node: master
+    node: ericsson-build
 
     logrotate:
         daysToKeep: 30
 
     builders:
         - shell: |
-            pwd
-            find .
-            echo "Hello world from yardstick"
+            #!/bin/bash
+            set -o errexit
+            set -o pipefail
+
+            echo "Running unit tests..."
+            cd $WORKSPACE
+            virtualenv $WORKSPACE/yardstick_venv
+            source $WORKSPACE/yardstick_venv/bin/activate
+            easy_install -U setuptools
+            python setup.py develop
+            ./run_tests.sh
+            deactivate
 
 - job-template:
     name: 'yardstick-merge'
 
     project-type: freestyle
 
-    node: master
+    node: ericsson-build
 
     logrotate:
         daysToKeep: 30
 
     builders:
         - shell: |
-            pwd
-            find .
-            echo "Hello world from yardstick"
+            #!/bin/bash
+            set -o errexit
+            set -o pipefail
+
+            echo "Running unit tests..."
+            cd $WORKSPACE
+            virtualenv $WORKSPACE/yardstick_venv
+            source $WORKSPACE/yardstick_venv/bin/activate
+            easy_install -U setuptools
+            python setup.py develop
+            ./run_tests.sh
+            deactivate
+
+- job-template:
+    name: 'yardstick-{installer}-{stream}'
+
+    project-type: freestyle
+
+    disabled: false
+
+    node: '{node}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - string:
+            name: INSTALLER_TYPE
+            default: '{installer_type}'
+            description: "Installer name that is used for deployment."
+        - string:
+            name: INSTALLER_IP
+            default: '{installer_ip}'
+            description: "Installer IP."
+
+    scm:
+        - git-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: ''
+            branch: master
+
+    logrotate:
+        daysToKeep: 30
+        numToKeep: 10
+        artifactDaysToKeep: -1
+        artifactNumToKeep: -1
+
+    builders:
+        - 'yardstick-fetch-os-creds'
+        - 'yardstick-daily'
+
+    publishers:
+        - email:
+            recipients: ana.cunha@ericsson.com
+
+########################
+# builder macros
+########################
+- builder:
+    name: yardstick-daily
+    builders:
+        - shell: |
+            #!/bin/bash
+             set -o errexit
+             set -o pipefail
+
+            echo "Yardstick: prepare Yardstick environment"
+
+            # source openstack vars
+            if [[ ! -f $HOME/opnfv-openrc.sh ]]; then
+                echo "Unable to access file $HOME/opnfv-openrc.sh"
+                exit 1
+            fi
+            source $HOME/opnfv-openrc.sh
+
+            # Emergency fix for glance '--is-public' error.
+            # TODO: This should maybe go into openrc instead!?
+            export OS_IMAGE_API_VERSION=1
+
+            # Install required packages. 
+            # 'libguestfs-tools' is needed when building the yardstick image.
+            sudo yum -y install libguestfs-tools
+
+            # set virtualenv
+            echo "Yardstick: setup virtualenv"
+            cd $WORKSPACE
+            virtualenv $WORKSPACE/yardstick_venv
+            source $WORKSPACE/yardstick_venv/bin/activate
+            easy_install -U setuptools
+            python setup.py develop > /dev/null 2>&1
+
+            echo "Yardstick: configure the images"
+            # check if cirros-0.3.3 image is already available
+            # if not, create the image
+            IMAGE_NAMES[0]=cirros-0.3.3
+            if ! nova image-show ${IMAGE_NAMES[0]} > /dev/null 2>&1; then
+                echo "Image ${IMAGE_NAMES[0]} doesn't exist. Creating image ${IMAGE_NAMES[0]}"
+                glance image-create --name cirros-0.3.3 --is-public true --disk-format qcow2 --container-format bare --file $HOME/yardstick/cirros-0.3.3-x86_64-disk.img
+            fi
+
+            # check if yardstick-trusty image is already available
+            # if not, create the image to $WORKSPACE
+            IMAGE_NAMES[1]=yardstick-trusty-server
+            if ! nova image-show ${IMAGE_NAMES[1]} > /dev/null 2>&1; then
+                echo "Image ${IMAGE_NAMES[1]} doesn't exist. Creating image ${IMAGE_NAMES[1]}"
+                sudo $(which yardstick-img-modify) $WORKSPACE/tools/ubuntu-server-cloudimg-modify.sh
+                glance image-create --name yardstick-trusty-server --is-public true --disk-format qcow2 --container-format bare --file $WORKSPACE/yardstick-trusty-server.img
+            fi
+
+            # execute tasks
+            echo "Yardstick: execute scenarios"
+            ./ci/run_tasks.sh
+
+            # cleanup
+            echo "Yardstick: cleanup"
+            for IMAGE_NAME in ${IMAGE_NAMES[@]}
+            do
+                glance image-delete $IMAGE_NAME
+            done
+
+            # done
+            echo "Yardstick: done!"
+
+- builder:
+    name: yardstick-fetch-os-creds
+    builders:
+        - shell:
+            !include-raw ../../utils/fetch_os_creds.sh