xci: Enable daily baremetal jobs
[releng.git] / jjb / xci / xci-daily-jobs.yaml
index 11db4e1..649fa85 100644 (file)
@@ -1,15 +1,9 @@
 ---
-# -------------------------------
-# 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':
+      - 'ubuntu':
           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':
-          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
+      - 'centos':
           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
+      - 'opensuse':
+          disabled: false
+          slave-label: xci-baremetal
 
     # -------------------------------
     #        Phases
@@ -73,6 +52,8 @@
     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
+          pdf=$WORKSPACE/xci/var/${NODE_NAME}-pdf.yml
+          idf=$WORKSPACE/xci/var/${NODE_NAME}-idf.yml
+          if [[ "$NODE_NAME" =~ "virtual" ]]; then
+              pdf=$WORKSPACE/xci/var/pdf.yml
+              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"