Use pod-params and installer-params for yardstick
[releng.git] / jjb / yardstick / yardstick.yml
index 0365ff2..4c49977 100644 (file)
@@ -1,54 +1,41 @@
 - 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'
+    project: '{name}'
+
+    pod:
+        - opnfv-jump-2:
+            installer: fuel
+        - ericsson-pod1:
+            installer: fuel
+        - huawei-us-deploy-bare-1:
+            installer: compass4nfv
+
+    loop:
+        - daily
 
     jobs:
-        - 'yardstick-{installer}-{stream}'
-        - 'yardstick-merge'
-        - 'yardstick-verify'
+        - 'yardstick-{installer}-{pod}-{loop}-{stream}'
+        - 'yardstick-merge-{stream}'
+        - 'yardstick-verify-{stream}'
 
-    # stream:    branch with - in place of / (eg. stable-helium)
-    # branch:    branch (eg. stable/helium)
     stream:
         - master:
             branch: 'master'
-        - stable-arno:
-            branch: 'stable/arno'
-            gs-pathname: '/arno'
-
-    project: 'yardstick'
+            gs-pathname: ''
+#        - brahmaputra:
+#            branch: 'stable/brahmaputra'
+#            gs-pathname: '/brahmaputra'
 
 - job-template:
-    name: 'yardstick-verify'
-
-    project-type: freestyle
-
-    node: ericsson-build
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    name: 'yardstick-verify-{stream}'
 
     parameters:
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
-            branch: 'master'
-        - 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."
+            branch: '{branch}'
+        - 'ericsson-ca-build-1-defaults'
 
     scm:
         - gerrit-trigger-scm:
             refspec: '$GERRIT_REFSPEC'
             choosing-strategy: 'gerrit'
 
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
     triggers:
         - gerrit:
             trigger-on:
                     comment-contains-value: 'reverify'
             projects:
               - project-compare-type: 'ANT'
-                project-pattern: 'yardstick'
+                project-pattern: '{project}'
                 branches:
                   - branch-compare-type: 'ANT'
-                    branch-pattern: '**/master'
+                    branch-pattern: '**/{branch}'
 
     builders:
         - shell: |
             deactivate
 
 - job-template:
-    name: 'yardstick-merge'
-
-    # builder-merge job to run JJB update
-    #
-    # This job's purpose is to update all the JJB
-
-    project-type: freestyle
-
-    node: ericsson-build
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 40
-        artifactDaysToKeep: -1
-        artifactNumToKeep: 5
+    name: 'yardstick-merge-{stream}'
 
     parameters:
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
-            branch: 'master'
-        - 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."
+            branch: '{branch}'
+        - 'ericsson-ca-build-1-defaults'
 
     scm:
         - gerrit-trigger-scm:
             refspec: ''
             choosing-strategy: 'default'
 
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
     triggers:
         - gerrit:
             trigger-on:
                     comment-contains-value: 'remerge'
             projects:
               - project-compare-type: 'ANT'
-                project-pattern: 'yardstick'
+                project-pattern: '{project}'
                 branches:
                     - branch-compare-type: 'ANT'
-                      branch-pattern: '**/master'
+                      branch-pattern: '**/{branch}'
 
     builders:
         - shell: |
             deactivate
 
 - job-template:
-    name: 'yardstick-{installer}-{stream}'
-
-    project-type: freestyle
+    name: 'yardstick-{installer}-{pod}-{loop}-{stream}'
 
     disabled: false
 
-    node: '{node}'
-
     parameters:
         - project-parameter:
             project: '{project}'
+        - '{pod}-defaults'
+        - '{installer}-defaults'
+        - 'yardstick-params-{pod}'
         - 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."
+            name: YARDSTICK_SUITE_NAME
+            default: opnfv_${{NODE_NAME}}_{loop}.yaml
+            description: 'Path to test suite'
 
     scm:
         - git-scm:
             refspec: ''
             branch: master
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    triggers:
+        - 'yardstick-trigger-{pod}'
 
     builders:
+        - 'yardstick-cleanup'
         - 'yardstick-fetch-os-creds'
-        - 'yardstick-ping'
+        - 'yardstick-daily'
 
     publishers:
         - email:
