+###################################
+# job configuration for functest
+###################################
- project:
name: functest
+ installer:
+ - fuel:
+ 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'
+ pod:
+ - orange-build:
+ node: 'orange-build'
+ installer_type: 'foreman'
+ installer_ip: '172.30.10.73'
+ functest_repo_dir: '/home/opnfv/repos/functest'
+
jobs:
- - 'functest-vim_bench-test'
- - 'functest-vim_tempest-test'
- - 'functest-odl-test'
- - 'functest-vims-test'
- - 'functest-vping-test'
+ - 'set-functest-env-{pod}'
+ - 'functest-{pod}'
+ - 'clean-functest-env-{pod}'
+ - 'set-functest-env-{installer}-{stream}'
+ - 'functest-{installer}-{stream}'
+ - 'clean-functest-env-{installer}-{stream}'
+ - 'functest-openstack-bench-test-{pod}'
+ - 'functest-openstack-tempest-smoke-test-{pod}'
+ - 'functest-odl-test-{pod}'
+ - 'functest-vims-{installer}-{stream}'
+ - 'functest-vping-test-{pod}'
- 'functest-daily-{stream}'
- - 'functest-merge'
- - 'functest-verify'
+ - 'functest-merge-{stream}'
+ - 'functest-verify-{stream}'
- # stream: branch with - in place of / (eg. stable-helium)
- # branch: branch (eg. stable/helium)
+ # stream: branch with - in place of / (eg. stable-arno)
+ # branch: branch (eg. stable/arno)
stream:
- master:
branch: 'master'
+ gs-pathname: ''
+ - stable-arno:
+ branch: 'stable/arno'
+ gs-pathname: '/arno'
project: 'functest'
somevar: 'foo'
+################################
+# job template
+################################
+- job-template:
+ name: set-functest-env-{pod}
+
+ project-type: freestyle
+
+ node: '{pod}'
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - 'set-functest-env'
+
+
- job-template:
- name: functest-vim_bench-test
+ name: clean-functest-env-{pod}
project-type: freestyle
- node: orange-build
+ node: '{pod}'
logrotate:
daysToKeep: 30
artifactNumToKeep: -1
builders:
- - shell: |
- python run_rally.py keystone
+ - 'functest-cleanup'
+
- job-template:
- name: functest-vim_tempest-test
+ name: set-functest-env-{installer}-{stream}
project-type: freestyle
- node: orange-build
+ node: '{node}'
logrotate:
daysToKeep: 30
artifactNumToKeep: -1
builders:
- - shell: |
- rally verify start
+ - 'set-functest-env'
+
- job-template:
- name: functest-odl-test
+ name: clean-functest-env-{installer}-{stream}
project-type: freestyle
- node: ericsson-build
+ node: '{node}'
logrotate:
daysToKeep: 30
artifactNumToKeep: -1
builders:
- - shell: |
- echo "put your CI scenario here"
+ - 'functest-cleanup'
- job-template:
- name: functest-vims-test
+ name: functest-openstack-bench-test-{pod}
project-type: freestyle
- node: ericsson-build
+ node: '{pod}'
logrotate:
daysToKeep: 30
artifactNumToKeep: -1
builders:
- - shell: |
- echo "put your CI scenario here"
+ - 'functest-rally-bench'
- job-template:
- name: functest-vping-test
+ name: functest-openstack-tempest-smoke-test-{pod}
project-type: freestyle
+ node: '{pod}'
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - 'functest-tempest-smoke'
+
+- job-template:
+ name: functest-odl-test-{pod}
+
+ project-type: freestyle
+
+ node: '{pod}'
+
logrotate:
daysToKeep: 30
numToKeep: 10
builders:
- shell: |
- echo "put your CI scenario here"
+ - 'functest-odl'
+
+
+- job-template:
+ name: functest-vping-test-{pod}
+
+ project-type: freestyle
+
+ node: '{pod}'
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - 'functest-vping'
+
+
+- job-template:
+ name: functest-{pod}
+
+ project-type: freestyle
+
+ node: '{pod}'
+
+ 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."
+ - string:
+ name: FUNCTEST_REPO_DIR
+ default: '{functest_repo_dir}'
+ description: "Directory where the root functest repo is cloned in the docker."
+ - '{pod}'
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: master
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ builders:
+ - 'functest-cleanup'
+ - 'set-functest-env'
+ - 'functest-all'
+ - 'functest-store-results'
+
+- job-template:
+ name: functest-{installer}-{stream}
+
+ project-type: freestyle
+
+ 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."
+ - 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
+ description: "Override GIT_BASE"
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: master
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+ builders:
+ - 'functest-cleanup'
+ - 'set-functest-env'
+ - 'functest-all'
+ - 'functest-store-results'
+
+- job-template:
+ name: functest-vims-{installer}-{stream}
+
+ project-type: freestyle
+
+ 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."
+ - 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
+ description: "Override GIT_BASE"
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ 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:
parameters:
- project-parameter:
project: '{project}'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
scm:
- git-scm:
credentials-id: '{ssh-credentials}'
refspec: ''
- branch: '{branch}'
+ branch: '{stream}'
wrappers:
- ssh-agent-credentials:
user: '{ssh-credentials}'
triggers:
- - timed: 'H H * * *'
+ - 'functest-{stream}'
prebuilders:
- test-macro
builders:
- shell:
- !include-raw build-upload-docu.sh
+ !include-raw ../opnfvdocs/docu-build.sh
postbuilders:
- test-macro
- job-template:
- name: 'functest-verify'
+ name: 'functest-verify-{stream}'
+
+ node: master
project-type: freestyle
- project-parameter:
project: '{project}'
- gerrit-parameter:
- branch: 'master'
+ branch: '{branch}'
scm:
- gerrit-trigger-scm:
credentials-id: '{ssh-credentials}'
project-pattern: 'functest'
branches:
- branch-compare-type: 'ANT'
- branch-pattern: '**/master'
+ branch-pattern: '**/{branch}'
builders:
- shell:
- !include-raw build-docu-verify.sh
+ !include-raw ../opnfvdocs/docu-build.sh
- job-template:
- name: 'functest-merge'
+ name: 'functest-merge-{stream}'
+
+ node: master
# builder-merge job to run JJB update
#
- project-parameter:
project: '{project}'
- gerrit-parameter:
- branch: 'master'
+ branch: '{branch}'
scm:
- gerrit-trigger-scm:
project-pattern: 'functest'
branches:
- branch-compare-type: 'ANT'
- branch-pattern: '**/master'
+ branch-pattern: '**/{branch}'
builders:
- - shell:
- !include-raw build-upload-docu.sh
+ - shell:
+ !include-raw ../opnfvdocs/docu-build.sh
+########################
+# parameter macros
+########################
+- 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"
+
+- parameter:
+ name: orange-build
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: "Override GIT_BASE"
+
+- parameter:
+ name: opnfv-jump-1
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: ssh://gerrit.opnfv.org:29418/$PROJECT
+ description: "Override GIT_BASE"
+
+- parameter:
+ name: opnfv-jump-2
+ parameters:
+ - string:
+ name: GIT_BASE
+ default: ssh://gerrit.opnfv.org:29418/$PROJECT
+ description: "Override GIT_BASE"
+########################
+# trigger macros
+########################
+- trigger:
+ name: 'functest-master'
+ triggers:
+ - pollscm: "H 9 * * *"
+
+- trigger:
+ name: 'functest-stable-arno'
+ triggers:
+ - pollscm: "H 21 * * *"
+
+########################
+# builder macros
+########################
+# macros
+- builder:
+ name: functest-all
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+
+ echo "Functest: running all the tests"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh"
+ 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
+
+ echo "Functest: Start Docker and prepare environment"
+ envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP}"
+ docker pull opnfv/functest:latest_stable
+ echo "Functest: Running docker run command: docker run -i -e $envs opnfv/functest /bin/bash &"
+ docker run -i -e $envs opnfv/functest /bin/bash &
+ docker ps -a
+ sleep 5
+ container_id=$(docker ps -a | grep opnfv/functest | 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 | 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-vping
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+
+ echo "Functest: run vPing"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test vping"
+ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
+ docker exec $container_id $cmd
+
+- builder:
+ name: functest-odl
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+
+ echo "Functest: run ODL suite"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test odl"
+ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
+ docker exec $container_id $cmd
+
+- builder:
+ name: functest-tempest-smoke
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+
+ # tempest
+ echo "Functest: run Tempest suite"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test tempest"
+ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
+ docker exec $container_id $cmd
+
+
+
+- builder:
+ name: functest-rally-bench
+ builders:
+ - shell: |
+ #!/bin/bash
+ set +e
+
+ echo "Functest: run Functest Rally Bench suites"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test rally"
+ 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
+
+ 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:
+ - 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