Merge "Update script to push rally html pages in artifacts"
[releng.git] / jjb / functest / functest.yml
index e300dd1..d1e8f26 100644 (file)
@@ -9,18 +9,39 @@
             node: 'opnfv-jump-2'
             installer_type: 'fuel'
             installer_ip: '10.20.0.2'
-            functest_repo_dir:  '/home/opnfv/repos/functest'
         - foreman:
             node: 'opnfv-jump-2'
             installer_type: 'foreman'
             installer_ip: '172.30.10.73'
-            functest_repo_dir:  '/home/opnfv/repos/functest'
+        - apex:
+            node: 'opnfv-jump-1'
+            installer_type: 'apex'
+            installer_ip: '192.168.X.X'
+        - compass:
+            node: 'huawei-us-deploy-bare-1'
+            installer_type: 'compass'
+            installer_ip: '192.168.200.2'
+        - joid:
+            node: 'intel-pod5'
+            installer_type: 'compass'
+            installer_ip: '127.0.0.1'
     pod:
-        - orange-build:
-            node: 'orange-build'
-            installer_type: 'foreman'
+        - orange-test1:
+            node: 'orange-test1'
+            installer_type: 'fuel'
             installer_ip: '172.30.10.73'
-            functest_repo_dir:  '/home/opnfv/repos/functest'
+        - orange-fr-pod2:
+            node: 'orange-fr-pod2'
+            installer_type: 'joid'
+            installer_ip: '127.0.0.1'
+        - huawei-build:
+            node: 'huawei-us-deploy-bare-1'
+            installer_type: 'compass'
+            installer_ip: '192.168.200.2'
+        - intel-pod5:
+            node: 'intel-pod5'
+            installer_type: 'joid'
+            installer_ip: '127.0.0.1'
 
     jobs:
         - 'set-functest-env-{pod}'
 - job-template:
     name: set-functest-env-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - 'set-functest-env'
 
-
-
 - job-template:
     name: clean-functest-env-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - 'functest-cleanup'
 
-
 - job-template:
     name: set-functest-env-{installer}-{stream}
 
-    project-type: freestyle
-
     node: '{node}'
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     builders:
         - 'set-functest-env'
 
-
 - job-template:
     name: clean-functest-env-{installer}-{stream}
 
-    project-type: freestyle
-
     node: '{node}'
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     builders:
         - 'functest-cleanup'
 
 - job-template:
     name: functest-openstack-bench-test-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - 'functest-rally-bench'
 
-
 - job-template:
     name: functest-openstack-tempest-smoke-test-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - 'functest-tempest-smoke'
 - job-template:
     name: functest-odl-test-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - shell: |
         - 'functest-odl'
 
-
 - job-template:
     name: functest-vping-test-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
+    node: '{node}'
 
     builders:
         - 'functest-vping'
 
-
 - job-template:
     name: functest-{pod}
 
-    project-type: freestyle
-
-    node: '{pod}'
+    node: '{node}'
 
     parameters:
         - project-parameter:
             project: '{project}'
+        - functest-parameter
         - string:
             name: INSTALLER_TYPE
             default: '{installer_type}'
             name: INSTALLER_IP
             default: '{installer_ip}'
             description: "Installer IP."
-        - string:
-            name: FUNCTEST_REPO_DIR
-            default: '{functest_repo_dir}'
-            description: "Directory where the root functest repo is cloned in the docker."
         - '{pod}'
 
     scm:
             refspec: ''
             branch: master
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     builders:
+        - 'functest-cleanup'
         - 'set-functest-env'
         - 'functest-all'
         - 'functest-store-results'
-        - 'functest-cleanup'
 
 - job-template:
     name: functest-{installer}-{stream}
 
-    project-type: freestyle
-
     node: '{node}'
 
     parameters:
         - project-parameter:
             project: '{project}'
+        - functest-parameter
         - string:
             name: INSTALLER_TYPE
             default: '{installer_type}'
             name: INSTALLER_IP
             default: '{installer_ip}'
             description: "Installer IP."
