baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
scenario_stream: 'master'
+ disable_daily: true
- euphrates: &euphrates
branch: 'stable/euphrates'
gs-pathname: '/euphrates'
baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
scenario_stream: 'euphrates'
+ disable_daily: false
- danube: &danube
branch: 'stable/danube'
gs-pathname: '/danube'
verify-scenario: 'os-odl_l3-nofeature-ha'
scenario_stream: 'danube'
disabled: true
+ disable_daily: true
scenario:
- 'os-nosdn-nofeature-noha':
node: '{baremetal-slave}'
- disabled: false
+ disabled: '{obj:disable_daily}'
scm:
- git-scm
baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
scenario_stream: 'master'
+ disable_daily: true
- euphrates: &euphrates
branch: 'stable/euphrates'
gs-pathname: '/euphrates'
baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
scenario_stream: 'euphrates'
+ disable_daily: false
- danube: &danube
branch: 'stable/danube'
gs-pathname: '/danube'
verify-scenario: 'os-odl_l3-nofeature-ha'
scenario_stream: 'danube'
disabled: true
+ disable_daily: true
scenario:
{%- for stream in scenarios %}
node: '{baremetal-slave}'
- disabled: false
+ disabled: '{obj:disable_daily}'
scm:
- git-scm
compute:
min_compute_nodes: 2
volume_device_name: ${volume_device}
- min_microversion: 2.2
- max_microversion: latest
-
-compute-feature-enabled:
- live_migration: True
- block_migration_for_live_migration: True
- block_migrate_cinder_iscsi: True
- attach_encrypted_volume: True
EOF
set +o pipefail
run_tiers() {
- cmd_opt='prepare_env start && run_tests -r -t all'
+ tiers=$1
+ cmd_opt="prepare_env start && run_tests -r -t all"
+ [[ $BUILD_TAG =~ "suite" ]] && cmd_opt="prepare_env start && run_tests -t all"
ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
echo 0 > ${ret_val_file}
eval ${cmd}
ret_value=$?
if [ ${ret_value} != 0 ]; then
- echo ${ret_value} > ${ret_val_file}
+ echo ${ret_value} > ${ret_val_file}
+ if [ ${tier} == 'healthcheck' ]; then
+ echo "Healthcheck tier failed. Exiting Functest..."
+ exit 1
+ fi
fi
done
}
run_test() {
test_name=$1
- cmd_opt='prepare_env start && run_tests -r -t $test_name'
+ cmd_opt="prepare_env start && run_tests -r -t ${test_name}"
+ [[ $BUILD_TAG =~ "suite" ]] && cmd_opt="prepare_env start && run_tests -t ${test_name}"
ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
echo 0 > ${ret_val_file}
# Determine which Functest image should be used for the test case
FUNCTEST_IMAGE=opnfv/functest-vnf ;;
promise|doctor-notification|bgpvpn|functest-odl-sfc|domino-multinode|barometercollectd)
FUNCTEST_IMAGE=opnfv/functest-features ;;
- parser)
+ parser-basics)
FUNCTEST_IMAGE=opnfv/functest-parser ;;
*)
echo "Unkown test case $test_name"
# -------------------------------
# BRANCH ANCHORS
# -------------------------------
- master: &master
- stream: master
- branch: '{stream}'
- disabled: false
- gs-pathname: ''
+ euphrates: &euphrates
+ stream: euphrates
+ branch: 'stable/{stream}'
+ disabled: false
+ gs-pathname: '/{stream}'
# -------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
# -------------------------------
pod:
- baremetal:
slave-label: joid-baremetal
- <<: *master
- - virtual:
- slave-label: joid-virtual
- <<: *master
- # -------------------------------
- # None-CI PODs
- # -------------------------------
- - orange-pod1:
- slave-label: orange-pod1
- <<: *master
- - cengn-pod1:
- slave-label: cengn-pod1
- <<: *master
+ <<: *euphrates
+
# -------------------------------
# scenarios
# -------------------------------
auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-ha':
auto-trigger-name: 'daily-trigger-disabled'
- - 'os-onos-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- 'os-odl_l2-nofeature-noha':
auto-trigger-name: 'daily-trigger-disabled'
- - 'os-onos-nofeature-noha':
- auto-trigger-name: 'daily-trigger-disabled'
- - 'os-onos-sfc-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- 'os-ocl-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-ocl-nofeature-noha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'k8-nosdn-nofeature-noha':
auto-trigger-name: 'daily-trigger-disabled'
- 'k8-nosdn-lb-noha':
build-step-failure-threshold: 'never'
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
-# 1.dovetail only master by now, not sync with A/B/C branches
+# 1.dovetail only euphrates by now, not sync with A/B/C branches
# 2.here the stream means the SUT stream, dovetail stream is defined in
# its own job
# 3.only debug testsuite here(includes basic testcase,
########################
# trigger macros
########################
-# os-nosdn-nofeature-ha trigger - branch: master
+# os-nosdn-nofeature-ha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-baremetal-master-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-baremetal-euphrates-trigger'
triggers:
- timed: '5 2 * * *'
+# os-odl_l2-nofeature-ha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-ha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-ha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-odl_l2-nofeature-ha trigger - branch: master
-- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-baremetal-master-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-baremetal-euphrates-trigger'
triggers:
- timed: '5 7 * * *'
+# os-nosdn-lxd-noha trigger - branch: euphrates
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-onos-nofeature-ha trigger - branch: master
-- trigger:
- name: 'joid-os-onos-nofeature-ha-baremetal-master-trigger'
- triggers:
- - timed: '5 12 * * *'
-- trigger:
- name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-onos-nofeature-ha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-onos-nofeature-ha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-onos-sfc-ha trigger - branch: master
-- trigger:
- name: 'joid-os-onos-sfc-ha-baremetal-master-trigger'
- triggers:
- - timed: '5 17 * * *'
-- trigger:
- name: 'joid-os-onos-sfc-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-onos-sfc-ha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-onos-sfc-ha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-nosdn-lxd-noha trigger - branch: master
-- trigger:
- name: 'joid-os-nosdn-lxd-noha-baremetal-master-trigger'
+ name: 'joid-os-nosdn-lxd-noha-baremetal-euphrates-trigger'
triggers:
- timed: '5 22 * * *'
+# os-nosdn-lxd-ha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-lxd-noha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-lxd-noha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-lxd-noha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-nosdn-lxd-ha trigger - branch: master
-- trigger:
- name: 'joid-os-nosdn-lxd-ha-baremetal-master-trigger'
+ name: 'joid-os-nosdn-lxd-ha-baremetal-euphrates-trigger'
triggers:
- timed: '5 10 * * *'
+# os-nosdn-nofeature-noha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-lxd-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-lxd-ha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-lxd-ha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# os-nosdn-nofeature-noha trigger - branch: master
-- trigger:
- name: 'joid-os-nosdn-nofeature-noha-baremetal-master-trigger'
+ name: 'joid-os-nosdn-nofeature-noha-baremetal-euphrates-trigger'
triggers:
- timed: '5 4 * * *'
+# k8-nosdn-nofeature-noha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-nofeature-noha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-noha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-nofeature-noha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# k8-nosdn-nofeature-noha trigger - branch: master
-- trigger:
- name: 'joid-k8-nosdn-nofeature-noha-baremetal-master-trigger'
+ name: 'joid-k8-nosdn-nofeature-noha-baremetal-euphrates-trigger'
triggers:
- timed: '5 15 * * *'
+# k8-nosdn-lb-noha trigger - branch: euphrates
- trigger:
- name: 'joid-k8-nosdn-nofeature-noha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-nosdn-nofeature-noha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-nosdn-nofeature-noha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# k8-nosdn-lb-noha trigger - branch: master
-- trigger:
- name: 'joid-k8-nosdn-lb-noha-baremetal-master-trigger'
+ name: 'joid-k8-nosdn-lb-noha-baremetal-euphrates-trigger'
triggers:
- timed: '5 20 * * *'
+# k8-ovn-lb-noha trigger - branch: euphrates
- trigger:
- name: 'joid-k8-nosdn-lb-noha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-nosdn-lb-noha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-nosdn-lb-noha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-# k8-ovn-lb-noha trigger - branch: master
-- trigger:
- name: 'joid-k8-ovn-lb-noha-baremetal-master-trigger'
+ name: 'joid-k8-ovn-lb-noha-baremetal-euphrates-trigger'
triggers:
- timed: '5 17 * * *'
+# os-nosdn-openbaton-ha trigger - branch: euphrates
- trigger:
- name: 'joid-k8-ovn-lb-noha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-ovn-lb-noha-orange-pod1-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-k8-ovn-lb-noha-cengn-pod1-master-trigger'
- triggers:
- - timed: ''
-
-# os-nosdn-openbaton-ha trigger - branch: master
-- trigger:
- name: 'joid-os-nosdn-openbaton-ha-baremetal-master-trigger'
+ name: 'joid-os-nosdn-openbaton-ha-baremetal-euphrates-trigger'
triggers:
- timed: '5 25 * * *'
+# os-ocl-nofeature-ha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-openbaton-ha-virtual-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'joid-os-nosdn-openbaton-ha-orange-pod1-master-trigger'
+ name: 'joid-os-ocl-nofeature-ha-baremetal-euphrates-trigger'
triggers:
- - timed: ''
+ - timed: '5 13 * * *'
+# os-ocl-nofeature-ha trigger - branch: euphrates
- trigger:
- name: 'joid-os-nosdn-openbaton-ha-cengn-pod1-master-trigger'
+ name: 'joid-os-ocl-nofeature-noha-baremetal-euphrates-trigger'
triggers:
- - timed: ''
+ - timed: '5 17 * * *'
project: qtip
jobs:
- 'qtip-verify-{stream}'
- - 'qtip-review-notebook-{stream}'
- - 'qtip-merge-{stream}'
+ - 'qtip-verify-notebook-{stream}'
+ - 'qtip-merged-notebook-{stream}'
stream:
- master:
branch: '{stream}'
# upload juypter notebook to artifacts for review
- job-template:
- name: 'qtip-review-notebook-{stream}'
+ name: 'qtip-verify-notebook-{stream}'
disabled: '{obj:disabled}'
disable-strict-forbidden-file-verification: 'true'
file-paths:
- compare-type: ANT
- pattern: 'examples/**'
+ pattern: '**/*.ipynb'
builders:
- upload-under-review-notebooks-to-opnfv-artifacts
- report-build-result-to-gerrit
- job-template:
- name: 'qtip-merge-{stream}'
+ name: 'qtip-merged-notebook-{stream}'
disabled: '{obj:disabled}'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: ANT
- pattern: examples/**
+ pattern: '**/*ipynb'
builders:
- remove-old-docs-from-opnfv-artifacts
export PATH=$PATH:/usr/local/bin/
[[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
- [[ -d examples ]] || exit 0
echo
echo "###########################"
gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
local_path="upload/$GERRIT_CHANGE_NUMBER"
- mkdir -p upload
- cp -r examples "$local_path"
+ mkdir -p $local_path
+
+ git diff HEAD~1 --name-only | grep -E ".+\.ipynb$" | xargs -I '{}' cp '{}' $local_path
gsutil -m cp -r "$local_path" "gs://$gs_base/"
echo "Document link(s):" >> gerrit_comment.txt
stream: master
branch: '{stream}'
disabled: false
- danube: &danube
- stream: danube
- branch: 'stable/{stream}'
- disabled: false
euphrates: &euphrates
stream: euphrates
branch: 'stable/{stream}'
receivers: >
cristina.pauna@enea.com
alexandru.avadanii@enea.com
+ delia.popescu@enea.com
dovetail-arm-receivers: &dovetail-arm-receivers
receivers: >
cristina.pauna@enea.com
alexandru.avadanii@enea.com
alexandru.nemes@enea.com
catalina.focsa@enea.com
+ delia.popescu@enea.com
other-receivers: &other-receivers
receivers: ''
<<: *master
<<: *yardstick-arm-receivers
# projects with jobs for stable/euphrates
+ - 'functest':
+ project: 'functest'
+ <<: *euphrates
+ <<: *functest-arm-receivers
+ - 'dovetail':
+ project: 'dovetail'
+ <<: *euphrates
+ <<: *dovetail-arm-receivers
- 'storperf-master':
project: 'storperf'
dockerdir: 'docker/storperf-master'
arch_tag: 'aarch64'
<<: *euphrates
<<: *storperf-arm-receivers
+ - 'yardstick':
+ project: 'yardstick'
+ <<: *euphrates
+ <<: *yardstick-arm-receivers
jobs:
- '{dockerrepo}-docker-build-arm-push-{stream}'
echo "--------------------------------------------------------"
echo
-count=30 # docker build jobs might take up to ~30 min
-while [[ -n `ps -ef|grep 'docker build'|grep -v grep` ]]; do
- echo "Build in progress. Waiting..."
- sleep 60
- count=$(( $count - 1 ))
- if [ $count -eq 0 ]; then
- echo "Timeout. Aborting..."
- exit 1
- fi
-done
-
# Remove previous running containers if exist
if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
echo "Removing existing $DOCKER_REPO_NAME containers..."
<<: *master
<<: *other-receivers
# projects with jobs for Danube
- - 'bottlenecks':
- project: 'bottlenecks'
- <<: *danube
- <<: *other-receivers
- 'qtip':
project: 'qtip'
<<: *euphrates
<<: *other-receivers
- 'yardstick':
project: 'yardstick'
- <<: *danube
+ <<: *euphrates
<<: *other-receivers
# projects with jobs for euphrates
+ - 'bottlenecks':
+ project: 'bottlenecks'
+ <<: *euphrates
+ <<: *other-receivers
- 'functest':
project: 'functest'
<<: *euphrates
# distros
#--------------------------------
distro:
- - 'ubuntu':
+ - ubuntu:
disabled: false
- - 'centos':
- disabled: true
- - 'opensuse':
- disabled: true
+ successful: false
+ failed: false
+ unstable: false
+ notbuilt: false
+ - centos:
+ disabled: false
+ successful: true
+ failed: true
+ unstable: true
+ notbuilt: true
+ - opensuse:
+ disabled: false
+ successful: true
+ failed: true
+ unstable: true
+ notbuilt: true
#--------------------------------
# type
#--------------------------------
#--------------------------------
jobs:
- 'xci-verify-{distro}-{type}-{stream}'
- - 'xci-verify-{phase}-{type}-{stream}'
+ - 'xci-verify-{distro}-{phase}-{type}-{stream}'
#--------------------------------
# job templates
#--------------------------------
- 'osa-verify-{distro}-.*'
- 'osa-periodic-{distro}-.*'
block-level: 'NODE'
+ - throttle:
+ max-per-node: 2
+ max-total: 10
+ categories:
+ - xci-verify-virtual
+ option: category
wrappers:
- ssh-agent-wrapper
- compare-type: ANT
pattern: 'docs/**'
readable-message: true
+ skip-vote:
+ successful: '{obj:successful}'
+ failed: '{obj:failed}'
+ unstable: '{obj:unstable}'
+ notbuilt: '{obj:notbuilt}'
parameters:
- project-parameter:
name: deploy
condition: SUCCESSFUL
projects:
- - name: 'xci-verify-deploy-{type}-{stream}'
+ - name: 'xci-verify-{distro}-deploy-{type}-{stream}'
current-parameters: true
predefined-parameters: |
DISTRO={distro}
DEPLOY_SCENARIO=os-nosdn-nofeature-noha
CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
name: healthcheck
condition: SUCCESSFUL
projects:
- - name: 'xci-verify-healthcheck-{type}-{stream}'
+ - name: 'xci-verify-{distro}-healthcheck-{type}-{stream}'
current-parameters: true
predefined-parameters: |
DISTRO={distro}
CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
FUNCTEST_MODE=tier
FUNCTEST_TIER=healthcheck
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
node-parameters: true
kill-phase-on: NEVER
abort-all-job: true
- job-template:
- name: 'xci-verify-{phase}-{type}-{stream}'
+ name: 'xci-verify-{distro}-{phase}-{type}-{stream}'
disabled: false
- build-blocker:
use-build-blocker: true
blocking-jobs:
- - 'xci-verify-deploy-.*'
- - 'xci-verify-healthcheck-.*'
- 'bifrost-verify-.*'
- 'bifrost-periodic-.*'
- 'osa-verify-.*'
block-level: 'NODE'
parameters:
+ - string:
+ name: PROJECT
+ default: 'releng-xci'
- string:
name: DISTRO
default: 'ubuntu'
builders:
- description-setter:
- description: "Built on $NODE_NAME for $DISTRO"
+ description: "Built on $NODE_NAME"
- 'xci-verify-{phase}-macro'
#--------------------------------
fi
cd $WORKSPACE
+
+ # The start-new-vm.sh script will copy the entire releng-xci directory
+ # so lets prepare the test script now so it can be copied by the script.
+ # Please do not move it elsewhere or you would have to move it to the VM
+ # yourself.
+ cat > xci_test.sh<<EOF
+ #!/bin/bash
+ export DISTRO=$DISTRO
+ export DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ export FUNCTEST_MODE=$FUNCTEST_MODE
+ export FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ export XCI_FLAVOR=$XCI_FLAVOR
+ export CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ export OPNFV_RELENG_DEV_PATH=/home/devuser/releng-xci/
+ export INSTALLER_TYPE=$INSTALLER_TYPE
+ export GIT_BASE=$GIT_BASE
+ export JENKINS_HOME=$JENKINS_HOME
+
+ cd xci
+ ./xci-deploy.sh
+ EOF
+ chmod a+x xci_test.sh
+
./xci/scripts/vm/start-new-vm.sh $DISTRO
- shell: |
#!/bin/bash
exit 0
fi
- ssh ${DISTRO}_xci_vm "cd releng-xci/xci && ./xci-deploy.sh"
+ ssh ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh"
- builder: