---
-# -------------------------------
-# These jobs run on a daily basis and deploy OpenStack
-# using the pinned versions of opnfv/releng, openstack/bifrost
-# and openstack/openstack-ansible. Due to this, there is no
-# version/branch is set/passed to jobs and instead the versions
-# are checked out based on what is configured.
-# -------------------------------
- project:
project: 'releng-xci'
name: 'xci-daily'
+
# -------------------------------
# Branch Anchors
# -------------------------------
stream: master
opnfv-releng-version: master
gs-pathname: ''
+
# -------------------------------
# Scenarios
# -------------------------------
scenario:
- - 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'ha'
- 'os-nosdn-nofeature-noha':
- auto-trigger-name: 'daily-trigger-disabled'
+ deploy-scenario: 'os-nosdn-nofeature'
+ installer-type: 'osa'
xci-flavor: 'noha'
- - 'os-odl-sfc-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'ha'
- - 'os-odl-sfc-noha':
- auto-trigger-name: 'daily-trigger-disabled'
+ - 'k8-calico-nofeature-noha':
+ deploy-scenario: 'k8-calico-nofeature'
+ installer-type: 'kubespray'
xci-flavor: 'noha'
+
# -------------------------------
# XCI PODs
# -------------------------------
pod:
- - virtual:
+ - baremetal:
<<: *master
+
# -------------------------------
# Supported Distros
# -------------------------------
distro:
- - 'xenial':
- disabled: false
- slave-label: xci-xenial-virtual
- dib-os-release: 'xenial'
- dib-os-element: 'ubuntu-minimal'
- # yamllint disable rule:line-length
- dib-os-packages: 'vlan,vim,less,bridge-utils,sudo,language-pack-en,iputils-ping,rsyslog,curl,python,debootstrap,ifenslave,ifenslave-2.6,lsof,lvm2,tcpdump,nfs-kernel-server,chrony,iptabls'
- # yamllint enable rule:line-length
- extra-dib-elements: 'openssh-server'
- - 'centos7':
+ - 'ubuntu':
+ disabled: true
+ slave-label: xci-baremetal
+ - 'centos':
disabled: true
- slave-label: xci-centos7-virtual
- dib-os-release: '7'
- dib-os-element: 'centos7'
- dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
- extra-dib-elements: 'openssh-server'
- - 'suse':
+ slave-label: xci-baremetal
+ - 'opensuse':
disabled: true
- slave-label: xci-suse-virtual
- dib-os-release: '42.3'
- dib-os-element: 'opensuse-minimal'
- dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
- extra-dib-elements: 'openssh-server'
+ slave-label: xci-baremetal
# -------------------------------
# Phases
phase:
- 'deploy'
- 'functest'
+ - 'yardstick'
+
# -------------------------------
# jobs
# -------------------------------
- build-blocker:
use-build-blocker: true
blocking-jobs:
+ - '^xci-verify.*'
+ - '^xci-merge.*'
- '^xci-os.*'
+ - '^xci-k8.*'
- '^xci-deploy.*'
- '^xci-functest.*'
- '^bifrost-.*periodic.*'
- '^osa-.*periodic.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- logrotate-default
+ triggers:
+ - timed: '@midnight'
+
parameters:
- string:
name: DEPLOY_SCENARIO
- default: '{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'
-
- triggers:
- - '{auto-trigger-name}'
+ - 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: "Built on $NODE_NAME"
+ 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:
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:
publishers:
# yamllint disable rule:line-length
- - email:
- recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
# yamllint enable rule:line-length
- email-jenkins-admins-on-failure
- - postbuildscript:
- script-only-if-succeeded: false
- script-only-if-failed: false
- builders:
- - shell:
- !include-raw: ./xci-cleanup.sh
- job-template:
name: 'xci-{phase}-{pod}-{distro}-daily-{stream}'
- disabled: '{obj:disabled}'
+ disabled: false
- concurrent: false
+ concurrent: true
properties:
- build-blocker:
use-build-blocker: true
blocking-jobs:
+ - '^xci-verify.*'
+ - '^xci-merge.*'
- '^xci-deploy.*'
- '^xci-functest.*'
- '^bifrost-.*periodic.*'
- '^osa-.*periodic.*'
- block-level: 'NODE'
+ 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:
- project-parameter:
project: '{project}'
branch: '{opnfv-releng-version}'
- - string:
- name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
- string:
name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-ha'
- - string:
- name: XCI_FLAVOR
- default: 'ha'
- - string:
- name: DISTRO
- default: '{distro}'
- - string:
- name: DIB_OS_RELEASE
- default: '{dib-os-release}'
+ default: 'os-nosdn-nofeature-noha'
- string:
- name: DIB_OS_ELEMENT
- default: '{dib-os-element}'
- - string:
- name: DIB_OS_PACKAGES
- default: '{dib-os-packages}'
+ name: INSTALLER_TYPE
+ default: 'osa'
- string:
- name: EXTRA_DIB_ELEMENTS
- default: '{extra-dib-elements}'
+ name: XCI_FLAVOR
+ default: 'noha'
- string:
- name: CLEAN_DIB_IMAGES
- default: 'true'
+ name: XCI_DISTRO
+ default: 'ubuntu'
- label:
name: SLAVE_LABEL
default: '{slave-label}'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
- name: CI_LOOP
- default: 'daily'
- - string:
- name: INSTALLER_TYPE
- default: 'osa'
+ name: FUNCTEST_VERSION
+ default: 'hunter'
- string:
name: FUNCTEST_MODE
- default: 'daily'
+ default: 'tier'
- string:
name: FUNCTEST_SUITE_NAME
+ default: 'smoke'
+ - string:
+ name: CI_LOOP
default: 'daily'
- description: "Daily suite name to run"
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
builders:
- description-setter:
- description: "Built on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
- - 'xci-{phase}-builder'
+ 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-deploy-builder
+ name: 'xci-daily-deploy-macro'
builders:
- - shell:
- !include-raw: ./xci-deploy.sh
+ - 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-functest-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 "Hello World!"
+ 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
-# this will be enabled once the xci is prepared
-# - builder:
-# name: xci-functest-builder
-# builders:
-# - shell:
-# !include-raw:
-# - ../../utils/fetch_os_creds.sh
-# - ../functest/functest-alpine.sh
+ ssh root@192.168.122.2 "/root/run-yardstick.sh"