-        - string:
-            name: FUNCTEST_REPO_DIR
-            default: '{functest_repo_dir}'
-            description: "Directory where the root functest repo is cloned in the docker."
         - string:
             name: GIT_BASE
             default: ssh://gerrit.opnfv.org:29418/$PROJECT
             refspec: ''
             branch: master
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     builders:
+        - 'functest-cleanup'
         - 'set-functest-env'
         - 'functest-all'
         - 'functest-store-results'
-        - 'functest-cleanup'
 
 - job-template:
     name: functest-vims-{installer}-{stream}
 
-    project-type: freestyle
-
     node: '{node}'
 
     parameters:
         - project-parameter:
             project: '{project}'
+        - functest-parameter
         - string:
             name: INSTALLER_TYPE
             default: '{installer_type}'
             name: INSTALLER_IP
             default: '{installer_ip}'
             description: "Installer IP."
-        - string:
-            name: FUNCTEST_REPO_DIR
-            default: '{functest_repo_dir}'
-            description: "Directory where the root functest repo is cloned in the docker."
         - string:
             name: GIT_BASE
             default: ssh://gerrit.opnfv.org:29418/$PROJECT
             refspec: ''
             branch: master
 
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     builders:
         - 'functest-vims'
 
 - job-template:
     name: 'functest-daily-{stream}'
 
-    node: master
-
     # Job template for daily builders
     #
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
     #     branch:    branch (eg. stable)
 
-    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}'
             refspec: ''
             branch: '{stream}'
 
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
     triggers:
         - 'functest-{stream}'
 
 - job-template:
     name: 'functest-verify-{stream}'
 
-    node: master
-
-    project-type: freestyle
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     parameters:
         - project-parameter:
             project: '{project}'
             refspec: '$GERRIT_REFSPEC'
             choosing-strategy: 'gerrit'
 
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
     triggers:
         - gerrit:
             trigger-on:
 
     builders:
         - shell:
-            !include-raw ../opnfvdocs/docu-build.sh
+            echo "Hello World"
 
 - job-template:
     name: 'functest-merge-{stream}'
 
-    node: master
-
     # builder-merge job to run JJB update
     #
     # This job's purpose is to update all the JJB
 
-    project-type: freestyle
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 40
-        artifactDaysToKeep: -1
-        artifactNumToKeep: 5
-
     parameters:
         - project-parameter:
             project: '{project}'
             refspec: ''
             choosing-strategy: 'default'
 
-    wrappers:
-        - ssh-agent-credentials:
-            user: '{ssh-credentials}'
-
     triggers:
         - gerrit:
             trigger-on:
             name: GS_PATHNAME
             default: '{gs-pathname}'
             description: "Version directory where the opnfv documents will be stored in gs repository"
+        - string:
+            name: FUNCTEST_REPO_DIR
+            default: "/home/opnfv/repos/functest"
+            description: "Directory where the Functest repository is cloned"
+
+- parameter:
+    name: orange-test1
+    parameters:
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: "Override GIT_BASE"
 
 - parameter:
-    name: orange-build
+    name: orange-fr-pod2
     parameters:
         - string:
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: "Override GIT_BASE"
+        - string:
+            name: LAB_CONFIG
+            default: "/home/opnfv/repos/functest"
+            description: "Openstack credentials on the dev lab"
 
 - parameter:
     name: opnfv-jump-1
             default: ssh://gerrit.opnfv.org:29418/$PROJECT
             description: "Override GIT_BASE"
 
+- parameter:
+    name: huawei-build
+    parameters:
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: "Override GIT_BASE"
+
+- parameter:
+    name: intel-pod5
+    parameters:
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: "Override GIT_BASE"
+        - string:
+            name: LAB_CONFIG
+            default: "/home/ubuntu/joid_config/admin-openrc"
+            description: "Openstack credentials on the dev lab"
+
 - parameter:
     name: opnfv-jump-2
     parameters:
             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
             docker exec $container_id $cmd
 
