Merge "[fuel] verify: Multiarch, docker build step"
authorAric Gardner <agardner@linuxfoundation.org>
Wed, 12 Sep 2018 15:25:31 +0000 (15:25 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Wed, 12 Sep 2018 15:25:31 +0000 (15:25 +0000)
21 files changed:
jjb/apex/apex.yaml
jjb/apex/scenarios.yaml.hidden
jjb/bottlenecks/bottlenecks-ci-jobs.yaml
jjb/bottlenecks/bottlenecks-run-suite.sh
jjb/compass4nfv/compass-ci-jobs.yaml
jjb/doctor/doctor.yaml
jjb/fuel/fuel-project-jobs.yaml
jjb/functest/functest-alpine.sh
jjb/functest/functest-daily-jobs.yaml
jjb/functest/functest-docker.yaml
jjb/functest/functest-kubernetes-docker.yaml
jjb/functest/functest-kubernetes-project-jobs.yaml
jjb/functest/functest-project-jobs.yaml
jjb/functest/xtesting-docker.yaml
jjb/functest/xtesting-project-jobs.yaml
jjb/global/releng-defaults.yaml
jjb/releng/opnfv-docker.yaml
jjb/releng/releng-release-jobs.yaml
jjb/xci/xci-daily-jobs.yaml
releases/gambia/functest.yaml [new file with mode: 0644]
releases/hunter/functest.yaml [new file with mode: 0644]

index 82f766e..fd0e826 100644 (file)
           <<: *master
       - 'os-odl-sfc_queens-noha':
           <<: *master
+      - 'os-nosdn-calipso-noha':
+          <<: *master
+      - 'os-nosdn-calipso_queens-noha':
+          <<: *master
       - 'os-nosdn-nofeature-noha':
           <<: *euphrates
       - 'os-nosdn-nofeature-ha':
           <<: *euphrates
       - 'os-odl-sfc-ha':
           <<: *euphrates
-      - 'os-nosdn-calipso-noha':
-          <<: *euphrates
 
     platform:
       - 'baremetal'
               kill-phase-on: NEVER
               abort-all-job: true
               git-revision: false
+            - name: 'apex-os-nosdn-calipso-noha-baremetal-master'
+              node-parameters: false
+              current-parameters: false
+              predefined-parameters: |
+                OPNFV_CLEAN=yes
+              kill-phase-on: NEVER
+              abort-all-job: true
+              git-revision: false
+            - name: 'apex-os-nosdn-calipso_queens-noha-baremetal-master'
+              node-parameters: false
+              current-parameters: false
+              predefined-parameters: |
+                OPNFV_CLEAN=yes
+              kill-phase-on: NEVER
+              abort-all-job: true
+              git-revision: false
 
 # euphrates Builder
 - builder:
               kill-phase-on: NEVER
               abort-all-job: true
               git-revision: false
-            - name: 'apex-os-nosdn-calipso-noha-baremetal-euphrates'
-              node-parameters: false
-              current-parameters: false
-              predefined-parameters: |
-                OPNFV_CLEAN=yes
-              kill-phase-on: NEVER
-              abort-all-job: true
-              git-revision: false
 - builder:
     name: 'apex-upload-artifact'
     builders:
index b032613..1e1ba3f 100644 (file)
@@ -18,6 +18,8 @@ master:
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc_queens-ha'
   - 'os-odl-sfc_queens-noha'
+  - 'os-nosdn-calipso-noha'
+  - 'os-nosdn-calipso_queens-noha'
 fraser:
   - 'os-nosdn-nofeature-ha'
   - 'os-odl-bgpvpn-ha'
@@ -39,7 +41,6 @@ euphrates:
   - 'os-nosdn-kvm_ovs_dpdk-ha'
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc-ha'
-  - 'os-nosdn-calipso-noha'
 danube:
   - 'os-nosdn-nofeature-noha'
   - 'os-nosdn-nofeature-ha'
index 41b73a2..4c302dd 100644 (file)
@@ -79,6 +79,7 @@
       - 'posca_feature_moon_tenants'
       - 'posca_feature_vnf_scale_out'
       - 'posca_factor_soak_throughputs'
+      - 'kubestone_deployment_capacity'
 
     jobs:
       - 'bottlenecks-{installer}-{suite}-{pod}-daily-{stream}'
index 7a3db00..9b5e8ee 100644 (file)
@@ -24,7 +24,26 @@ OPENRC=/tmp/admin_rc.sh
 OS_CACERT=/tmp/os_cacert
 
 BOTTLENECKS_CONFIG=/tmp
-
+KUBESTONE_TEST_DIR=/home/opnfv/bottlenecks/testsuites/kubestone/testcases
+
+# Pulling Bottlenecks docker and passing environment variables
+echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
+docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
+
+opts="--privileged=true -id"
+envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
+      -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
+      -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
+      -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
+      -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
+docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
+
+cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
+echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
+${cmd} >$redirect
+sleep 5
+
+# Run test suite
 if [[ $SUITE_NAME == *posca* ]]; then
     POSCA_SCRIPT=/home/opnfv/bottlenecks/testsuites/posca
     sudo rm -f ${OPENRC}
@@ -116,23 +135,6 @@ if [[ $SUITE_NAME == *posca* ]]; then
         sudo ls -al ${BOTTLENECKS_CONFIG}
     fi
 
-    # Pulling Bottlenecks docker and passing environment variables
-    echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
-    docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
-
-    opts="--privileged=true -id"
-    envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
-          -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
-          -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
-          -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
-          -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
-    docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
-
-    cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
-    echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
-    ${cmd} >$redirect
-    sleep 5
-
     # Running test cases through Bottlenecks docker
     if [[ $SUITE_NAME == posca_stress_traffic ]]; then
         TEST_CASE=posca_factor_system_bandwidth
@@ -144,4 +146,11 @@ if [[ $SUITE_NAME == *posca* ]]; then
     testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
     echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
     ${testcase_cmd} >$redirect
+elif [[ $SUITE_NAME == *kubestone* ]]; then
+    if [[ $SUITE_NAME == kubestone_deployment_capacity ]]; then
+        TEST_CASE=${KUBESTONE_TEST_DIR}/deployment_capacity.yaml
+    fi
+    testcase_cmd="docker exec bottlenecks-load-master python ${KUBESTONE_TEST_DIR}/../stress_test.py -c $TEST_CASE"
+    echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
+    ${testcase_cmd} >$redirect
 fi
index 328e9e3..e5775b2 100644 (file)
                     build-step-failure-threshold: 'never'
                     failure-threshold: 'never'
                     unstable-threshold: 'FAILURE'
+      - conditional-step:
+          condition-kind: and
+          condition-operands:
+            - condition-kind: regex-match
+              regex: k8-nosdn-nofeature-ha
+              label: '{scenario}'
+          steps:
+            - trigger-builds:
+                - project: 'bottlenecks-compass-kubestone_deployment_capacity-{pod}-daily-{stream}'
+                  current-parameters: false
+                  predefined-parameters:
+                    DEPLOY_SCENARIO={scenario}
+                  block: true
+                  same-node: true
+                  block-thresholds:
+                    build-step-failure-threshold: 'never'
+                    failure-threshold: 'never'
+                    unstable-threshold: 'FAILURE'
       - conditional-step:
           condition-kind: and
           condition-operands:
index 4690230..b78bab1 100644 (file)
@@ -39,7 +39,9 @@
 
     jobs:
       - 'doctor-verify-{stream}'
-      - 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
 
 - job-template:
     name: 'doctor-verify-{stream}'
@@ -68,7 +70,7 @@
           name: 'doctor-verify-sample'
           execution-type: PARALLEL
           projects:
-            - name: 'doctor-verify-apex-sample-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-apex-sample-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
               kill-phase-on: FAILURE
               git-revision: true
-            - name: 'doctor-verify-daisy-sample-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-daisy-sample-x86_64-{stream}'
+              predefined-parameters: |
+                PROJECT=$PROJECT
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
+            - name: 'doctor-verify-maintenance-apex-sample-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
           name: 'doctor-verify-congress'
           execution-type: PARALLEL
           projects:
-            - name: 'doctor-verify-apex-congress-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-apex-congress-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
               kill-phase-on: FAILURE
               git-revision: true
+      - multijob:
+          name: 'doctor-verify-sample-all'
+          execution-type: PARALLEL
+          # This would be for running all test cases with sample inspector
+      - multijob:
+          name: 'doctor-verify-congress-all'
+          execution-type: PARALLEL
+          # This would be for running all test cases with congress inspector
 
 - job-template:
-    name: 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+    name: 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
     disabled: '{obj:disabled}'
     node: 'doctor-{installer}-{arch}'
     wrappers:
       - 'doctor-slave-parameter'
       - 'doctor-parameter':
           inspector: '{inspector}'
+          test_case: 'fault_management'
+    scm:
+      - git-scm-gerrit
+    builders:
+      - 'doctor-verify-installer-inspector-builders-macro'
+    publishers:
+      - 'doctor-verify-publishers-macro'
+
+- job-template:
+    name: 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+    disabled: '{obj:disabled}'
+    node: 'nokia-pod1'
+    wrappers:
+      - ssh-agent-wrapper
+      - build-timeout:
+          timeout: 40
+    parameters:
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults'
+      - 'doctor-slave-parameter'
+      - 'doctor-parameter':
+          inspector: '{inspector}'
+          test_case: 'maintenance'
+    scm:
+      - git-scm-gerrit
+    builders:
+      - 'doctor-verify-installer-inspector-builders-macro'
+    publishers:
+      - 'doctor-verify-publishers-macro'
+
+- job-template:
+    name: 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
+    disabled: '{obj:disabled}'
+    node: 'nokia-pod1'
+    wrappers:
+      - ssh-agent-wrapper
+      - build-timeout:
+          timeout: 50
+    parameters:
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults'
+      - 'doctor-slave-parameter'
+      - 'doctor-parameter':
+          inspector: '{inspector}'
+          test_case: 'all'
     scm:
       - git-scm-gerrit
     builders:
           name: INSPECTOR_TYPE
           default: '{inspector}'
           description: 'inspector component'
+      - string:
+          name: TEST_CASE
+          default: '{test_case}'
+          description: 'test case: all, fault_management or maintenance'
+
 
 # -------------------------------
 # builder macros
index fc49f63..40ba6e6 100644 (file)
           gs-pathname: '/{stream}'
           disabled: false
 
+    project-name: '{project}'
+    project-pattern: '{project}'
+    rtd-build-url: https://readthedocs.org/api/v2/webhook/opnfv-fuel/47205/
+    rtd-token: 38f40bf6c08fd4bccb930871bc29b08404cf98b0
+
     jobs:
       - 'fuel-deploy-generic-daily-{stream}'
+      - '{project-name}-rtd-jobs'
 
 ########################
 # job templates
index 5002eb5..357068e 100755 (executable)
@@ -172,14 +172,14 @@ else
     if [ ${DEPLOY_TYPE} == 'baremetal' ] && [ "${HOST_ARCH}" != "aarch64" ]; then
         if [[ ${BRANCH} == "stable/fraser" ]]; then
             tiers=(healthcheck smoke features vnf parser)
-            tests=(tempest_full)
+            tests=(tempest_full_parallel)
         else
             tiers=(healthcheck smoke benchmarking features vnf)
         fi
     else
         if [[ ${BRANCH} == "stable/fraser" ]]; then
             tiers=(healthcheck smoke features parser)
-            tests=(tempest_full)
+            tests=(tempest_full_parallel)
         else
             tiers=(healthcheck smoke benchmarking features)
         fi
index 763d1d4..9262988 100644 (file)
       stream: fraser
       branch: 'stable/{stream}'
       gs-pathname: '/{stream}'
+    gambia: &gambia
+      stream: gambia
+      branch: 'stable/{stream}'
+      gs-pathname: '/{stream}'
+    hunter: &hunter
+      stream: hunter
+      branch: 'stable/{stream}'
+      gs-pathname: '/{stream}'
     # -------------------------------
     # POD, INSTALLER, AND BRANCH MAPPING
     # -------------------------------
index fc2fd3c..14134fa 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
     exclude:
       - stream: 'master'
         image: 'parser'
+      - stream: 'hunter'
+        image: 'parser'
+      - stream: 'gambia'
+        image: 'parser'
       - stream: 'fraser'
         image: 'tempest'
       - stream: 'fraser'
index 5fbb3be..3836103 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
index 7f8dd8d..46b77ce 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter: &hunter
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
+      - gambia: &gambia
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 9a12305..b7220a8 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          gs-pathname: ''
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          gs-pathname: ''
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 251c395..84bcb21 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
index e109387..239ae9f 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter: &hunter
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
+      - gambia: &gambia
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 0caa3f2..ce008ca 100644 (file)
@@ -12,6 +12,7 @@
     node: master
 
     # Defaults for global-jjb jobs
+    build-timeout: 60
     build-node: 'opnfv-build'
     gerrit-server-name: 'gerrit.opnfv.org'
     jenkins-ssh-credential: 'd42411ac011ad6f3dd2e1fa34eaa5d87f910eb2e'
index c31860a..cb9d7f9 100644 (file)
     storperf-receivers: &storperf-receivers
       receivers: >
           mark.beierl@emc.com
+    yardstick-receivers: &yardstick-receivers
+      receivers: >
+          limingjiang@huawei.com
+          rexlee8776@gmail.com
+          emma.l.foley@intel.com
     other-receivers: &other-receivers
       receivers: ''
 
       - 'yardstick':
           project: 'yardstick'
           <<: *master
-          <<: *other-receivers
+          <<: *yardstick-receivers
+      - 'yardstick-image-k8s':
+          project: 'yardstick'
+          dockerdir: 'docker/k8s'
+          <<: *master
+          <<: *yardstick-receivers
+
       # projects with jobs for euphrates
       - 'barometer-collectd':
           project: 'barometer'
index c24cdb9..89519ae 100644 (file)
@@ -14,6 +14,8 @@
 
     stream:
       - fraser
+      - gambia
+      - hunter
 
     jobs:
       - 'releng-release-{stream}-verify'
index 2c692dd..c4689ba 100644 (file)
     # -------------------------------
     scenario:
       - 'os-nosdn-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-nosdn-nofeature'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-nosdn-osm-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-nosdn-osm'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-nofeature'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-bgpvpn-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-bgpvpn'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-sfc-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-sfc'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'k8-nosdn-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-nosdn-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-canal-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-canal-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-calico-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-calico-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-contiv-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-contiv-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-flannel-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-flannel-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-nosdn-istio-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-nosdn-istio'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
           block-level: 'NODE'
       - logrotate-default
 
+    triggers:
+      - timed: '@midnight'
+
     parameters:
       - string:
           name: DEPLOY_SCENARIO
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
 
-    triggers:
-      - '{auto-trigger-name}'
-
     wrappers:
       - ssh-agent-wrapper
       - build-timeout:
diff --git a/releases/gambia/functest.yaml b/releases/gambia/functest.yaml
new file mode 100644 (file)
index 0000000..681778c
--- /dev/null
@@ -0,0 +1,15 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+branches:
+  - name: stable/gambia
+    location:
+      functest: e69190cc9b0763c9a72b654df56fb3ed5f27430f
+  - name: stable/gambia
+    location:
+      functest-kubernetes: 951fc46b7499d9f230c6e8f0e1629ac2325c5ad7
+  - name: stable/gambia
+    location:
+      functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca
diff --git a/releases/hunter/functest.yaml b/releases/hunter/functest.yaml
new file mode 100644 (file)
index 0000000..315b0de
--- /dev/null
@@ -0,0 +1,15 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+branches:
+  - name: stable/hunter
+    location:
+      functest: e69190cc9b0763c9a72b654df56fb3ed5f27430f
+  - name: stable/hunter
+    location:
+      functest-kubernetes: 951fc46b7499d9f230c6e8f0e1629ac2325c5ad7
+  - name: stable/hunter
+    location:
+      functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca