blob: 57af540a49c74bbe0a26bad1e8b91128e839934c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
|
###################################
# 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
#--------------------------------
# brahmaputra
#--------------------------------
pod:
- opnfv-jump-2:
installer: fuel
<<: *brahmaputra
- intel-pod5:
installer: joid
<<: *brahmaputra
- huawei-us-deploy-bare-1:
installer: compass
<<: *brahmaputra
- ericsson-pod1:
installer: fuel
<<: *brahmaputra
#--------------------------------
# master
#--------------------------------
- intel-pod6:
installer: joid
<<: *master
- intel-pod8:
installer: compass
<<: *master
- opnfv-jump-1:
installer: apex
<<: *master
- ericsson-pod1:
installer: fuel
<<: *master
- ericsson-pod2:
installer: fuel
<<: *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 Scenario: $DEPLOY_SCENARIO'
parameters:
- project-parameter:
project: '{project}'
- '{pod}-defaults'
- '{installer}-defaults'
- 'functest-{testsuite}-parameter'
- string:
name: DEPLOY_SCENARIO
default: 'os-odl_l2-nofeature-ha'
- functest-parameter:
gs-pathname: '{gs-pathname}'
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'
- 'onos'
- 'ovno'
- 'promise'
- 'doctor'
- '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"
- string:
name: CI_DEBUG
default: 'false'
description: "Show debug output information"
########################
# trigger macros
########################
- trigger:
name: 'functest-master'
triggers:
- pollscm:
cron: "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
[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
# labconfig is used only for joid
labconfig=""
if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
instack_mac=$(sudo virsh domiflist instack | grep default | \
grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $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 $LAB_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
fi
echo "Functest: Start Docker and prepare environment"
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
-e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
-e CI_DEBUG=${CI_DEBUG}"
dir_result="${HOME}/opnfv/functest/reports"
mkdir -p ${dir_result}
sudo rm -rf ${dir_result}/*
res_volume="-v ${dir_result}:/home/opnfv/functest/results"
docker pull opnfv/functest:latest_stable >$redirect
cmd="sudo docker run --privileged=true -id ${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
[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
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 -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm -f >$redirect
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 >$redirect
done
fi
|