-
 - builder:
     name: set-functest-env
     builders:
         - shell: |
             #!/bin/bash
             set +e
-
+            if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
+                INSTALLER_IP=$(grep instack /var/lib/libvirt/dnsmasq/default.leases \
+                    |awk '{print $3}' | head -n 1)
+                sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
+            fi
             echo "Functest: Start Docker and prepare environment"
-            envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP}"
-            docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm -f &>/dev/null
-            docker pull opnfv/functest
-            echo "Functest: Running docker run command: docker run -i -e $envs opnfv/functest /bin/bash &"
-            docker run -i -e $envs opnfv/functest /bin/bash &
+            envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} -e NODE_NAME=${NODE_NAME}"
+            labconfig=""
+            # If production lab then creds may be retrieved dynamically
+            # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
+            if [ -n "${LAB_CONFIG}" ]; then
+                labconfig="-v ${LAB_CONFIG}:/home/opnfv/functest/conf/openstack.creds"
+            fi
+
+            docker pull opnfv/functest:latest_stable
+            cmd="docker run -id -e $envs ${labconfig} ${sshkey} opnfv/functest:latest_stable /bin/bash"
+            echo "Functest: Running docker run command: ${cmd}"
+            ${cmd}
             docker ps -a
             sleep 5
-            container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
+            container_id=$(docker ps | grep 'opnfv/functest:latest_stable' | awk '{print $1}' | head -1)
             echo "Container ID=${container_id}"
             if [ -z ${container_id} ]; then
                 echo "Cannot find opnfv/functest container ID ${container_id}. Please check if it is existing."
             docker start ${container_id}
             sleep 5
             docker ps
-            if [ $(docker ps | grep opnfv/functest | wc -l) == 0 ]; then
+            if [ $(docker ps | grep 'opnfv/functest:latest_stable' | wc -l) == 0 ]; then
                 echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
                 exit 1
             fi
             echo "Executing command inside the docker: ${cmd}"
             docker exec ${container_id} ${cmd}
 
-
 - builder:
     name: functest-vping
     builders:
             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
             docker exec $container_id $cmd
 
-
-
 - builder:
     name: functest-rally-bench
     builders:
             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
             docker exec $container_id $cmd
 
-
 - builder:
     name: functest-vims
     builders:
         - shell: |
             #!/bin/bash
             set +e
-            cmd="python ${FUNCTEST_REPO_DIR}/testcases/vIMS/CI/vIMS.py \
-                --debug ${FUNCTEST_REPO_DIR}/"
+
+            echo "Functest: run Functest vIMS test"
+            cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test vims"
             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
             docker exec $container_id $cmd
 
-
-
 - builder:
     name: functest-store-results
     builders:
     builders:
         - shell: |
             #!/bin/bash
-            set +e
 
-            # cleanup: remove any docker containers leftovers
-            echo "Removing the docker container..."
-            docker rm -f $(docker ps | grep opnfv/functest | awk '{print $1}')
-            echo "Removing the docker image..."
-            docker rmi -f $(docker images | grep opnfv/functest | awk '{print $3}')
+            echo "Cleaning up docker containers/images..."
 
+            # Remove previous running containers if exist
+            if [[ ! -z $(docker ps -a | grep opnfv/functest) ]]; then
+                echo "Removing existing opnfv/functest containers..."
+                docker ps | grep opnfv/functest | awk '{print $1}' | xargs docker stop
+                docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm
+            fi
+
+            # Remove existing images if exist
+            if [[ ! -z $(docker images | grep opnfv/functest) ]]; then
+                echo "Docker images to remove:"
+                docker images | head -1 && docker images | grep opnfv/functest
+                image_tags=($(docker images | grep opnfv/functest | awk '{print $2}'))
+                for tag in "${image_tags[@]}"; do
+                    echo "Removing docker image opnfv/functest:$tag..."
+                    docker rmi opnfv/functest:$tag
+                done
+            fi