-            recipients: ana.cunha@ericsson.com
+            recipients: ana.cunha@ericsson.com jorgen.w.karlsson@ericsson.com
 
 ########################
 # builder macros
 ########################
 - builder:
-    name: yardstick-ping
+    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
-
-            # check if cirros-0.3.3 image is already available
-            # if not, create the image
-            echo "Yardstick: configure the image"
-            IMAGE_NAME=cirros-0.3.3
-            if ! nova image-show $IMAGE_NAME > /dev/null 2>&1; then
-                echo "Image $IMAGE_NAME doesn't exist. Creating image $IMAGE_NAME"
-                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
+            set -o errexit
 
-            # set virtualenv
-            echo "Yardstick: setup virtualenv"
-            cd $WORKSPACE
-            virtualenv $WORKSPACE/yardstick_venv
-            source $WORKSPACE/yardstick_venv/bin/activate
-            python setup.py develop > /dev/null 2>&1
+            echo "Yardstick: Run benchmark test suites ..."
 
-            # set virtualenv
-            echo "Yardstick: execute ping scenario"
-            yardstick task start samples/ping.yaml -v -d
+            # Pull the latest image
+            docker pull opnfv/yardstick
 
-            # cleanup
-            echo "Yardstick: cleanup"
-            glance image-delete $IMAGE_NAME
+            docker run \
+               --privileged=true \
+                --rm \
+                -t \
+                -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
+                -e "INSTALLER_IP=${INSTALLER_IP}" \
+                -e "POD_NAME=${NODE_NAME}" \
+                -e "EXTERNAL_NETWORK=net04_ext" \
+                opnfv/yardstick \
+                run_tests.sh \
+                $YARDSTICK_SUITE_NAME
 
-            # done
             echo "Yardstick: done!"
 
 - builder:
     builders:
         - shell:
             !include-raw ../../utils/fetch_os_creds.sh
+
+- builder:
+    name: yardstick-cleanup
+    builders:
+        - shell: |
+            #!/bin/bash
+
+            echo "Cleaning up docker containers/images..."
+
+            # Remove previous running containers if exist
+            if [[ ! -z $(docker ps -a | grep opnfv/yardstick) ]]; then
+                echo "Removing existing opnfv/yardstick containers..."
+                docker ps | grep opnfv/yardstick | awk '{print $1}' | xargs docker stop
+                docker ps -a | grep opnfv/yardstick | awk '{print $1}' | xargs docker rm
+            fi
+
+            # Remove existing images if exist
+            if [[ ! -z $(docker images | grep opnfv/yardstick) ]]; then
+                echo "Docker images to remove:"
+                docker images | head -1 && docker images | grep opnfv/yardstick
+                image_tags=($(docker images | grep opnfv/yardstick | awk '{print $2}'))
+                for tag in "${image_tags[@]}"; do
+                    echo "Removing docker image opnfv/yardstick:$tag..."
+                    docker rmi opnfv/yardstick:$tag
+                done
+            fi
+########################
+# parameter macros
+########################
+- parameter:
+    name: 'yardstick-params-ericsson-pod1'
+    parameters:
+        - string:
+            name: YARDSTICK_DB_BACKEND
+            default: 'none'
+            description: 'Arguments to use in order to choose the backend DB'
+
+- parameter:
+    name: 'yardstick-params-opnfv-jump-2'
+    parameters:
+        - string:
+            name: YARDSTICK_DB_BACKEND
+            default: 'db_args'
+            description: 'Arguments to use in order to choose the backend DB'
+
+- parameter:
+    name: 'yardstick-params-huawei-us-deploy-bare-1'
+    parameters:
+        - string:
+            name: YARDSTICK_DB_BACKEND
+            default: 'none'
+            description: 'Arguments to use in order to choose the backend DB'
+########################
+# trigger macros
+########################
+- trigger:
+    name: 'yardstick-trigger-ericsson-pod1'
+    triggers:
+        - timed: '@midnight'
+
+- trigger:
+    name: 'yardstick-trigger-opnfv-jump-2'
+    triggers:
+        - timed: '#@midnight'
+
+- trigger:
+    name: 'yardstick-trigger-huawei-us-deploy-bare-1'
+    triggers:
+        - timed: '#@midnight'