summaryrefslogtreecommitdiffstats
path: root/jjb/functest/functest-ci-jobs.yml
diff options
context:
space:
mode:
Diffstat (limited to 'jjb/functest/functest-ci-jobs.yml')
-rw-r--r--jjb/functest/functest-ci-jobs.yml292
1 files changed, 292 insertions, 0 deletions
diff --git a/jjb/functest/functest-ci-jobs.yml b/jjb/functest/functest-ci-jobs.yml
new file mode 100644
index 000000000..9ae1974a6
--- /dev/null
+++ b/jjb/functest/functest-ci-jobs.yml
@@ -0,0 +1,292 @@
+###################################
+# job configuration for functest
+###################################
+- project:
+ name: functest
+
+ project: '{name}'
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+ master: &master
+ stream: master
+ branch: '{stream}'
+ gs-pathname: ''
+ brahmaputra: &brahmaputra
+ stream: brahmaputra
+ branch: 'stable/{stream}'
+ gs-pathname: '{stream}'
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+# Current Mapping
+#--------------------------------
+# everything runs against master branch
+#--------------------------------
+ pod:
+ - huawei-us-deploy-bare-1:
+ installer: compass
+ <<: *master
+ - intel-pod5:
+ installer: joid
+ <<: *master
+ - intel-us-deploy-virtual-2:
+ installer: apex
+ <<: *master
+ - opnfv-jump-2:
+ installer: fuel
+ <<: *master
+ - orange-test1:
+ installer: fuel
+ <<: *master
+ - orange-pod2:
+ installer: joid
+ <<: *master
+#--------------------------------
+# Milestone E Mapping
+# !!!DO NOT ENABLE!!!
+#--------------------------------
+# brahmaputra
+#--------------------------------
+# - huawei-us-deploy-bare-1:
+# installer: compass
+# <<: *brahmaputra
+# - intel-pod5:
+# installer: joid
+# <<: *brahmaputra
+# - opnfv-jump-1:
+# installer: apex
+# <<: *brahmaputra
+# - opnfv-jump-2:
+# installer: fuel
+# <<: *brahmaputra
+#--------------------------------
+# master
+#--------------------------------
+# - ericsson-pod2:
+# installer: fuel
+# <<: *master
+# - intelpod2-jumphost:
+# installer: apex
+# <<: *master
+# - intel-pod6:
+# installer: joid
+# <<: *master
+# - intel-pod8:
+# installer: compass
+# <<: *master
+# - orange-test1:
+# installer: fuel
+# <<: *master
+# - orange-pod2:
+# installer: joid
+# <<: *master
+#--------------------------------
+
+ testsuite:
+ - 'daily'
+ - 'suite'
+
+ jobs:
+ - 'functest-{installer}-{pod}-{testsuite}-{stream}'
+
+################################
+# job template
+################################
+- job-template:
+ name: 'functest-{installer}-{pod}-{testsuite}-{stream}'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME SDN: $SDN_CONTROLLER Feature: $OPNFV_FEATURE'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - '{pod}-defaults'
+ - '{installer}-defaults'
+ - 'functest-{testsuite}-parameter'
+ - functest-parameter
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: '{branch}'
+
+ builders:
+ - 'functest-{testsuite}-builder'
+
+########################
+# parameter macros
+########################
+- parameter:
+ name: functest-daily-parameter
+ parameters:
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'daily'
+ description: "Suite name to run"
+- parameter:
+ name: functest-suite-parameter
+ parameters:
+ - choice:
+ name: FUNCTEST_SUITE_NAME
+ choices:
+ - 'tempest'
+ - 'rally'
+ - 'odl'
+ - 'vims'
+ - 'vping'
+- parameter:
+ name: functest-parameter
+ parameters:
+ - string:
+ 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"
+ - string:
+ name: PUSH_RESULTS_TO_DB
+ default: "true"
+ description: "Push the results of all the tests to the resultDB"
+########################
+# trigger macros
+########################
+- trigger:
+ name: 'functest-master'
+ triggers:
+ - pollscm: "H 9 * * *"
+########################
+# builder macros
+########################
+- builder:
+ name: functest-daily-builder
+ builders:
+ - 'functest-cleanup'
+ - 'set-functest-env'
+ - 'functest-all'
+ - 'functest-store-results'
+
+- builder:
+ name: functest-suite-builder
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+ flag=""
+ if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
+ flag="-r"
+ fi
+ echo "Functest: run $FUNCTEST_SUITE_NAME"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME ${flag}"
+ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
+ docker exec $container_id $cmd
+
+- builder:
+ name: functest-all
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+ flag=""
+ if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
+ flag="-r"
+ fi
+ echo "Functest: running all the tests"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh ${flag}"
+ 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
+ # labconfig is used only for joid
+ labconfig=""
+ 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"
+ sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
+ sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
+ elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
+ # If production lab then creds may be retrieved dynamically
+ # creds are on the jumphost, always in the same folder
+ labconfig="-v /var/lib/jenkins/joid_config/admin-openrc:/home/opnfv/functest/conf/openstack.creds"
+ # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
+ # replace the default one by the customized one provided by jenkins config
+ if [ -n "${LAB_CONFIG}" ]; then
+ labconfig="-v ${LAB_CONFIG}:/home/opnfv/functest/conf/openstack.creds"
+ fi
+ fi
+ echo "Functest: Start Docker and prepare environment"
+ envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} -e NODE_NAME=${NODE_NAME}"
+
+ dir_result="${HOME}/opnfv/functest/reports"
+ mkdir -f ${dir_result}
+ rm -rf ${dir_result}/*
+ $res_volume="-v ${dir_result}:/home/opnfv/functest/results"
+
+ docker pull opnfv/functest:latest_stable
+ cmd="docker run -id -e $envs ${labconfig} ${sshkey} ${res_volume} opnfv/functest:latest_stable /bin/bash"
+ echo "Functest: Running docker run command: ${cmd}"
+ ${cmd}
+ docker ps -a
+ sleep 5
+ 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 ps -a
+ exit 1
+ fi
+ echo "Starting the container: docker start ${container_id}"
+ docker start ${container_id}
+ sleep 5
+ docker ps
+ 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
+ cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
+ echo "Executing command inside the docker: ${cmd}"
+ docker exec ${container_id} ${cmd}
+
+- builder:
+ name: functest-store-results
+ builders:
+ - shell:
+ !include-raw res-build.sh
+
+- builder:
+ name: functest-cleanup
+ builders:
+ - shell: |
+ #!/bin/bash
+
+ 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