fi
if [ -f ${DOVETAIL_CONFIG}/pod.yaml ]; then
+ echo "Adapt process info for $INSTALLER_TYPE ..."
+ attack_process='rabbitmq'
+ cat << EOF >> ${DOVETAIL_CONFIG}/pod.yaml
+process_info:
+- {testcase_name: dovetail.ha.tc010, attack_process: ${attack_process}}
+
+EOF
echo "file ${DOVETAIL_CONFIG}/pod.yaml:"
cat ${DOVETAIL_CONFIG}/pod.yaml
else
envs="${envs} -e POD_ARCH=${COMPUTE_ARCH}"
fi
-volumes="${images_vol} ${results_vol} ${sshkey_vol} ${rc_file_vol} ${cacert_file_vol}"
+
+if [[ ${INSTALLER_TYPE} == 'compass' && ${DEPLOY_SCENARIO} =~ 'odl.*sfc' ]]; then
+ ssh_key="/tmp/id_rsa"
+ user_config="/tmp/openstack_user_config.yml"
+ docker cp compass-tasks:/root/.ssh/id_rsa $ssh_key
+ docker cp compass-tasks:/etc/openstack_deploy/openstack_user_config.yml $user_config
+ sshkey_vol="-v ${ssh_key}:/root/.ssh/id_rsa"
+ userconfig_vol="-v ${user_config}:${user_config}"
+ envs="${envs} -e EXTERNAL_NETWORK=${EXTERNAL_NETWORK}"
+fi
+
+
+volumes="${images_vol} ${results_vol} ${sshkey_vol} ${userconfig_vol} ${rc_file_vol} ${cacert_file_vol}"
set +e
KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL|awk -F'https://|:[0-9]+' '$0=$2')
echo "export KUBE_MASTER_IP=$KUBE_MASTER_IP" >> $rc_file
elif [[ ${INSTALLER_TYPE} == 'joid' && ${BRANCH} == 'master' ]]; then
- admin_conf_file_vol="-v ${HOME}/joid_config/config:/root/joid_config/config"
+ admin_conf_file_vol="-v ${HOME}/joid_config/config:/root/.kube/config"
rc_file=${HOME}/joid_config/k8config
else
echo "Not supported by other installers yet"
volumes="${rc_file_vol} ${results_vol} ${admin_conf_file_vol}"
-# 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
-
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} \
-e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
-e BUILD_TAG=${BUILD_TAG} -e DEPLOY_TYPE=${DEPLOY_TYPE}"
echo "Pulling Docker image ${FUNCTEST_IMAGE} ..."
docker pull ${FUNCTEST_IMAGE}>/dev/null
cmd_opt="run_tests -r -t all"
-cmd="docker run --rm --privileged=true ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
+cmd="docker run --rm ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
echo "Running Functest k8s test cases, CMD: ${cmd}"
eval ${cmd}
ret_value=$?
+
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
+echo 0 > ${ret_val_file}
if [ ${ret_value} != 0 ]; then
echo ${ret_value} > ${ret_val_file}
fi
- opensuse:
disabled: false
# -------------------------------
- # scenarios
- # -------------------------------
- scenario:
- - 'os-odl-sfc':
- project: sfc
- # -------------------------------
- # type
- # -------------------------------
- type:
- - virtual
- # -------------------------------
# postmerge promotion phases
# -------------------------------
phase:
# jobs
# -------------------------------
jobs:
- - 'xci-{scenario}-{type}-merge-{stream}'
- - 'xci-{scenario}-{type}-promote-merge-{stream}'
- - 'xci-merge-{distro}-{type}-{stream}'
- - 'xci-merge-{distro}-{phase}-{type}-{stream}'
+ - 'xci-merge-virtual-{stream}'
+ - 'xci-merge-promote-virtual-{stream}'
+ - 'xci-merge-{distro}-virtual-{stream}'
+ - 'xci-merge-{distro}-{phase}-virtual-{stream}'
# -------------------------------
# job templates
# -------------------------------
- job-template:
- name: 'xci-{scenario}-{type}-merge-{stream}'
+ name: 'xci-merge-virtual-{stream}'
project-type: multijob
- disabled: '{obj:disabled}'
+ disabled: false
concurrent: false
- comment-added-contains-event:
comment-contains-value: 'remerge'
projects:
- - project-compare-type: 'ANT'
- project-pattern: '{obj:project}'
+ - project-compare-type: 'REG_EXP'
+ project-pattern: 'sfc|sdnvpn'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
description: 'Git URL to use on this Jenkins Slave'
builders:
- - description-setter:
- description: "Node: $NODE_NAME"
- 'xci-merge-set-scenario-macro'
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - description-setter:
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- multijob:
name: deploy and test
condition: SUCCESSFUL
projects:
- - name: 'xci-merge-opensuse-{type}-{stream}'
+ - name: 'xci-merge-opensuse-virtual-{stream}'
current-parameters: false
predefined-parameters: |
DISTRO=opensuse
node-parameters: false
kill-phase-on: FAILURE
abort-all-job: true
- - name: 'xci-merge-ubuntu-{type}-{stream}'
+ - name: 'xci-merge-ubuntu-virtual-{stream}'
current-parameters: false
predefined-parameters: |
DISTRO=ubuntu
node-parameters: false
kill-phase-on: FAILURE
abort-all-job: true
- - name: 'xci-merge-centos-{type}-{stream}'
+ - name: 'xci-merge-centos-virtual-{stream}'
current-parameters: false
predefined-parameters: |
DISTRO=centos
name: promote
condition: SUCCESSFUL
projects:
- - name: 'xci-{scenario}-{type}-promote-merge-{stream}'
+ - name: 'xci-merge-promote-virtual-{stream}'
current-parameters: true
predefined-parameters: |
GERRIT_PROJECT=$GERRIT_PROJECT
abort-all-job: true
- job-template:
- name: 'xci-merge-{distro}-{type}-{stream}'
+ name: 'xci-merge-{distro}-virtual-{stream}'
project-type: multijob
- disabled: '{obj:disabled}'
+ disabled: false
- concurrent: true
+ concurrent: false
properties:
- logrotate-default
name: deploy
condition: SUCCESSFUL
projects:
- - name: 'xci-merge-{distro}-deploy-{type}-{stream}'
+ - name: 'xci-merge-{distro}-deploy-virtual-{stream}'
current-parameters: true
predefined-parameters: |
DISTRO={distro}
name: healthcheck
condition: SUCCESSFUL
projects:
- - name: 'xci-merge-{distro}-healthcheck-{type}-{stream}'
+ - name: 'xci-merge-{distro}-healthcheck-virtual-{stream}'
current-parameters: true
predefined-parameters: |
DISTRO={distro}
!include-raw: ./xci-cleanup.sh
- job-template:
- name: 'xci-merge-{distro}-{phase}-{type}-{stream}'
+ name: 'xci-merge-{distro}-{phase}-virtual-{stream}'
disabled: false
- concurrent: true
+ concurrent: false
properties:
- logrotate-default
- 'xci-merge-{phase}-macro'
- job-template:
- name: 'xci-{scenario}-{type}-promote-merge-{stream}'
+ name: 'xci-merge-promote-virtual-{stream}'
disabled: false
- string:
name: OPNFV_RELENG_DEV_PATH
default: $WORKSPACE/
+ - string:
+ name: LOCAL_PROMOTION_METADATA_FILE
+ default: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - string:
+ name: REMOTE_PROMOTION_METADATA_FILE
+ default: "gs://artifacts.opnfv.org/xci/pipeline/merge/$DEPLOY_SCENARIO.properties"
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
- builder:
name: 'xci-merge-deploy-macro'
builders:
- - shell: |
- #!/bin/bash
- echo "Hello World"
+ - shell:
+ !include-raw: ./xci-start-new-vm.sh
+
+ - shell:
+ !include-raw: ./xci-start-deployment.sh
- builder:
name: 'xci-merge-healthcheck-macro'
builders:
- - shell: |
- #!/bin/bash
- echo "Hello World"
+ - shell:
+ !include-raw: ./xci-run-functest.sh
- builder:
name: 'xci-merge-promote-macro'
builders:
- - shell: |
- #!/bin/bash
- echo "Hello World"
+ - shell:
+ !include-raw: ./xci-promote.sh
exit 0
fi
-# skip the deployment if the scenario is not supported on this distro
-OPNFV_SCENARIO_REQUIREMENTS=$WORKSPACE/xci/opnfv-scenario-requirements.yml
-if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENTS | grep -q $DISTRO; then
- echo "# SKIPPED: Scenario $DEPLOY_SCENARIO is NOT supported on $DISTRO"
- exit 0
+# fail if promotion metadata file doesn't exist
+if [ ! -f $LOCAL_PROMOTION_METADATA_FILE ]; then
+ echo "Unable to find promotion metadata file $LOCAL_PROMOTION_METADATA_FILE"
+ echo "Skipping promotion!"
+ exit 1
fi
-echo "Hello World!"
+# upload promotion metadata file to OPNFV artifact repo
+echo "Storing promotion metadata as $REMOTE_PROMOTION_METADATA_FILE"
+gsutil cp $LOCAL_PROMOTION_METADATA_FILE $REMOTE_PROMOTION_METADATA_FILE > /dev/null 2>&1
+
+# update the file metadata on gs to prevent the use of cached version of the file
+gsutil -m setmeta -r -h "Cache-Control:private, max-age=0, no-transform" \
+ $REMOTE_PROMOTION_METADATA_FILE > /dev/null 2>&1
+
+# log the metadata to console
+echo "Stored the metadata for $DEPLOY_SCENARIO"
+echo "---------------------------------------------------------------------------------"
+gsutil cat $REMOTE_PROMOTION_METADATA_FILE
+echo "---------------------------------------------------------------------------------"
+echo "Scenario $DEPLOY_SCENARIO has successfully been promoted!"
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-set -o errexit
set -o nounset
-set -o pipefail
#----------------------------------------------------------------------
# This script is used by CI and executed by Jenkins jobs.
echo "---------------------------------------------------------------------------------"
ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "cat /root/results/functest.log"
echo "---------------------------------------------------------------------------------"
+# check the log to see if we have any error
+if ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "grep -q 'FAIL' /root/results/functest.log"; then
+ echo "Error: Functest failed!"
+ exit 1
+fi
function override_generic_scenario() {
echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
+ # ensure the metadata we record is consistent for all types of patches including skipped ones
+ # extract releng-xci sha
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
+
+ # extract scenario sha which is same as releng-xci sha for generic scenarios
+ SCENARIO_SHA=$XCI_SHA
+
# process topic branch names
- if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
- # skip the real verification
- echo "Skipping verify!"
- echo "INSTALLER_TYPE=osa" > $WORK_DIRECTORY/scenario.properties
- echo "DEPLOY_SCENARIO=os-nosdn-nofeature" >> $WORK_DIRECTORY/scenario.properties
- exit 0
- elif [[ "$GERRIT_TOPIC" =~ 'force-verify' ]]; then
- # Run the deployment with default installer and scenario when multiple things change
- # and we want to force that.
- echo "Recording the installer 'osa' and scenario 'os-nosdn-nofeature' for downstream jobs"
- echo "Forcing CI verification of default scenario and installer!"
+ if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment|force-verify ]]; then
+ [[ "$GERRIT_TOPIC" =~ force-verify ]] && echo "Forcing CI verification using default scenario and installer!"
+ [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]] && echo "Skipping verification!"
echo "INSTALLER_TYPE=osa" > $WORK_DIRECTORY/scenario.properties
echo "DEPLOY_SCENARIO=os-nosdn-nofeature" >> $WORK_DIRECTORY/scenario.properties
+ echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
exit 0
fi
echo "Recording the installer '$INSTALLER_TYPE' and scenario '$DEPLOY_SCENARIO' for downstream jobs"
echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties
echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties
+ echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
exit 0
fi
else
done
# extract releng-xci sha
- RELENG_XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
# extract scenario sha which is same as releng-xci sha for generic scenarios
- SCENARIO_SHA=$RELENG_XCI_SHA
+ SCENARIO_SHA=$XCI_SHA
}
# This function determines the impacted external scenario by processing the Gerrit
DEPLOY_SCENARIO+=$(git diff HEAD^..HEAD --name-only | grep scenarios | awk -F '[/|/]' '{print $2}' | uniq)
# extract releng-xci sha
- RELENG_XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
# extract scenario sha
SCENARIO_SHA=$(cd $WORK_DIRECTORY/$GERRIT_PROJECT && git rev-parse HEAD)
echo "Recording the installer '$INSTALLER_TYPE' and scenario '${DEPLOY_SCENARIO[0]}' and SHAs for downstream jobs"
echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties
echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties
-echo "RELENG_XCI_SHA=$RELENG_XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
# skip scenario support check if the job is promotion job
if [[ "$JOB_NAME" =~ (os|k8) ]]; then