DEPLOY_SETTINGS_DIR="${WORKSPACE}/config/deploy"
NETWORK_SETTINGS_DIR="${WORKSPACE}/config/network"
DEPLOY_CMD="$(pwd)/deploy.sh"
+ UTIL_CMD="$(pwd)/util.sh"
RESOURCES="${WORKSPACE}/build/images/"
CONFIG="${WORKSPACE}/build"
LIB="${WORKSPACE}/lib"
DEPLOY_CMD=opnfv-deploy
DEPLOY_SETTINGS_DIR="/etc/opnfv-apex/"
+ UTIL_CMD=opnfv-util
NETWORK_SETTINGS_DIR="/etc/opnfv-apex/"
RESOURCES="/var/opt/opnfv/images"
CONFIG="/var/opt/opnfv"
# set env vars to deploy cmd
DEPLOY_CMD="CONFIG=${CONFIG} RESOURCES=${RESOURCES} LIB=${LIB} ${DEPLOY_CMD}"
+UTIL_CMD="CONFIG=${CONFIG} RESOURCES=${RESOURCES} LIB=${LIB} ${UTIL_CMD}"
if [ "$OPNFV_CLEAN" == 'yes' ]; then
if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
exit 1
fi
+# mock detached state for deploy
+sudo $UTIL_CMD mock-detached on
# start deployment
sudo ${DEPLOY_CMD} -d ${DEPLOY_FILE} -n ${NETWORK_FILE} --debug
+# turn of mock detached state
+sudo $UTIL_CMD mock-detached off
echo
echo "--------------------------------------------------------"
build-step-failure-threshold: 'never'
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
- - trigger-builds:
- - project: 'apex-deploy-baremetal-os-nosdn-fdio-noha-{stream1}'
- predefined-parameters: |
- BUILD_DIRECTORY=apex-build-{stream1}/build
- OPNFV_CLEAN=yes
- git-revision: true
- same-node: true
- block-thresholds:
- build-step-failure-threshold: 'never'
- block: true
- - trigger-builds:
- - project: 'functest-apex-{daily-slave}-daily-{stream1}'
- predefined-parameters:
- DEPLOY_SCENARIO=os-nosdn-fdio-noha
- block: true
- same-node: true
- block-thresholds:
- build-step-failure-threshold: 'never'
- failure-threshold: 'never'
- unstable-threshold: 'FAILURE'
- - trigger-builds:
- - project: 'yardstick-apex-{slave}-daily-{stream1}'
- predefined-parameters:
- DEPLOY_SCENARIO=os-nosdn-fdio-noha
- block: true
- same-node: true
- block-thresholds:
- build-step-failure-threshold: 'never'
- failure-threshold: 'never'
- unstable-threshold: 'FAILURE'
- trigger-builds:
- project: 'apex-deploy-virtual-os-nosdn-nofeature-ha-ipv6-{stream1}'
predefined-parameters: |
scenario:
# HA scenarios
- 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'armband-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-ha':
auto-trigger-name: 'armband-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l3-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'armband-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-bgpvpn-ha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'armband-{scenario}-{pod}-{stream}-trigger'
# NOHA scenarios
- 'os-odl_l2-nofeature-noha':
- auto-trigger-name: 'daily-trigger-disabled'
+ auto-trigger-name: 'armband-{scenario}-{pod}-{stream}-trigger'
jobs:
- 'armband-{scenario}-{pod}-daily-{stream}'
#----------------------------------------------------------
# Enea Armband POD 1 Triggers running against master branch
#----------------------------------------------------------
-# No triggers for master for now
- trigger:
name: 'armband-os-odl_l2-nofeature-ha-arm-pod1-master-trigger'
triggers:
- - timed: ''
+ - timed: '0 3 * * 1,4'
+- trigger:
+ name: 'armband-os-nosdn-nofeature-ha-arm-pod1-master-trigger'
+ triggers:
+ - timed: '0 15 * * 1,4'
+- trigger:
+ name: 'armband-os-odl_l3-nofeature-ha-arm-pod1-master-trigger'
+ triggers:
+ - timed: '0 3 * * 2,5'
+- trigger:
+ name: 'armband-os-odl_l2-bgpvpn-ha-arm-pod1-master-trigger'
+ triggers:
+ - timed: '0 15 * * 2,5'
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-noha-arm-pod1-master-trigger'
+ triggers:
+ - timed: '0 3 * * 3,6'
#---------------------------------------------------------------
# Enea Armband POD 1 Triggers running against brahmaputra branch
#---------------------------------------------------------------
name: 'armband-os-odl_l2-nofeature-ha-arm-pod1-brahmaputra-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'armband-os-nosdn-nofeature-ha-arm-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l3-nofeature-ha-arm-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-bgpvpn-ha-arm-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-noha-arm-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
#----------------------------------------------------------
# Enea Armband POD 2 Triggers running against master branch
#----------------------------------------------------------
name: 'armband-os-odl_l2-nofeature-ha-arm-pod2-master-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'armband-os-nosdn-nofeature-ha-arm-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l3-nofeature-ha-arm-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-bgpvpn-ha-arm-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-noha-arm-pod2-master-trigger'
+ triggers:
+ - timed: ''
#---------------------------------------------------------------
# Enea Armband POD 2 Triggers running against brahmaputra branch
#---------------------------------------------------------------
name: 'armband-os-odl_l2-nofeature-ha-arm-pod2-brahmaputra-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'armband-os-nosdn-nofeature-ha-arm-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l3-nofeature-ha-arm-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-bgpvpn-ha-arm-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-noha-arm-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2016 Ericsson AB and others.
+# Copyright (c) 2016 Enea AB.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
cd $WORKSPACE
+# remove the expired items from cache
+test -f $WORKSPACE/ci/clean_cache.sh && $WORKSPACE/ci/clean_cache.sh $CACHE_DIRECTORY
+
+LATEST_ISO_PROPERTIES=$WORKSPACE/latest.iso.properties
+if [[ "$JOB_NAME" =~ "daily" ]]; then
+ # check to see if we already have an artifact on artifacts.opnfv.org
+ # for this commit during daily builds
+ echo "Checking to see if we already built and stored Armband Fuel ISO for this commit"
+
+ curl -s -o $LATEST_ISO_PROPERTIES http://$GS_URL/latest.properties 2>/dev/null
+
+ # get metadata of latest ISO
+ LATEST_ISO_SHA1=$(grep OPNFV_GIT_SHA1 $LATEST_ISO_PROPERTIES | cut -d'=' -f2)
+ LATEST_ISO_URL=$(grep OPNFV_ARTIFACT_URL $LATEST_ISO_PROPERTIES | cut -d'=' -f2)
+else
+ LATEST_ISO_SHA1=none
+fi
+
# get current SHA1
CURRENT_SHA1=$(git rev-parse HEAD)
+# set FORCE_BUILD to false for non-daily builds
+FORCE_BUILD=${FORCE_BUILD:-false}
+
+if [[ "$CURRENT_SHA1" == "$LATEST_ISO_SHA1" && "$FORCE_BUILD" == "false" ]]; then
+ echo "***************************************************"
+ echo " An ISO has already been built for this commit"
+ echo " $LATEST_ISO_URL"
+ echo "***************************************************"
+else
+ echo "This commit has not been built yet or forced build! Proceeding with the build."
+ /bin/rm -f $LATEST_ISO_PROPERTIES
+ echo
+fi
+
# log info to console
-echo "Starting the build of Armband. This could take some time..."
+echo "Starting the build of Armband $INSTALLER_TYPE. This could take some time..."
echo "-----------------------------------------------------------"
echo
+# create the cache directory if it doesn't exist
+mkdir -p $CACHE_DIRECTORY
+
# set OPNFV_ARTIFACT_VERSION
if [[ "$JOB_NAME" =~ "merge" ]]; then
echo "Building Fuel ISO for a merged change"
# start the build
cd $WORKSPACE/ci
-./build.sh $BUILD_DIRECTORY
+./build.sh -v $OPNFV_ARTIFACT_VERSION $NOCACHE_ARG -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
# list the build artifacts
ls -al $BUILD_DIRECTORY
- trigger:
name: 'compass-os-nosdn-nofeature-ha-huawei-pod2-master-trigger'
triggers:
- - timed: '0 3 * * *'
+ - timed: '0 19 * * *'
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-huawei-pod2-master-trigger'
triggers:
- trigger:
name: 'compass-os-odl_l3-nofeature-ha-huawei-pod2-master-trigger'
triggers:
- - timed: '0 19 * * *'
+ - timed: '0 15 * * *'
- trigger:
name: 'compass-os-onos-nofeature-ha-huawei-pod2-master-trigger'
triggers:
- - timed: '0 15 * * *'
+ - timed: ''
- trigger:
name: 'compass-os-ocl-nofeature-ha-huawei-pod2-master-trigger'
triggers:
- trigger:
name: 'compass-os-onos-sfc-ha-huawei-pod2-master-trigger'
triggers:
- - timed: '0 7 * * *'
+ - timed: ''
- trigger:
name: 'compass-os-odl_l2-moon-ha-huawei-pod2-master-trigger'
triggers:
- trigger:
name: 'compass-os-nosdn-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 3 * * *'
+ - timed: '0 2 * * *'
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 23 * * *'
+ - timed: '0 22 * * *'
- trigger:
name: 'compass-os-odl_l3-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 19 * * *'
+ - timed: '0 18 * * *'
- trigger:
name: 'compass-os-onos-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 15 * * *'
+ - timed: '0 14 * * *'
- trigger:
name: 'compass-os-ocl-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 11 * * *'
+ - timed: '0 10 * * *'
- trigger:
name: 'compass-os-onos-sfc-ha-baremetal-master-trigger'
triggers:
- - timed: '0 7 * * *'
+ - timed: '0 6 * * *'
- trigger:
name: 'compass-os-odl_l2-moon-ha-baremetal-master-trigger'
triggers:
- trigger:
name: 'compass-os-nosdn-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '0 3 * * *'
+ - timed: '0 21 * * *'
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '0 23 * * *'
+ - timed: '0 20 * * *'
- trigger:
name: 'compass-os-odl_l3-nofeature-ha-virtual-master-trigger'
triggers:
- trigger:
name: 'compass-os-onos-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '0 15 * * *'
+ - timed: '0 18 * * *'
- trigger:
name: 'compass-os-ocl-nofeature-ha-virtual-master-trigger'
triggers:
- - timed: '0 11 * * *'
+ - timed: '0 16 * * *'
- trigger:
name: 'compass-os-onos-sfc-ha-virtual-master-trigger'
triggers:
- - timed: '0 7 * * *'
+ - timed: '0 15 * * *'
- trigger:
name: 'compass-os-odl_l2-moon-ha-virtual-master-trigger'
triggers:
- - timed: ''
+ - timed: '0 14 * * *'
- trigger:
name: 'compass-os-nosdn-kvm-ha-virtual-master-trigger'
triggers:
set -o errexit
set -o pipefail
+# use proxy url to replace the nomral URL, for googleusercontent.com will be blocked randomly
+[[ "$NODE_NAME" =~ (zte) ]] && GS_URL=$GS_BASE_PROXY
+
if [[ "$JOB_NAME" =~ "merge" ]]; then
echo "Downloading http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties"
# get the properties file for the Fuel ISO built for a merged change
fi
fi
+[[ "$NODE_NAME" =~ (zte) ]] && OPNFV_ARTIFACT_URL=${GS_BASE_PROXY%%/*}/$OPNFV_ARTIFACT_URL
+
# log info to console
echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
echo "This could take some time..."
- 'rally_full'
- 'vims'
- 'multisite'
+ - 'parser'
- parameter:
name: functest-parameter
parameters:
- trigger:
name: 'joid-os-odl_l2-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 10 * * *'
+ - timed: '0 7 * * *'
- trigger:
name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
triggers:
- trigger:
name: 'joid-os-onos-nofeature-ha-baremetal-master-trigger'
triggers:
- - timed: '0 18 * * *'
+ - timed: '0 12 * * *'
- trigger:
name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
triggers:
- trigger:
name: 'joid-os-onos-sfc-ha-baremetal-master-trigger'
triggers:
- - timed: '0 22 * * *'
+ - timed: '0 17 * * *'
- trigger:
name: 'joid-os-onos-sfc-ha-virtual-master-trigger'
triggers:
- trigger:
name: 'joid-os-nosdn-lxd-noha-baremetal-master-trigger'
triggers:
- - timed: ''
+ - timed: '0 22 * * *'
- trigger:
name: 'joid-os-nosdn-lxd-noha-virtual-master-trigger'
triggers:
- trigger:
name: 'joid-os-nosdn-lxd-ha-baremetal-master-trigger'
triggers:
- - timed: ''
+ - timed: '0 10 * * *'
- trigger:
name: 'joid-os-nosdn-lxd-ha-virtual-master-trigger'
triggers:
#!/bin/bash
-
+##########################################################
+##This script includes executing cyclictest scripts.
+##########################################################
+#The latest build packages are stored in build_output
ls -al $WORKSPACE/build_output
+
+#start the test
+cd $WORKSPACE
+./ci/test_kvmfornfv.sh
name: KINGBIRD_LOG_FILE
default: $WORKSPACE/kingbird.log
- 'intel-virtual6-defaults'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-multisite-ha'
scm:
- gerrit-trigger-scm:
description: "URL to Google Storage."
- string:
name: GS_BASE_PROXY
- default: build.opnfv.org/artifacts/$PROJECT
+ default: build.opnfv.org/artifacts.opnfv.org/$PROJECT
description: "URL to Google Storage proxy"
- parameter:
# replace the default one by the customized one provided by jenkins config
fi
+# Set iptables rule to allow forwarding return traffic for container
+if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
+ sudo iptables -I FORWARD -j RETURN
+fi
+
opts="--privileged=true --rm"
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
-e NODE_NAME=${NODE_NAME} -e EXTERNAL_NETWORK=${EXTERNAL_NETWORK} \
for test_case in testValid:
test_case.checkRunnable(installer, s,
test_case.getConstraints())
- logger.debug("testcase %s is %s" %
+ logger.debug("testcase %s (%s) is %s" %
(test_case.getDisplayName(),
+ test_case.getName(),
test_case.isRunnable))
time.sleep(1)
if test_case.isRunnable:
for test_case in otherTestCases:
test_case.checkRunnable(installer, s,
test_case.getConstraints())
- logger.info("testcase %s is %s" %
- (test_case.getName(), test_case.isRunnable))
+ logger.debug("testcase %s (%s) is %s" %
+ (test_case.getDisplayName(),
+ test_case.getName(),
+ test_case.isRunnable))
time.sleep(1)
if test_case.isRunnable:
dbName = test_case.getDbName()
#
# ****************************************************
installers = ["apex", "compass", "fuel", "joid"]
-# installers = ["apex"]
# list of test cases declared in testcases.yaml but that must not be
# taken into account for the scoring
-blacklist = ["odl", "ovno", "security_scan", "copper", "moon"]
+blacklist = ["ovno", "security_scan"]
# versions = ["brahmaputra", "master"]
versions = ["master"]
-PERIOD = 10
-MAX_SCENARIO_CRITERIA = 18
+PERIOD = 50
+MAX_SCENARIO_CRITERIA = 50
# get the last 5 test results to determinate the success criteria
NB_TESTS = 5
# REPORTING_PATH = "/usr/share/nginx/html/reporting/functest"
REPORTING_PATH = "."
URL_BASE = 'http://testresults.opnfv.org/test/api/v1/results'
TEST_CONF = "https://git.opnfv.org/cgit/functest/plain/ci/testcases.yaml"
-LOG_LEVEL = "ERROR"
+LOG_LEVEL = "DEBUG"
LOG_FILE = REPORTING_PATH + "/reporting.log"
'promise': 'Promise',
'moon': 'moon',
'copper': 'copper',
- 'security_scan': 'security'
+ 'security_scan': 'security',
+ 'multisite': 'multisite',
+ 'domino': 'domino',
+ 'odl-sfc': 'SFC',
+ 'onos_sfc': 'SFC'
}
try:
self.displayName = display_name_matrix[self.name]
'promise': 'promise',
'moon': 'moon',
'copper': 'copper',
- 'security_scan': 'security'
+ 'security_scan': 'security',
+ 'multisite': 'multisite',
+ 'domino': 'domino-multinode',
+ 'odl-sfc': 'odl-sfc',
+ 'onos_sfc': 'onos_sfc'
}
try:
return test_match_matrix[self.name]
user=zte
port=8000
image=opnfv/testapi
+mode=build
update_path=/tmp/testapi
mongodb_url=mongodb://172.17.0.1:27017
swagger_url=http://10.63.243.17:8000"```
--- /dev/null
+#!/bin/bash
+
+number=`docker images | awk 'NR != 1' | grep testapi | wc -l`
+if [ $number -gt 0 ]; then
+ images=`docker images -a | awk 'NR != 1' | grep testapi | awk '{print $1}'`
+ echo "begin to rm images $images"
+ docker images | awk 'NR != 1' | grep testapi | awk '{print $3}' | xargs docker rmi -f &>/dev/null
+fi
port: "8000"
update_path: "/tmp/testapi"
image: "opnfv/testapi"
+ mode: "pull"
mongodb_url: "mongodb://172.17.0.1:27017"
swagger_url: "http://{{ host }}:{{ port }}"
tasks:
copy:
src: templates/
dest: "{{ update_path }}"
+ - name: transfer Dockerfile
+ copy:
+ src: ../docker/Dockerfile
+ dest: "{{ update_path }}"
+ when: mode == "build"
- name: backup mongodb database
command: "python {{ update_path }}/backup_mongodb.py -u {{ mongodb_url }} -o {{ update_path }}"
- name: stop and remove old versions
register: rm_result
- debug: msg="{{ rm_result.stderr }}"
- name: delete old docker images
- command: docker rmi "{{ image }}"
+ command: bash "{{ update_path }}/rm_images.sh"
ignore_errors: true
- name: update mongodb
command: "python {{ update_path }}/update_mongodb.py -u {{ mongodb_url }}"
+ - name: docker build image
+ command: "docker build -t {{ image }} {{ update_path }}"
+ when: mode == "build"
- name: docker start testapi server
command: docker run -dti -p "{{ port }}:8000"
-e "mongodb_url={{ mongodb_url }}"