--- - project: project: 'releng-xci' name: 'xci-daily' # ------------------------------- # Branch Anchors # ------------------------------- master: &master stream: master opnfv-releng-version: master gs-pathname: '' # ------------------------------- # Scenarios # ------------------------------- scenario: - 'os-nosdn-nofeature-noha': deploy-scenario: 'os-nosdn-nofeature' installer-type: 'osa' xci-flavor: 'noha' - 'k8-calico-nofeature-noha': deploy-scenario: 'k8-calico-nofeature' installer-type: 'kubespray' xci-flavor: 'noha' # ------------------------------- # XCI PODs # ------------------------------- pod: - baremetal: <<: *master # ------------------------------- # Supported Distros # ------------------------------- distro: - 'ubuntu': disabled: true slave-label: xci-baremetal - 'centos': disabled: true slave-label: xci-baremetal - 'opensuse': disabled: true slave-label: xci-baremetal # ------------------------------- # Phases # ------------------------------- phase: - 'deploy' - 'functest' - 'yardstick' # ------------------------------- # jobs # ------------------------------- jobs: - 'xci-{scenario}-{pod}-{distro}-daily-{stream}' - 'xci-{phase}-{pod}-{distro}-daily-{stream}' # ------------------------------- # job templates # ------------------------------- - job-template: name: 'xci-{scenario}-{pod}-{distro}-daily-{stream}' disabled: '{obj:disabled}' concurrent: false properties: - build-blocker: use-build-blocker: true blocking-jobs: - '^xci-verify.*' - '^xci-merge.*' - '^xci-os.*' - '^xci-k8.*' - '^xci-deploy.*' - '^xci-functest.*' - '^bifrost-.*periodic.*' - '^osa-.*periodic.*' blocking-level: 'NODE' - logrotate-default triggers: - timed: '@midnight' parameters: - string: name: DEPLOY_SCENARIO default: '{deploy-scenario}' - string: name: INSTALLER_TYPE default: '{installer-type}' - string: name: XCI_FLAVOR default: '{xci-flavor}' - label: name: SLAVE_LABEL default: '{slave-label}' all-nodes: false node-eligibility: 'ignore-offline' - string: name: XCI_DISTRO default: '{distro}' - string: name: FUNCTEST_VERSION default: 'hunter' - string: name: FUNCTEST_MODE default: 'tier' - string: name: FUNCTEST_SUITE_NAME default: 'smoke' - string: name: CI_LOOP default: 'daily' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on this Jenkins Slave' wrappers: - ssh-agent-wrapper - build-timeout: timeout: 240 - fix-workspace-permissions builders: - description-setter: description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME" - trigger-builds: - project: 'xci-deploy-{pod}-{distro}-daily-{stream}' current-parameters: false predefined-parameters: | DEPLOY_SCENARIO=$DEPLOY_SCENARIO INSTALLER_TYPE=$INSTALLER_TYPE XCI_FLAVOR=$XCI_FLAVOR CI_LOOP=$CI_LOOP XCI_DISTRO=$XCI_DISTRO FUNCTEST_VERSION=$FUNCTEST_VERSION FUNCTEST_MODE=$FUNCTEST_MODE FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME same-node: true block: true - trigger-builds: - project: 'xci-functest-{pod}-{distro}-daily-{stream}' current-parameters: false predefined-parameters: | DEPLOY_SCENARIO=$DEPLOY_SCENARIO INSTALLER_TYPE=$INSTALLER_TYPE XCI_FLAVOR=$XCI_FLAVOR CI_LOOP=$CI_LOOP XCI_DISTRO=$XCI_DISTRO FUNCTEST_VERSION=$FUNCTEST_VERSION FUNCTEST_MODE=$FUNCTEST_MODE FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME same-node: true block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'xci-yardstick-{pod}-{distro}-daily-{stream}' current-parameters: false predefined-parameters: | DEPLOY_SCENARIO=$DEPLOY_SCENARIO INSTALLER_TYPE=$INSTALLER_TYPE XCI_FLAVOR=$XCI_FLAVOR CI_LOOP=$CI_LOOP XCI_DISTRO=$XCI_DISTRO same-node: true block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' publishers: # yamllint disable rule:line-length # yamllint enable rule:line-length - email-jenkins-admins-on-failure - job-template: name: 'xci-{phase}-{pod}-{distro}-daily-{stream}' disabled: false concurrent: true properties: - build-blocker: use-build-blocker: true blocking-jobs: - '^xci-verify.*' - '^xci-merge.*' - '^xci-deploy.*' - '^xci-functest.*' - '^bifrost-.*periodic.*' - '^osa-.*periodic.*' blocking-level: 'NODE' - throttle: enabled: true max-per-node: 1 option: 'project' - logrotate-default wrappers: - ssh-agent-wrapper - build-timeout: timeout: 240 - fix-workspace-permissions scm: - git-scm parameters: - project-parameter: project: '{project}' branch: '{opnfv-releng-version}' - string: name: DEPLOY_SCENARIO default: 'os-nosdn-nofeature-noha' - string: name: INSTALLER_TYPE default: 'osa' - string: name: XCI_FLAVOR default: 'noha' - string: name: XCI_DISTRO default: 'ubuntu' - label: name: SLAVE_LABEL default: '{slave-label}' all-nodes: false node-eligibility: 'ignore-offline' - string: name: FUNCTEST_VERSION default: 'hunter' - string: name: FUNCTEST_MODE default: 'tier' - string: name: FUNCTEST_SUITE_NAME default: 'smoke' - string: name: CI_LOOP default: 'daily' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT builders: - description-setter: description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME" - 'xci-daily-{phase}-macro' # -------------------------- # builder macros # -------------------------- # These need to be properly fixed once the basic deployment, functest, and # yardstick jobs are working outside of clean vm. # One of the ugly fixes is moving test preparation step into the # deployment job itself since test preparation requires some of the # things from deployment job. With clean VM, this wasn't an issue # since everything was on clean VM. When we move things out of clean # VM, things are done in workspaces of the jobs that are different. # # Apart from these things, we will need to go through the scripts # used for verify jobs and make them updated in order to be able to # use them for jobs that don't use clean VM. - builder: name: 'xci-daily-deploy-macro' builders: - shell: | #!/bin/bash set -o errexit set -o pipefail echo "Cleaning the leftovers from the earlier run" echo "---------------------------------------------------------------------------------" for vm in $(sudo virsh list --all --name | grep -v xci_vm); do echo "Removing $vm" sudo virsh destroy $vm > /dev/null 2>&1 || true sudo virsh undefine $vm > /dev/null 2>&1 || true sudo killall -r vbmc > /dev/null 2>&1 || true sudo rm -rf /root/.vbmc > /dev/null 2>&1 || true done echo "---------------------------------------------------------------------------------" # select the right PDF/IDF export PDF=$WORKSPACE/xci/var/${NODE_NAME}-pdf.yml export IDF=$WORKSPACE/xci/var/${NODE_NAME}-idf.yml if [[ "$NODE_NAME" =~ "virtual" ]]; then export PDF=$WORKSPACE/xci/var/pdf.yml export IDF=$WORKSPACE/xci/var/idf.yml fi cd $WORKSPACE/xci && ./xci-deploy.sh -p $PDF -i $IDF echo "Prepare OPNFV VM for Tests" echo "---------------------------------------------------------------------------------" export XCI_PATH=$WORKSPACE export XCI_VENV=${XCI_PATH}/venv source $XCI_VENV/bin/activate while read var; do declare -x "\${var}" 2>/dev/null echo $var done < ${XCI_PATH}/.cache/xci.env && cd ${XCI_PATH}/xci && \ ansible-playbook -i playbooks/dynamic_inventory.py playbooks/prepare-tests.yml ssh root@192.168.122.2 "/root/prepare-tests.sh" echo "---------------------------------------------------------------------------------" - builder: name: 'xci-daily-functest-macro' builders: - shell: | #!/bin/bash set -o pipefail ssh root@192.168.122.2 "/root/run-functest.sh" functest_exit=$? case ${DEPLOY_SCENARIO[0]} in os-*) FUNCTEST_LOG=/root/functest-results/functest.log ;; k8-*) FUNCTEST_LOG=/root/functest-results/functest-kubernetes.log ;; *) echo "Unable to determine the installer. Exiting!" exit $functest_exit ;; esac echo "Functest log" echo "---------------------------------------------------------------------------------" ssh root@192.168.122.2 "cat $FUNCTEST_LOG" echo "---------------------------------------------------------------------------------" exit ${functest_exit} - builder: name: 'xci-daily-yardstick-macro' builders: - shell: | #!/bin/bash set -o errexit set -o pipefail ssh root@192.168.122.2 "/root/run-yardstick.sh"