summaryrefslogtreecommitdiffstats
path: root/jjb
diff options
context:
space:
mode:
Diffstat (limited to 'jjb')
-rw-r--r--jjb/apex/apex.yml183
-rw-r--r--jjb/compass4nfv/compass-ci-jobs.yml80
-rw-r--r--jjb/compass4nfv/compass-deploy.sh26
-rw-r--r--jjb/compass4nfv/compass-project-jobs.yml17
-rw-r--r--jjb/doctor/doctor.yml2
-rwxr-xr-xjjb/fuel/fuel-build.sh7
-rw-r--r--jjb/fuel/fuel-ci-jobs.yml318
-rwxr-xr-xjjb/fuel/fuel-deploy.sh55
-rwxr-xr-xjjb/fuel/fuel-download-artifact.sh26
-rw-r--r--jjb/fuel/fuel-project-jobs.yml6
-rwxr-xr-xjjb/fuel/fuel-upload-artifact.sh27
-rw-r--r--jjb/functest/functest-ci-jobs.yml49
-rw-r--r--jjb/joid/joid-ci-jobs.yml127
-rw-r--r--jjb/opnfv/installer-params.yml2
-rw-r--r--jjb/opnfv/opnfv-docker.sh12
-rw-r--r--jjb/opnfv/opnfv-docker.yml2
-rw-r--r--jjb/opnfv/opnfv-docs.yml4
-rw-r--r--jjb/opnfv/slave-params.yml118
-rw-r--r--jjb/ovsnfv/ovsnfv.yml6
-rw-r--r--jjb/qtip/qtip-ci-jobs.yml (renamed from jjb/qtip/qtip.yml)195
-rw-r--r--jjb/qtip/qtip-project-jobs.yml58
-rw-r--r--jjb/releng-macros.yaml9
-rw-r--r--jjb/yardstick/yardstick-ci-jobs.yml55
-rw-r--r--jjb/yardstick/yardstick-project-jobs.yml60
24 files changed, 1080 insertions, 364 deletions
diff --git a/jjb/apex/apex.yml b/jjb/apex/apex.yml
index acc0550fb..b304f2270 100644
--- a/jjb/apex/apex.yml
+++ b/jjb/apex/apex.yml
@@ -15,17 +15,19 @@
branch: 'master'
gs-pathname: ''
block-stream: 'brahmaputra'
+ slave: 'opnfv-jump-1'
- brahmaputra:
branch: 'stable/brahmaputra'
gs-pathname: '/brahmaputra'
block-stream: 'master'
+ slave: 'opnfv-jump-1'
disabled: false
project: 'apex'
scenario:
- 'os-odl_l2-nofeature-ha'
- - 'os-odl_l2-sfc-ha'
+ - 'os-odl_l2-sfc-noha'
- 'os-odl_l3-nofeature-ha'
- 'os-onos-nofeature-ha'
- 'os-opencontrail-nofeature-ha'
@@ -37,7 +39,7 @@
- job-template:
name: 'apex-verify-{stream}'
- node: opnfv-jump-1
+ node: '{slave}'
parameters:
- apex-parameter:
@@ -63,7 +65,7 @@
- patchset-created-event:
exclude-drafts: 'false'
exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
+ exclude-no-code-change: 'true'
- draft-published-event
- comment-added-contains-event:
comment-contains-value: 'recheck'
@@ -84,9 +86,6 @@
pattern: 'lib/**'
- compare-type: ANT
pattern: 'config/**'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**'
properties:
- build-blocker:
@@ -102,20 +101,30 @@
- 'apex-build'
- trigger-builds:
- project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream}'
- predefined-parameters:
+ predefined-parameters: |
BUILD_DIRECTORY=apex-verify-{stream}/build_output
+ OPNFV_CLEAN=yes
git-revision: false
block: true
- trigger-builds:
- project: 'apex-deploy-virtual-os-onos-nofeature-ha-{stream}'
- predefined-parameters:
+ predefined-parameters: |
BUILD_DIRECTORY=apex-verify-{stream}/build_output
+ OPNFV_CLEAN=yes
git-revision: false
block: true
- trigger-builds:
- project: 'apex-deploy-virtual-os-odl_l3-nofeature-ha-{stream}'
- predefined-parameters:
+ predefined-parameters: |
BUILD_DIRECTORY=apex-verify-{stream}/build_output
+ OPNFV_CLEAN=yes
+ git-revision: false
+ block: true
+ - trigger-builds:
+ - project: 'apex-deploy-virtual-os-odl_l2-sfc-noha-{stream}'
+ predefined-parameters: |
+ BUILD_DIRECTORY=apex-verify-{stream}/build_output
+ OPNFV_CLEAN=yes
git-revision: false
block: true
- 'apex-workspace-cleanup'
@@ -157,10 +166,12 @@
builders:
- trigger-builds:
- project: 'apex-deploy-{platform}-{scenario}-{stream}'
+ predefined-parameters:
+ OPNFV_CLEAN='yes'
git-revision: false
block: true
- trigger-builds:
- - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
+ - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
predefined-parameters:
DEPLOY_SCENARIO={scenario}
block: true
@@ -169,7 +180,9 @@
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
- trigger-builds:
- - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
+ - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
+ predefined-parameters:
+ DEPLOY_SCENARIO={scenario}
block: true
block-thresholds:
build-step-failure-threshold: 'never'
@@ -184,7 +197,7 @@
# Required Variables:
# stream: branch with - in place of / (eg. stable)
# branch: branch (eg. stable)
- node: opnfv-jump-1
+ node: '{slave}'
disabled: false
@@ -230,7 +243,7 @@
# Required Variables:
# stream: branch with - in place of / (eg. stable)
# branch: branch (eg. stable)
- node: opnfv-jump-1
+ node: '{slave}'
disabled: false
@@ -249,6 +262,10 @@
name: DEPLOY_SCENARIO
default: '{scenario}'
description: "Scenario to deploy with."
+ - string:
+ name: OPNFV_CLEAN
+ default: 'no'
+ description: "Use yes in lower case to invoke clean. Indicates if the deploy environment should be cleaned before deployment"
properties:
- build-blocker:
@@ -345,8 +362,9 @@
block: true
- trigger-builds:
- project: 'apex-deploy-baremetal-os-odl_l2-nofeature-ha-{stream}'
- predefined-parameters:
+ predefined-parameters: |
BUILD_DIRECTORY=apex-build-{stream}/build_output
+ OPNFV_CLEAN=yes
git-revision: true
block: true
- trigger-builds:
@@ -360,6 +378,8 @@
unstable-threshold: 'FAILURE'
- trigger-builds:
- project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
+ predefined-parameters:
+ DEPLOY_SCENARIO=os-odl_l2-nofeature-ha
block: true
block-thresholds:
build-step-failure-threshold: 'never'
@@ -382,33 +402,37 @@
unstable-threshold: 'FAILURE'
- trigger-builds:
- project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
+ predefined-parameters:
+ DEPLOY_SCENARIO=os-onos-nofeature-ha
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'apex-deploy-baremetal-os-odl_l3-nofeature-ha-{stream}'
+ predefined-parameters:
+ BUILD_DIRECTORY=apex-build-{stream}/build_output
+ git-revision: true
+ block: true
+ - trigger-builds:
+ - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
+ predefined-parameters:
+ DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
+ predefined-parameters:
+ DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
block: true
block-thresholds:
build-step-failure-threshold: 'never'
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
-# - trigger-builds:
-# - project: 'apex-deploy-baremetal-os-odl_l3-nofeature-ha-{stream}'
-# predefined-parameters:
-# BUILD_DIRECTORY=apex-build-master/build_output
-# git-revision: true
-# block: true
-# - trigger-builds:
-# - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
-# predefined-parameters:
-# DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
-# block: true
-# block-thresholds:
-# build-step-failure-threshold: 'never'
-# failure-threshold: 'never'
-# unstable-threshold: 'FAILURE'
-# - trigger-builds:
-# - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}'
-# block: true
-# block-thresholds:
-# build-step-failure-threshold: 'never'
-# failure-threshold: 'never'
-# unstable-threshold: 'FAILURE'
########################
# parameter macros
@@ -462,21 +486,25 @@
if echo $BUILD_TAG | grep "apex-verify" 1> /dev/null; then
if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then
export OPNFV_ARTIFACT_VERSION=brahmaputra-dev${BUILD_NUMBER}
+ export BUILD_ARGS="-v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY"
else
export OPNFV_ARTIFACT_VERSION=dev${BUILD_NUMBER}
+ export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY"
fi
elif [ "$ARTIFACT_VERSION" == "daily" ]; then
if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then
export OPNFV_ARTIFACT_VERSION=brahmaputra-$(date -u +"%Y-%m-%d")
+ export BUILD_ARGS="-v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY"
else
export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d")
+ export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY --iso"
fi
else
export OPNFV_ARTIFACT_VERSION=${ARTIFACT_VERSION}
fi
# start the build
cd $WORKSPACE/ci
- ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
+ ./build.sh -v $OPNFV_ARTIFACT_VERSION $BUILD_ARGS
RPM_VERSION=$(grep Version $BUILD_DIRECTORY/../build/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-')
# list the contents of BUILD_OUTPUT directory
ls -al $BUILD_DIRECTORY
@@ -492,8 +520,8 @@
echo "OPNFV_RPM_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-apex-$RPM_VERSION.noarch.rpm | cut -d' ' -f1)"
echo "OPNFV_BUILD_URL=$BUILD_URL"
) > $WORKSPACE/opnfv.properties
- echo
echo "--------------------------------------------------------"
+ echo "Done!"
- builder:
name: 'apex-workspace-cleanup'
@@ -562,7 +590,12 @@
echo "--------------------------------------------------------"
echo
- if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
+ if [[ $BUILD_DIRECTORY == *verify-master* ]]; then
+ cd $WORKSPACE/../${BUILD_DIRECTORY/build_output/}
+ WORKSPACE=$(pwd)
+ echo "WORKSPACE modified to $WORKSPACE"
+ cd $WORKSPACE/ci
+ elif [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
# if artifact name is passed the pull a
# specific artifact from artifacts.opnfv.org
RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME
@@ -600,43 +633,55 @@
fi
fi
- RPM_LIST=$RPM_INSTALL_PATH
- for pkg in common undercloud; do
- RPM_LIST+=" ${RPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}"
- done
+ if [ -z "$DEPLOY_SCENARIO" ]; then
+ echo "Deploy scenario not set!"
+ exit 1
+ fi
- # update / install the new rpm
- if rpm -q opnfv-apex > /dev/null; then
- if [ $(basename $OPNFV_RPM_URL) == $(rpm -q opnfv-apex).rpm ]; then
- echo "RPM is already installed"
- elif sudo yum update -y $RPM_LIST | grep "does not update installed package"; then
- if ! sudo yum downgrade -y $RPM_LIST; then
- sudo yum remove -y opnfv-undercloud opnfv-common
- sudo yum downgrade -y $RPM_INSTALL_PATH
- fi
- fi
+ # use local build for verify
+ if [[ $BUILD_DIRECTORY == *verify-master* ]]; then
+ if [ ! -e "${WORKSPACE}/build/lib" ]; then ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib; fi
+ DEPLOY_CMD="./deploy.sh -c ${WORKSPACE}/build -r ${WORKSPACE}/build/images/"
+ DEPLOY_FILE="${WORKSPACE}/config/deploy/${DEPLOY_SCENARIO}.yaml"
+ NETWORK_FILE="${WORKSPACE}/config/network/network_settings.yaml"
else
- sudo yum install -y $RPM_LIST;
+ RPM_LIST=$RPM_INSTALL_PATH
+ for pkg in common undercloud opendaylight-sfc; do
+ RPM_LIST+=" ${RPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}"
+ done
+
+ # update / install the new rpm
+ if rpm -q opnfv-apex > /dev/null; then
+ if [ $(basename $OPNFV_RPM_URL) == $(rpm -q opnfv-apex).rpm ]; then
+ echo "RPM is already installed"
+ elif sudo yum update -y $RPM_LIST | grep "does not update installed package"; then
+ if ! sudo yum downgrade -y $RPM_LIST; then
+ sudo yum remove -y opnfv-undercloud opnfv-common
+ sudo yum downgrade -y $RPM_INSTALL_PATH
+ fi
+ fi
+ else
+ sudo yum install -y $RPM_LIST;
+ fi
+ DEPLOY_CMD=opnfv-deploy
+ DEPLOY_FILE="/etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml"
+ NETWORK_FILE="/etc/opnfv-apex/network_settings.yaml"
fi
- # cleanup virtual machines before we start
- sudo opnfv-clean
- # initiate virtual deployment
- if [ -e /etc/opnfv-apex/network_settings.yaml ]; then
- if [ -n "$DEPLOY_SCENARIO" ]; then
- echo "Deploy Scenario set to ${DEPLOY_SCENARIO}"
- if [ -e /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml ]; then
- sudo opnfv-deploy -v -d /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml -n /etc/opnfv-apex/network_settings.yaml --debug
+ if [ "$OPNFV_CLEAN" == 'yes' ]; then
+ if [[ $BUILD_DIRECTORY == *verify-master* ]]; then
+ sudo ./clean.sh
else
- echo "File does not exist /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml"
- exit 1
+ sudo opnfv-clean
fi
- else
- echo "Deploy scenario not set!"
- exit 1
- fi
+ fi
+ # initiate virtual deployment
+ echo "Deploy Scenario set to ${DEPLOY_SCENARIO}"
+ if [ -e $DEPLOY_FILE ]; then
+ sudo $DEPLOY_CMD -v -d ${DEPLOY_FILE} -n $NETWORK_FILE --debug
else
- sudo opnfv-deploy -v
+ echo "File does not exist /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml"
+ exit 1
fi
echo
echo "--------------------------------------------------------"
diff --git a/jjb/compass4nfv/compass-ci-jobs.yml b/jjb/compass4nfv/compass-ci-jobs.yml
index eb9f58a84..40f17b889 100644
--- a/jjb/compass4nfv/compass-ci-jobs.yml
+++ b/jjb/compass4nfv/compass-ci-jobs.yml
@@ -23,15 +23,22 @@
# brahmaputra
#--------------------------------
- huawei-us-deploy-bare-1:
+ os-version: 'trusty'
<<: *brahmaputra
- huawei-virtual:
+ os-version: 'trusty'
<<: *brahmaputra
#--------------------------------
# master
#--------------------------------
+ - huawei-us-deploy-bare-2:
+ os-version: 'centos7'
+ <<: *master
- intel-pod8:
+ os-version: 'trusty'
<<: *master
- huawei-virtual:
+ os-version: 'trusty'
<<: *master
scenario:
@@ -41,6 +48,9 @@
- 'os-odl_l2-nofeature-ha':
disabled: false
auto-trigger-name: 'compass-{scenario}-{pod}-trigger'
+ - 'os-odl_l3-nofeature-ha':
+ disabled: false
+ auto-trigger-name: 'compass-{scenario}-{pod}-trigger'
- 'os-onos-nofeature-ha':
disabled: false
auto-trigger-name: 'compass-{scenario}-{pod}-trigger'
@@ -74,9 +84,6 @@
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
- - timeout:
- timeout: 360
- fail: true
parameters:
- project-parameter:
@@ -97,8 +104,9 @@
- trigger-builds:
- project: 'compass-deploy-{pod}-daily-{stream}'
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
DEPLOY_SCENARIO={scenario}
+ COMPASS_OS_VERSION={os-version}
same-node: true
block: true
- trigger-builds:
@@ -145,6 +153,9 @@
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: 120
+ abort: true
parameters:
- project-parameter:
@@ -168,11 +179,9 @@
builders:
- shell:
- !include-raw: ./compass-workspace-precleanup.sh
- - shell:
- !include-raw: ./compass-download-artifact.sh
+ !include-raw-escape: ./compass-download-artifact.sh
- shell:
- !include-raw: ./compass-deploy.sh
+ !include-raw-escape: ./compass-deploy.sh
publishers:
- archive:
@@ -199,23 +208,42 @@
choices:
- 'liberty'
- 'juno'
- - choice:
- name: COMPASS_OS_VERSION
- choices:
- - 'trusty'
- - 'centos7'
########################
# trigger macros
########################
- trigger:
+ name: 'compass-os-nosdn-nofeature-ha-huawei-us-deploy-bare-2-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'compass-os-odl_l2-nofeature-ha-huawei-us-deploy-bare-2-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'compass-os-odl_l3-nofeature-ha-huawei-us-deploy-bare-2-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'compass-os-onos-nofeature-ha-huawei-us-deploy-bare-2-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'compass-os-ocl-nofeature-ha-huawei-us-deploy-bare-2-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'compass-os-nosdn-nofeature-ha-huawei-us-deploy-bare-1-trigger'
triggers:
- timed: '0 3 * * * '
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-huawei-us-deploy-bare-1-trigger'
triggers:
- - timed: '0 20 * * *'
+ - timed: '0 21 * * *'
+- trigger:
+ name: 'compass-os-odl_l3-nofeature-ha-huawei-us-deploy-bare-1-trigger'
+ triggers:
+ - timed: ''
- trigger:
name: 'compass-os-onos-nofeature-ha-huawei-us-deploy-bare-1-trigger'
triggers:
@@ -223,36 +251,44 @@
- trigger:
name: 'compass-os-ocl-nofeature-ha-huawei-us-deploy-bare-1-trigger'
triggers:
- - timed: ''
+ - timed: '0 9 * * *'
- trigger:
name: 'compass-os-nosdn-nofeature-ha-intel-pod8-trigger'
triggers:
- - timed: ''
+ - timed: '0 3 * * *'
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-intel-pod8-trigger'
triggers:
+ - timed: '0 21 * * *'
+- trigger:
+ name: 'compass-os-odl_l3-nofeature-ha-intel-pod8-trigger'
+ triggers:
- timed: ''
- trigger:
name: 'compass-os-onos-nofeature-ha-intel-pod8-trigger'
triggers:
- - timed: ''
+ - timed: '0 15 * * *'
- trigger:
name: 'compass-os-ocl-nofeature-ha-intel-pod8-trigger'
triggers:
- - timed: ''
+ - timed: '0 9 * * *'
- trigger:
name: 'compass-os-nosdn-nofeature-ha-huawei-virtual-trigger'
triggers:
- - timed: ''
+ - timed: '0 3 * * *'
- trigger:
name: 'compass-os-odl_l2-nofeature-ha-huawei-virtual-trigger'
triggers:
- - timed: '0 16 * * *'
+ - timed: '0 21 * * *'
+- trigger:
+ name: 'compass-os-odl_l3-nofeature-ha-huawei-virtual-trigger'
+ triggers:
+ - timed: ''
- trigger:
name: 'compass-os-onos-nofeature-ha-huawei-virtual-trigger'
triggers:
- - timed: '0 16 * * *'
+ - timed: '0 15 * * *'
- trigger:
name: 'compass-os-ocl-nofeature-ha-huawei-virtual-trigger'
triggers:
- - timed: ''
+ - timed: '0 9 * * *'
diff --git a/jjb/compass4nfv/compass-deploy.sh b/jjb/compass4nfv/compass-deploy.sh
index 697a1d573..860f5da1b 100644
--- a/jjb/compass4nfv/compass-deploy.sh
+++ b/jjb/compass4nfv/compass-deploy.sh
@@ -6,24 +6,38 @@ echo "Starting the deployment on baremetal environment using $INSTALLER_TYPE. Th
echo "--------------------------------------------------------"
echo
+# source the properties file so we get OPNFV vars
+source $BUILD_DIRECTORY/latest.properties
+
+# echo the info about artifact that is used during the deployment
+echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
+
+if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
+ # for none-merge deployments
+ # checkout the commit that was used for building the downloaded artifact
+ # to make sure the ISO and deployment mechanism uses same versions
+ echo "Checking out $OPNFV_GIT_SHA1"
+ git checkout $OPNFV_GIT_SHA1 --quiet
+fi
+
echo 1 > /proc/sys/vm/drop_caches
export CONFDIR=$WORKSPACE/deploy/conf
export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
if [[ "$NODE_NAME" =~ "-vm" ]]; then
export NETWORK_CONF=$CONFDIR/vm_environment/$NODE_NAME/network.yml
- export DHA_CONF=$CONFDIR/vm_environment/${{DEPLOY_SCENARIO}}.yml
+ export DHA_CONF=$CONFDIR/vm_environment/${DEPLOY_SCENARIO}.yml
else
export INSTALL_NIC=eth1
export NETWORK_CONF=$CONFDIR/hardware_environment/$NODE_NAME/network.yml
- export DHA_CONF=$CONFDIR/hardware_environment/$NODE_NAME/${{DEPLOY_SCENARIO}}.yml
+ export DHA_CONF=$CONFDIR/hardware_environment/$NODE_NAME/${DEPLOY_SCENARIO}.yml
fi
cd $WORKSPACE
-export OS_VERSION=${{COMPASS_OS_VERSION}}
-export OPENSTACK_VERSION=${{COMPASS_OPENSTACK_VERSION}}
-./deploy.sh --dha ${{DHA_CONF}} --network ${{NETWORK_CONF}}
+export OS_VERSION=${COMPASS_OS_VERSION}
+export OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION}
+./deploy.sh --dha ${DHA_CONF} --network ${NETWORK_CONF}
if [ $? -ne 0 ]; then
echo "depolyment failed!"
deploy_ret=1
@@ -34,6 +48,6 @@ echo "--------------------------------------------------------"
echo "Done!"
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-sshpass -p root scp 2>/dev/null $ssh_options root@${{INSTALLER_IP}}:/var/ansible/run/openstack_${{COMPASS_OPENSTACK_VERSION}}-opnfv2/ansible.log ./ &> /dev/null
+sshpass -p root scp 2>/dev/null $ssh_options root@${INSTALLER_IP}:/var/ansible/run/openstack_${COMPASS_OPENSTACK_VERSION}-opnfv2/ansible.log ./ &> /dev/null
exit $deploy_ret
diff --git a/jjb/compass4nfv/compass-project-jobs.yml b/jjb/compass4nfv/compass-project-jobs.yml
index 8943afb37..ed748aacb 100644
--- a/jjb/compass4nfv/compass-project-jobs.yml
+++ b/jjb/compass4nfv/compass-project-jobs.yml
@@ -82,9 +82,12 @@
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: '**/*'
forbidden-file-paths:
- compare-type: ANT
- pattern: 'docs/**|.gitignore'
+ pattern: 'docs/**'
builders:
- trigger-builds:
@@ -116,9 +119,9 @@
builders:
- shell:
- !include-raw: ./compass-build.sh
+ !include-raw-escape: ./compass-build.sh
- shell:
- !include-raw: ./compass-deploy.sh
+ !include-raw-escape: ./compass-deploy.sh
publishers:
- archive:
@@ -157,11 +160,11 @@
builders:
- shell:
- !include-raw: ./compass-build.sh
+ !include-raw-escape: ./compass-build.sh
- shell:
- !include-raw: ./compass-upload-artifact.sh
+ !include-raw-escape: ./compass-upload-artifact.sh
- shell:
- !include-raw: ./compass-workspace-cleanup.sh
+ !include-raw-escape: ./compass-workspace-cleanup.sh
- job-template:
name: 'compass-build-ppa-{stream}'
@@ -194,7 +197,7 @@
builders:
- shell:
- !include-raw: ./compass-makeppa.sh
+ !include-raw-escape: ./compass-makeppa.sh
diff --git a/jjb/doctor/doctor.yml b/jjb/doctor/doctor.yml
index 167b696a3..b2cbb0242 100644
--- a/jjb/doctor/doctor.yml
+++ b/jjb/doctor/doctor.yml
@@ -53,4 +53,4 @@
pattern: 'tests/**'
builders:
- - shell: "[ -e tests/run.sh ] && ./tests/run.sh"
+ - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
diff --git a/jjb/fuel/fuel-build.sh b/jjb/fuel/fuel-build.sh
index 42e373cbc..eaf1f83e7 100755
--- a/jjb/fuel/fuel-build.sh
+++ b/jjb/fuel/fuel-build.sh
@@ -31,14 +31,17 @@ fi
# get current SHA1
CURRENT_SHA1=$(git rev-parse HEAD)
-if [[ "$CURRENT_SHA1" == "$LATEST_ISO_SHA1" ]]; then
+# 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 "An ISO has already been built for this commit"
echo " $LATEST_ISO_URL"
echo "Nothing new to build. Exiting."
touch $WORKSPACE/.noupload
exit 0
else
- echo "This commit has not been built yet. Proceeding with the build."
+ echo "This commit has not been built yet or forced build! Proceeding with the build."
/bin/rm -f $LATEST_ISO_PROPERTIES
echo
fi
diff --git a/jjb/fuel/fuel-ci-jobs.yml b/jjb/fuel/fuel-ci-jobs.yml
index 33c54eced..e1816b528 100644
--- a/jjb/fuel/fuel-ci-jobs.yml
+++ b/jjb/fuel/fuel-ci-jobs.yml
@@ -35,6 +35,8 @@
#--------------------------------
# master
#--------------------------------
+ - opnfv-jump-2:
+ <<: *master
- ericsson-pod1:
<<: *master
- ericsson-pod2:
@@ -46,22 +48,23 @@
#--------------------------------
scenario:
# HA scenarios
- - 'os-onos-nofeature-ha':
-# auto-trigger-name: 'fuel-{scenario}-{pod}-trigger'
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ - 'os-nosdn-nofeature-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l3-nofeature-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
+ - 'os-onos-nofeature-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-bgpvpn-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- - 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
+ - 'os-odl_l2-sfc-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
- 'os-nosdn-kvm-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- - 'os-nosdn-kvm_ovs-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
- 'os-nosdn-ovs-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
+ - 'os-nosdn-kvm_ovs-ha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- 'os-nosdn-vlan-ha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
@@ -82,6 +85,8 @@
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- 'os-odl_l2-bgpvpn-noha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ - 'os-odl_l2-sfc-noha':
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
jobs:
- 'fuel-{scenario}-{pod}-daily-{stream}'
@@ -134,7 +139,7 @@
same-node: true
block: true
- trigger-builds:
- - project: 'functest-fuel-{pod}-daily-{stream}'
+ - project: 'yardstick-fuel-{pod}-daily-{stream}'
current-parameters: false
predefined-parameters:
DEPLOY_SCENARIO={scenario}
@@ -145,7 +150,7 @@
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
- trigger-builds:
- - project: 'yardstick-fuel-{pod}-daily-{stream}'
+ - project: 'functest-fuel-{pod}-daily-{stream}'
current-parameters: false
predefined-parameters:
DEPLOY_SCENARIO={scenario}
@@ -226,74 +231,319 @@
########################
# trigger macros
########################
-# os-onos3-nofeature-ha trigger
+# os-nosdn-nofeature-ha trigger
+# CI PODs
+#-----------------------------------------------
+# LF POD2 Triggers running against master branch
+#-----------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 0 * * *'
- trigger:
- name: 'fuel-os-onos-nofeature-ha-opnfv-jump-2-trigger'
+ name: 'fuel-os-odl_l2-nofeature-ha-opnfv-jump-2-master-trigger'
triggers:
- - timed: '0 20 * * *'
+ - timed: '0 3 * * *'
- trigger:
- name: 'fuel-os-onos-nofeature-ha-ericsson-pod1-trigger'
+ name: 'fuel-os-odl_l3-nofeature-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 6 * * *'
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 9 * * *'
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 12 * * *'
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 15 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 18 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-opnfv-jump-2-master-trigger'
+ triggers:
+ - timed: '0 21 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-kvm-noha-opnfv-jump-2-master-trigger'
triggers:
- timed: ''
+#-----------------------------------------------
+# Ericsson POD2 Triggers running against brahmaputra branch
+#-----------------------------------------------
- trigger:
- name: 'fuel-os-onos-nofeature-ha-ericsson-pod2-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 12 * * *'
+- trigger:
+ name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 15 * * *'
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 18 * * *'
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 21 * * *'
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 0 * * *'
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 3 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 6 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: '0 9 * * *'
+- trigger:
+ name: 'fuel-os-nosdn-kvm-noha-ericsson-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+#-----------------------------------------------
+# Triggers for other PODs
+#-----------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+# os-nosdn-kvm-ha trigger
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-virtual-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-nofeature-ha-virtual-trigger'
+ name: 'fuel-os-nosdn-kvm-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
# os-odl_l2-nofeature-ha trigger
- trigger:
- name: 'fuel-os-odl_l2-nofeature-ha-opnfv-jump-2-trigger'
+ name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod1-master-trigger'
triggers:
- - timed: '0 0 * * *'
+ - timed: ''
- trigger:
- name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod1-trigger'
+ name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod2-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod2-trigger'
+ name: 'fuel-os-odl_l2-nofeature-ha-virtual-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l2-nofeature-ha-virtual-trigger'
+ name: 'fuel-os-odl_l2-nofeature-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-nofeature-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
# os-odl_l3-nofeature-ha trigger
- trigger:
- name: 'fuel-os-odl_l3-nofeature-ha-opnfv-jump-2-trigger'
+ name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l3-nofeature-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+# os-onos-nofeature-ha trigger
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-onos-nofeature-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+
+# os-nosdn-ovs-ha trigger
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-virtual-master-trigger'
triggers:
- - timed: '0 4 * * *'
+ - timed: ''
- trigger:
- name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod1-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-opnfv-jump-2-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l3-nofeature-ha-ericsson-pod2-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-ericsson-pod1-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l3-nofeature-ha-virtual-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
# os-odl_l2-bgpvpn-ha trigger
- trigger:
- name: 'fuel-os-odl_l2-bgpvpn-ha-opnfv-jump-2-trigger'
+ name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-bgpvpn-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+# os-odl_l2-sfc-ha trigger
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-ericsson-pod2-master-trigger'
triggers:
- - timed: '0 8 * * *'
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-opnfv-jump-2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-ericsson-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-odl_l2-sfc-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+# os-nosdn-kvm-ha trigger
+- trigger:
+ name: 'fuel-os-nosdn-kvm-noha-ericsson-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-noha-ericsson-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-kvm-noha-virtual-master-trigger'
+ triggers:
+ - timed: ''
- trigger:
- name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod1-trigger'
+ name: 'fuel-os-nosdn-kvm-noha-opnfv-jump-2-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l2-bgpvpn-ha-ericsson-pod2-trigger'
+ name: 'fuel-os-nosdn-kvm-noha-ericsson-pod1-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl_l2-bgpvpn-ha-virtual-trigger'
+ name: 'fuel-os-nosdn-kvm-noha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
diff --git a/jjb/fuel/fuel-deploy.sh b/jjb/fuel/fuel-deploy.sh
index 62f2340a8..bab6151d8 100755
--- a/jjb/fuel/fuel-deploy.sh
+++ b/jjb/fuel/fuel-deploy.sh
@@ -88,4 +88,57 @@ $DEPLOY_COMMAND
echo
echo "--------------------------------------------------------"
-echo "Done!"
+echo "Deployment is done successfully!"
+
+# Quick and dirty fix for SFC scenatio - will be fixed properly post-release
+if [[ ! "$DEPLOY_SCENARIO" =~ "os-odl_l2-sfc" ]]; then
+ exit 0
+fi
+
+echo
+echo "SFC Scenario is deployed"
+echo
+
+# The stuff below is here temporarily and will be fixed once the release is out
+# The stuff below is here temporarily and will be fixed once the release is out
+export FUEL_MASTER_IP=10.20.0.2
+export TACKER_SCRIPT_URL="https://git.opnfv.org/cgit/fuel/plain/prototypes/sfc_tacker/poc.tacker-up.sh?h=${GIT_BRANCH#*/}"
+export CONTROLLER_NODE_IP=$(sshpass -pr00tme /usr/bin/ssh -o UserKnownHostsFile=/dev/null \
+ -o StrictHostKeyChecking=no root@$FUEL_MASTER_IP 'fuel node list' | \
+ grep opendaylight | cut -d'|' -f5)
+
+# we can't do much if we do not have the controller IP
+if [[ ! "$CONTROLLER_NODE_IP" =~ "10.20.0" ]]; then
+ echo "Unable to retrieve controller IP"
+ exit 1
+fi
+
+echo
+echo "Copying and executing poc.tacker-up.sh script on controller node $CONTROLLER_NODE_IP"
+echo
+
+expect << END
+spawn /usr/bin/ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root $::env(FUEL_MASTER_IP)
+expect {
+ -re ".*sword.*" {
+ exp_send "r00tme\r"
+ }
+}
+expect "# "
+send "/usr/bin/ssh -l root $::env(CONTROLLER_NODE_IP)\r"
+expect "# "
+send "sudo apt-get install -y git\r"
+expect "# "
+send "/bin/mkdir -p /root/sfc-poc && cd /root/sfc-poc\r"
+expect "# "
+send "git clone https://gerrit.opnfv.org/gerrit/fuel && cd fuel\r"
+expect "# "
+send "git fetch https://gerrit.opnfv.org/gerrit/fuel refs/changes/97/10597/2 && git checkout FETCH_HEAD\r"
+expect "# "
+send "/bin/bash /root/sfc-poc/fuel/prototypes/sfc_tacker/poc.tacker-up.sh\r"
+expect "# "
+send "exit\r"
+expect "Connection to $::env(CONTROLLER_NODE_IP) closed. "
+send "exit\r"
+expect "Connection to $::env(FUEL_MASTER_IP) closed. "
+END
diff --git a/jjb/fuel/fuel-download-artifact.sh b/jjb/fuel/fuel-download-artifact.sh
index a3769b112..d78ddc5ba 100755
--- a/jjb/fuel/fuel-download-artifact.sh
+++ b/jjb/fuel/fuel-download-artifact.sh
@@ -8,7 +8,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
set -o errexit
-set -o nounset
set -o pipefail
if [[ "$JOB_NAME" =~ "merge" ]]; then
@@ -31,15 +30,22 @@ source latest.properties
OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/}
echo "Using $OPNFV_ARTIFACT for deployment"
-# check if we already have the ISO to avoid redownload
-# disabled for the timebeing - needs adjustments
-#ISO_STORE=$HOME/opnfv/iso_store/fuel
-#if [[ -f "$ISO_STORE/$OPNFV_ARTIFACT" ]]; then
-# echo "ISO already exists. Skipping the download"
-# ln -s $ISO_STORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
-# ls -al $WORKSPACE/opnfv.iso
-# exit 0
-#fi
+# using ISOs for verify & merge jobs from local storage will be enabled later
+if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
+ # check if we already have the ISO to avoid redownload
+ ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
+ if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
+ echo "ISO exists locally. Skipping the download and using the file from ISO store"
+ ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
+ echo "--------------------------------------------------------"
+ echo
+ ls -al $WORKSPACE/opnfv.iso
+ echo
+ echo "--------------------------------------------------------"
+ echo "Done!"
+ exit 0
+ fi
+fi
# log info to console
echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
diff --git a/jjb/fuel/fuel-project-jobs.yml b/jjb/fuel/fuel-project-jobs.yml
index e42aa9012..d1855f86e 100644
--- a/jjb/fuel/fuel-project-jobs.yml
+++ b/jjb/fuel/fuel-project-jobs.yml
@@ -44,6 +44,12 @@
project: '{project}'
- 'ericsson-build-defaults'
- '{installer}-defaults'
+ - choice:
+ name: FORCE_BUILD
+ choices:
+ - 'false'
+ - 'true'
+ description: "Force build even if there is no changes in fuel repo. Default false"
- fuel-project-parameter:
gs-pathname: '{gs-pathname}'
diff --git a/jjb/fuel/fuel-upload-artifact.sh b/jjb/fuel/fuel-upload-artifact.sh
index cf74eb459..47cf8985c 100755
--- a/jjb/fuel/fuel-upload-artifact.sh
+++ b/jjb/fuel/fuel-upload-artifact.sh
@@ -7,7 +7,6 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-set -o nounset
set -o pipefail
# check if we built something
@@ -17,14 +16,30 @@ if [ -f $WORKSPACE/.noupload ]; then
exit 0
fi
-# log info to console
-echo
-echo "Uploading the $INSTALLER_TYPE artifact. This could take some time..."
-echo
-
# source the opnfv.properties to get ARTIFACT_VERSION
source $WORKSPACE/opnfv.properties
+# storing ISOs for verify & merge jobs will be done once we get the disk array
+if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
+ # store ISO locally on NFS first
+ ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
+ if [[ -d "$ISOSTORE" ]]; then
+ # remove all but most recent 5 ISOs first to keep iso_mount clean & tidy
+ cd $ISOSTORE
+ ls -tp | grep -v '/' | tail -n +6 | xargs -d '\n' /bin/rm -f --
+
+ # store ISO
+ echo "Storing $INSTALLER_TYPE artifact on NFS..."
+ /bin/cp -f $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso \
+ $ISOSTORE/opnfv-$OPNFV_ARTIFACT_VERSION.iso
+ fi
+fi
+
+# log info to console
+echo "Uploading $INSTALLER_TYPE artifact. This could take some time..."
+echo
+
+cd $WORKSPACE
# upload artifact and additional files to google storage
gsutil cp $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso \
gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
diff --git a/jjb/functest/functest-ci-jobs.yml b/jjb/functest/functest-ci-jobs.yml
index 2e95e9f12..90b5a67d4 100644
--- a/jjb/functest/functest-ci-jobs.yml
+++ b/jjb/functest/functest-ci-jobs.yml
@@ -13,10 +13,12 @@
stream: master
branch: '{stream}'
gs-pathname: ''
+ docker-tag: 'latest'
brahmaputra: &brahmaputra
stream: brahmaputra
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
+ docker-tag: 'brahmaputra.1.0'
#--------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
#--------------------------------
@@ -26,12 +28,12 @@
- opnfv-jump-1:
installer: apex
<<: *brahmaputra
- - opnfv-jump-2:
- installer: fuel
- <<: *brahmaputra
- intel-pod5:
installer: joid
<<: *brahmaputra
+ - orange-pod2:
+ installer: joid
+ <<: *brahmaputra
- huawei-us-deploy-bare-1:
installer: compass
<<: *brahmaputra
@@ -41,6 +43,9 @@
- ericsson-pod2:
installer: fuel
<<: *brahmaputra
+ - opnfv-jump-2:
+ installer: fuel
+ <<: *brahmaputra
- virtual:
installer: fuel
<<: *brahmaputra
@@ -53,6 +58,9 @@
#--------------------------------
# master
#--------------------------------
+ - opnfv-jump-2:
+ installer: fuel
+ <<: *master
- intel-pod6:
installer: joid
<<: *master
@@ -65,9 +73,6 @@
- ericsson-pod1:
installer: fuel
<<: *master
- - ericsson-pod2:
- installer: fuel
- <<: *master
- orange-test1:
installer: fuel
<<: *master
@@ -108,6 +113,9 @@
wrappers:
- build-name:
name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: 400
+ abort: true
parameters:
- project-parameter:
@@ -118,6 +126,10 @@
- string:
name: DEPLOY_SCENARIO
default: 'os-odl_l2-nofeature-ha'
+ - string:
+ name: DOCKER_TAG
+ default: '{docker-tag}'
+ description: 'Tag to pull docker image'
- functest-parameter:
gs-pathname: '{gs-pathname}'
@@ -199,12 +211,10 @@
- shell: |
#!/bin/bash
set +e
- flag=""
- if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
- flag="-r"
- fi
+ flags="-s"
+ [[ "$PUSH_RESULTS_TO_DB" == "true" ]] && flags+=" -r"
echo "Functest: run $FUNCTEST_SUITE_NAME"
- cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME ${flag}"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME ${flags}"
container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
docker exec $container_id $cmd
@@ -214,12 +224,9 @@
- shell: |
#!/bin/bash
set +e
- flag=""
- if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
- flag="-r"
- fi
- echo "Functest: running all the tests"
- cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh ${flag}"
+ flags="-s"
+ [[ "$PUSH_RESULTS_TO_DB" == "true" ]] && flags+=" -r"
+ cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh ${flags}"
container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
docker exec $container_id $cmd
@@ -249,14 +256,14 @@
echo "Functest: Start Docker and prepare environment"
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
-e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
- -e CI_DEBUG=${CI_DEBUG}"
-
- dir_result="${HOME}/opnfv/functest/results/"
+ -e BUILD_TAG=${BUILD_TAG} -e CI_DEBUG=${CI_DEBUG}"
+ branch=${GIT_BRANCH##*/}
+ dir_result="${HOME}/opnfv/functest/results/${branch}"
mkdir -p ${dir_result}
sudo rm -rf ${dir_result}/*
res_volume="-v ${dir_result}:/home/opnfv/functest/results"
- docker pull opnfv/functest:latest >$redirect
+ docker pull opnfv/functest:$DOCKER_TAG >$redirect
cmd="sudo docker run --privileged=true -id ${envs} ${labconfig} ${sshkey} ${res_volume} opnfv/functest:latest /bin/bash"
echo "Functest: Running docker run command: ${cmd}"
${cmd}
diff --git a/jjb/joid/joid-ci-jobs.yml b/jjb/joid/joid-ci-jobs.yml
index 909a885ab..685e6fb6c 100644
--- a/jjb/joid/joid-ci-jobs.yml
+++ b/jjb/joid/joid-ci-jobs.yml
@@ -28,6 +28,8 @@
pod:
- intel-pod5:
<<: *brahmaputra
+ - orange-pod2:
+ <<: *brahmaputra
- virtual:
<<: *brahmaputra
#--------------------------------
@@ -47,13 +49,13 @@
- 'os-nosdn-nofeature-noha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-ha':
- auto-trigger-name: 'joid-{scenario}-{pod}-trigger'
+ auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
+ - 'os-onos-nofeature-ha':
+ auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
- 'os-odl_l2-nofeature-noha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- - 'os-onos-nofeature-ha':
- auto-trigger-name: 'joid-{scenario}-{pod}-trigger'
- 'os-onos-nofeature-noha':
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
- 'os-ocl-nofeature-ha':
@@ -190,43 +192,134 @@
########################
# trigger macros
########################
+# os-nosdn-nofeature-ha trigger - branch: master
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod5-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-intel-pod5-master-trigger'
triggers:
- - timed: '0 2 * * *'
+ - timed: ''
+- trigger:
+ name: 'joid-os-nosdn-nofeature-ha-intel-pod6-master-trigger'
+ triggers:
+ - timed: '#0 2 * * *'
+- trigger:
+ name: 'joid-os-nosdn-nofeature-ha-orange-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-nosdn-nofeature-ha-juniper-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-nosdn-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+# os-nosdn-nofeature-ha trigger - branch: stable/brahmaputra
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-intel-pod6-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-intel-pod5-brahmaputra-trigger'
triggers:
- timed: '0 2 * * *'
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-orange-pod2-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-intel-pod6-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-juniper-pod1-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-orange-pod2-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-odl_l2-nofeature-ha-virtual-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-juniper-pod1-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod5-trigger'
+ name: 'joid-os-nosdn-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- - timed: '0 14 * * *'
+ - timed: ''
+
+
+# os-odl_l2-nofeature-ha trigger - branch: master
- trigger:
- name: 'joid-os-onos-nofeature-ha-intel-pod6-trigger'
+ name: 'joid-os-odl_l2-nofeature-ha-intel-pod5-master-trigger'
triggers:
- - timed: '0 14 * * *'
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-intel-pod6-master-trigger'
+ triggers:
+ - timed: '#0 10 * * *'
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-orange-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-juniper-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+
+# os-odl_l2-nofeature-ha trigger - branch: stable/brahmaputra
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-intel-pod5-brahmaputra-trigger'
+ triggers:
+ - timed: '0 10 * * *'
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-intel-pod6-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-orange-pod2-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-juniper-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-odl_l2-nofeature-ha-virtual-brahmaputra-trigger'
+ triggers:
+ - timed: ''
+
+# os-onos-nofeature-ha trigger - branch: master
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-intel-pod5-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-intel-pod6-master-trigger'
+ triggers:
+ - timed: '#0 18 * * *'
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-orange-pod2-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-juniper-pod1-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
+ triggers:
+ - timed: ''
+
+# os-onos-nofeature-ha trigger - branch: stable/brahmaputra
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-intel-pod5-brahmaputra-trigger'
+ triggers:
+ - timed: '0 18 * * *'
+- trigger:
+ name: 'joid-os-onos-nofeature-ha-intel-pod6-brahmaputra-trigger'
+ triggers:
+ - timed: ''
- trigger:
- name: 'joid-os-onos-nofeature-ha-orange-pod2-trigger'
+ name: 'joid-os-onos-nofeature-ha-orange-pod2-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-onos-nofeature-ha-juniper-pod1-trigger'
+ name: 'joid-os-onos-nofeature-ha-juniper-pod1-brahmaputra-trigger'
triggers:
- timed: ''
- trigger:
- name: 'joid-os-onos-nofeature-ha-virtual-trigger'
+ name: 'joid-os-onos-nofeature-ha-virtual-brahmaputra-trigger'
triggers:
- timed: ''
diff --git a/jjb/opnfv/installer-params.yml b/jjb/opnfv/installer-params.yml
index e03b4749e..57ca9864e 100644
--- a/jjb/opnfv/installer-params.yml
+++ b/jjb/opnfv/installer-params.yml
@@ -47,7 +47,7 @@
description: 'Installer used for deploying OPNFV on this POD'
- string:
name: EXTERNAL_NETWORK
- default: 'net04_ext'
+ default: 'admin_floating_net'
description: 'external network for test'
- parameter:
diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh
index 4089a6ff3..2b4ca907a 100644
--- a/jjb/opnfv/opnfv-docker.sh
+++ b/jjb/opnfv/opnfv-docker.sh
@@ -78,11 +78,13 @@ echo "Current branch: $branch"
if [[ "$branch" == "master" ]]; then
DOCKER_TAG="master"
+ DOCKER_BRANCH_TAG="latest"
else
git clone https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng
DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \
-n $DOCKER_REPO_NAME)
+ DOCKER_BRANCH_TAG="stable"
ret_val=$?
if [[ $ret_val -ne 0 ]]; then
@@ -94,11 +96,11 @@ echo "Tag version to be build and pushed: $DOCKER_TAG"
# Start the build
-echo "Building docker image: $DOCKER_REPO_NAME:latest"
+echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG"
-docker build --no-cache -t $DOCKER_REPO_NAME:latest .
+docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG .
echo "Creating tag '$DOCKER_TAG'..."
-docker tag -f $DOCKER_REPO_NAME:latest $DOCKER_REPO_NAME:$DOCKER_TAG
+docker tag -f $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG $DOCKER_REPO_NAME:$DOCKER_TAG
# list the images
echo "Available images are:"
@@ -110,8 +112,8 @@ if [[ "$PUSH_IMAGE" == "true" ]]; then
echo "--------------------------------------------------------"
echo
# Push to the Dockerhub repository
- echo "Pushing $DOCKER_REPO_NAME:latest ..."
- docker push $DOCKER_REPO_NAME:latest
+ echo "Pushing $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG ..."
+ docker push $DOCKER_REPO_NAME:$DOCKER_BRANCH_TAG
echo "Pushing $DOCKER_REPO_NAME:$DOCKER_TAG ..."
docker push $DOCKER_REPO_NAME:$DOCKER_TAG
diff --git a/jjb/opnfv/opnfv-docker.yml b/jjb/opnfv/opnfv-docker.yml
index 04dcf832f..135fb493a 100644
--- a/jjb/opnfv/opnfv-docker.yml
+++ b/jjb/opnfv/opnfv-docker.yml
@@ -39,7 +39,7 @@
description: "To enable/disable pushing the image to Dockerhub."
- string:
name: BASE_VERSION
- default: "brahmaputra.0"
+ default: "brahmaputra.1"
description: "Base version to be used."
- string:
name: DOCKER_REPO_NAME
diff --git a/jjb/opnfv/opnfv-docs.yml b/jjb/opnfv/opnfv-docs.yml
index eb6e58b92..f9d6a89bc 100644
--- a/jjb/opnfv/opnfv-docs.yml
+++ b/jjb/opnfv/opnfv-docs.yml
@@ -53,7 +53,7 @@
projects:
- project-compare-type: 'REG_EXP'
#Left out arno projects oscar|octopus|functest|genesis
- project-pattern: 'vswitchperf|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|octopus|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|cperf|functest'
+ project-pattern: 'vswitchperf|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|octopus|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|cperf|functest|genesisreq|models'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
@@ -91,7 +91,7 @@
comment-contains-value: 'remerge'
projects:
- project-compare-type: 'REG_EXP'
- project-pattern: 'vswitchperf|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|octopus|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|cperf|functest'
+ project-pattern: 'vswitchperf|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|octopus|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|cperf|functest|genesisreq|models'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
diff --git a/jjb/opnfv/slave-params.yml b/jjb/opnfv/slave-params.yml
index e1f9e448b..cc196737b 100644
--- a/jjb/opnfv/slave-params.yml
+++ b/jjb/opnfv/slave-params.yml
@@ -83,15 +83,15 @@
description: 'Git URL to use on this Jenkins Slave'
- parameter:
- name: 'intelpod2-jumphost-defaults'
+ name: 'intel-pod2-defaults'
parameters:
- node:
name: SLAVE_NAME
description: 'Slave name on Jenkins'
allowed-slaves:
- - intelpod2-jumphost
+ - intel-pod2
default-slaves:
- - intelpod2-jumphost
+ - intel-pod2
- string:
name: INSTALLER_VERSION
default: stable
@@ -232,6 +232,25 @@
description: 'Git URL to use on this Jenkins Slave'
- parameter:
+ name: 'huawei-us-deploy-bare-2-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - huawei-us-deploy-bare-2
+ default-slaves:
+ - huawei-us-deploy-bare-2
+ - string:
+ name: INSTALLER_VERSION
+ default: stable
+ description: 'Version of the installer to deploy'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
name: 'huawei-virtual-defaults'
parameters:
- label:
@@ -247,6 +266,28 @@
description: 'Git URL to use on this Jenkins Slave'
- parameter:
+ name: 'huawei-sh-test-2-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - huawei-sh-test-2
+ default-slaves:
+ - huawei-sh-test-2
+ - label:
+ name: SLAVE_LABEL
+ default: 'huawei-test'
+ - string:
+ name: INSTALLER_VERSION
+ default: stable
+ description: 'Version of the installer to deploy'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
name: 'opnfv-build-defaults'
parameters:
- label:
@@ -263,30 +304,45 @@
description: "Directory where the build artifact will be located upon the completion of the build."
- parameter:
- name: 'intel-us-build-1-defaults'
+ name: 'intel-build1-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - intel-build1
+ default-slaves:
+ - intel-build1
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
+ name: 'intel-build2-defaults'
parameters:
- node:
name: SLAVE_NAME
description: 'Slave name on Jenkins'
allowed-slaves:
- - intel-us-build-1
+ - intel-build2
default-slaves:
- - intel-us-build-1
+ - intel-build2
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
- parameter:
- name: 'intel-us-build-2-defaults'
+ name: 'intel-build3-defaults'
parameters:
- node:
name: SLAVE_NAME
description: 'Slave name on Jenkins'
allowed-slaves:
- - intel-us-build-2
+ - intel-build3
default-slaves:
- - intel-us-build-2
+ - intel-build3
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -399,15 +455,15 @@
description: 'Git URL to use on these Jenkins Slaves'
- parameter:
- name: 'intel-us-deploy-virtual-2-defaults'
+ name: 'intel-virtual2-defaults'
parameters:
- node:
name: SLAVE_NAME
description: 'Slave name on Jenkins'
allowed-slaves:
- - intel-us-deploy-virtual-2
+ - intel-virtual2
default-slaves:
- - intel-us-deploy-virtual-2
+ - intel-virtual2
- string:
name: INSTALLER_VERSION
default: latest
@@ -420,3 +476,41 @@
name: SSH_KEY
default: /root/.ssh/id_rsa
description: 'SSH key to use for Apex'
+
+- parameter:
+ name: 'dell-us-testing-bm-1-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - dell-us-testing-bm-1
+ default-slaves:
+ - dell-us-testing-bm-1
+ - string:
+ name: INSTALLER_VERSION
+ default: latest
+ description: 'Version of the installer to deploy'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
+ name: 'dell-us-deploying-bm3-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - dell-us-deploying-bm3
+ default-slaves:
+ - dell-us-deploying-bm3
+ - string:
+ name: INSTALLER_VERSION
+ default: latest
+ description: 'Version of the installer to deploy'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
diff --git a/jjb/ovsnfv/ovsnfv.yml b/jjb/ovsnfv/ovsnfv.yml
index d0c180c5b..8a119d9fb 100644
--- a/jjb/ovsnfv/ovsnfv.yml
+++ b/jjb/ovsnfv/ovsnfv.yml
@@ -24,7 +24,7 @@
project: '{project}'
- gerrit-parameter:
branch: '{branch}'
- - 'intel-us-build-2-defaults'
+ - 'intel-build2-defaults'
- string:
name: GS_URL
default: '$GS_BASE{gs-pathname}'
@@ -73,7 +73,7 @@
project: '{project}'
- gerrit-parameter:
branch: '{branch}'
- - 'intel-us-build-2-defaults'
+ - 'intel-build2-defaults'
- string:
name: GS_URL
default: '$GS_BASE{gs-pathname}'
@@ -114,7 +114,7 @@
parameters:
- project-parameter:
project: '{project}'
- - 'intel-us-build-2-defaults'
+ - 'intel-build2-defaults'
- string:
name: GS_URL
default: '$GS_BASE{gs-pathname}'
diff --git a/jjb/qtip/qtip.yml b/jjb/qtip/qtip-ci-jobs.yml
index 450ba938e..8dd0a4af0 100644
--- a/jjb/qtip/qtip.yml
+++ b/jjb/qtip/qtip-ci-jobs.yml
@@ -1,105 +1,81 @@
+####################################
+# job configuration for qtip
+####################################
- project:
- name: qtip
-
- project: '{name}'
-
- jobs:
- - 'qtip-verify-{stream}'
- - 'qtip-{installer_type}-{pod}-daily-{stream}'
-
+ name: qtip-ci-jobs
+
+ project: 'qtip'
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+ master: &master
+ stream: master
+ branch: '{stream}'
+ gs-pathname: ''
+ brahmaputra: &brahmaputra
+ stream: brahmaputra
+ branch: 'stable/{stream}'
+ gs-pathname: '{stream}'
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+# brahmaputra
+#--------------------------------
pod:
- dell-us-testing-bm-1:
- node: 'dell-us-testing-bm-1'
- installer_type: 'fuel'
- installer_ip: '10.20.0.2'
+ installer: compass
+ auto-trigger-name: 'qtip-daily-dell-us-testing-bm-1-trigger'
+ <<: *brahmaputra
+ - orange-pod2:
+ installer: joid
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *brahmaputra
- dell-us-deploying-bm3:
- node: 'dell-us-deploying-bm3'
- installer_type: 'fuel'
- installer_ip: '10.20.0.2'
-
-# only master branch is enabled at the moment to keep no of jobs sane
- stream:
- - master:
- branch: 'master'
- gs-pathname: ''
-# - brahmaputra:
-# branch: 'stable/brahmaputra'
-# gs-pathname: '/brahmaputra'
+ installer: fuel
+ auto-trigger-name: 'qtip-daily-dell-us-deploying-bm3-trigger'
+ <<: *brahmaputra
+
+#--------------------------------
+# master
+#--------------------------------
+ - juniper-pod1:
+ installer: joid
+ <<: *master
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+# - zte-build-1: #would be confirmed with the ZTE lab by tomorrow
+# installer: fuel
+# <<: *master
+
+#--------------------------------
+ jobs:
+ - 'qtip-{installer}-{pod}-daily-{stream}'
+################################
+# job templates
+################################
- job-template:
- name: 'qtip-verify-{stream}'
+ name: 'qtip-{installer}-{pod}-daily-{stream}'
+
+ disabled: false
parameters:
- project-parameter:
project: '{project}'
- - gerrit-parameter:
- branch: '{branch}'
- - 'opnfv-build-defaults'
+ - '{pod}-defaults'
+ - '{installer}-defaults'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-ha'
scm:
- - gerrit-trigger-scm:
- credentials-id: '{ssh-credentials}'
- refspec: '$GERRIT_REFSPEC'
- choosing-strategy: 'gerrit'
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: '{branch}'
triggers:
- - gerrit:
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
-
-- job-template:
- name: 'qtip-{installer_type}-{pod}-daily-{stream}'
-
- disabled: false
-
- node: '{node}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- - string:
- name: INSTALLER_TYPE
- default: '{installer_type}'
- description: "Installer name that is used for deployment."
- - string:
- name: INSTALLER_IP
- default: '{installer_ip}'
- description: "Installer IP"
- - string:
- name: NODE_NAME
- default: '{node}'
- description: "Name of the POD"
- - string:
- name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
- description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
-
- scm:
- - git-scm:
- credentials-id: '{ssh-credentials}'
- refspec: ''
- branch: master
+ - '{auto-trigger-name}'
builders:
- 'qtip-cleanup'
@@ -107,9 +83,9 @@
- 'qtip-run-suite'
- 'qtip-pushtoDB'
- triggers:
- - timed: '0 0,13,15,20 * * *'
-
+ publishers:
+ - email:
+ recipients: nauman.ahad@xflowresearch.com, mofassir.arif@xflowresearch.com, vikram@nvirters.com
###########################
#biuilder macros
@@ -123,7 +99,6 @@
envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} -e NODE_NAME=${NODE_NAME}"
suite="TEST_CASE=all"
docker pull opnfv/qtip:latest
-
cmd=" docker run -id -e $envs -e $suite opnfv/qtip:latest /bin/bash"
echo "Qtip: Running docker run command: ${cmd}"
${cmd}
@@ -191,16 +166,28 @@
done
fi
-- builder:
- name: qtip-fetch-os-cred
- builders:
- - shell: |
- #!/bin/bash
+#################
+#trigger macros
+#################
+
+- trigger:
+ name: 'qtip-daily-dell-us-deploying-bm3-trigger'
+ triggers:
+ - timed: '0 0 * * *'
+
+- trigger:
+ name: 'qtip-daily-dell-us-testing-bm-1-trigger'
+ triggers:
+ - timed: '0 3 * * *'
+
+#- trigger:
+# name: 'qtip-daily-juniper-build1-trigger'
+# triggers:
+# - timed : '0 0 * * *'
+
+#- trigger:
+# name: 'qtip-dailty-orange-fr-pod2-trigger'
+# triggers:
+# - timed : ' 0 0 * * *'
+
- echo $HOME
- echo $WORKSPACE
- cd $WORKSPACE
- git clone https://gerrit.opnfv.org/gerrit/releng
- cd $WORKSPACE/releng/utils
- #./fetch_os_creds.sh #To test the problem with creating the file in $HOME
- ./fetch_os_creds.sh -d $WORKSPACE/opnfv-stack.sh #To test if the file can be created in $WORKSPACE
diff --git a/jjb/qtip/qtip-project-jobs.yml b/jjb/qtip/qtip-project-jobs.yml
new file mode 100644
index 000000000..c77bac722
--- /dev/null
+++ b/jjb/qtip/qtip-project-jobs.yml
@@ -0,0 +1,58 @@
+- project:
+ name: qtip
+
+ project: '{name}'
+
+ jobs:
+ - 'qtip-verify-{stream}'
+
+# only master branch is enabled at the moment to keep no of jobs sane
+ stream:
+ - master:
+ branch: '{stream}'
+ gs-pathname: ''
+ - brahmaputra:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+
+- job-template:
+ name: 'qtip-verify-{stream}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - gerrit-parameter:
+ branch: '{branch}'
+ - 'opnfv-build-defaults'
+
+ scm:
+ - gerrit-trigger-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: '$GERRIT_REFSPEC'
+ choosing-strategy: 'gerrit'
+
+ triggers:
+ - gerrit:
+ trigger-on:
+ - patchset-created-event:
+ exclude-drafts: 'false'
+ exclude-trivial-rebase: 'false'
+ exclude-no-code-change: 'false'
+ - draft-published-event
+ - comment-added-contains-event:
+ comment-contains-value: 'recheck'
+ - comment-added-contains-event:
+ comment-contains-value: 'reverify'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: '{project}'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**|.gitignore'
+
+ builders:
+ - shell: |
+ echo "Nothing to verify!"
diff --git a/jjb/releng-macros.yaml b/jjb/releng-macros.yaml
index 5d9570705..b43a76d5f 100644
--- a/jjb/releng-macros.yaml
+++ b/jjb/releng-macros.yaml
@@ -195,7 +195,7 @@
echo "###########################"
echo
- gs_base="artifacts.opnfv.org/review"
+ gs_base="artifacts.opnfv.org/$PROJECT/review"
gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
local_path="upload/$GERRIT_CHANGE_NUMBER"
@@ -283,6 +283,13 @@
[[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+ gs_path="artifacts.opnfv.org/$PROJECT/review/$GERRIT_CHANGE_NUMBER"
+
+ if gsutil ls "gs://$gs_path" > /dev/null 2>&1 ; then
+ echo
+ echo "Deleting Out-of-dated Documents..."
+ gsutil -m rm -r "gs://$gs_path"
+ fi
gs_path="artifacts.opnfv.org/review/$GERRIT_CHANGE_NUMBER"
if gsutil ls "gs://$gs_path" > /dev/null 2>&1 ; then
diff --git a/jjb/yardstick/yardstick-ci-jobs.yml b/jjb/yardstick/yardstick-ci-jobs.yml
index 8a5546d80..9566651ff 100644
--- a/jjb/yardstick/yardstick-ci-jobs.yml
+++ b/jjb/yardstick/yardstick-ci-jobs.yml
@@ -13,10 +13,12 @@
stream: master
branch: '{stream}'
gs-pathname: ''
+ docker-tag: 'latest'
brahmaputra: &brahmaputra
stream: brahmaputra
branch: 'stable/{stream}'
gs-pathname: '{stream}'
+ docker-tag: 'brahmaputra.1.0'
#--------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
#--------------------------------
@@ -38,6 +40,11 @@
suite: daily
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
<<: *brahmaputra
+ - orange-pod2:
+ installer: joid
+ suite: daily
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *brahmaputra
- huawei-us-deploy-bare-1:
installer: compass
suite: daily
@@ -71,6 +78,11 @@
#--------------------------------
# master
#--------------------------------
+ - opnfv-jump-2:
+ installer: fuel
+ suite: daily
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+ <<: *master
- ericsson-pod1:
installer: fuel
suite: daily
@@ -121,6 +133,11 @@
suite: daily
auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
<<: *master
+ - huawei-sh-test-2:
+ installer: compass
+ suite: daily
+ auto-trigger-name: 'yardstick-daily-huawei-sh-test-2-trigger'
+ <<: *master
- virtual:
installer: joid
suite: daily
@@ -149,6 +166,9 @@
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: 180
+ abort: true
triggers:
- '{auto-trigger-name}'
@@ -163,6 +183,10 @@
name: DEPLOY_SCENARIO
default: 'os-odl_l2-nofeature-ha'
- string:
+ name: DOCKER_TAG
+ default: '{docker-tag}'
+ description: 'Tag to pull docker image'
+ - string:
name: YARDSTICK_SUITE_NAME
default: opnfv_${{NODE_NAME}}_{suite}.yaml
description: 'Path to test suite'
@@ -224,7 +248,7 @@
-e YARDSTICK_BRANCH=${GIT_BRANCH##origin/} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO}"
# Pull the latest image
- docker pull opnfv/yardstick >$redirect
+ docker pull opnfv/yardstick:$DOCKER_TAG >$redirect
# Run docker
cmd="sudo docker run ${opts} ${envs} ${labconfig} ${sshkey} opnfv/yardstick \
@@ -285,7 +309,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -293,7 +317,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -309,7 +333,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-i 10.118.36.90:8086'
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -317,7 +341,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-i 10.118.36.90:8086'
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -325,7 +349,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-r 213.77.62.197/results'
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -333,7 +357,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: '-r 213.77.62.197/results'
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -341,7 +365,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -357,7 +381,7 @@
parameters:
- string:
name: YARDSTICK_DB_BACKEND
- default: ''
+ default: '-i 104.197.68.199:8086'
description: 'Arguments to use in order to choose the backend DB'
- parameter:
@@ -376,6 +400,14 @@
default: ''
description: 'Arguments to use in order to choose the backend DB'
+- parameter:
+ name: 'yardstick-params-huawei-sh-test-2'
+ parameters:
+ - string:
+ name: YARDSTICK_DB_BACKEND
+ default: ''
+ description: 'Arguments to use in order to choose the backend DB'
+
#######################
## trigger macros
#######################
@@ -389,3 +421,8 @@
name: 'yardstick-vtcdaily-ericsson-pod1-trigger'
triggers:
- timed: '0 1 * * *'
+
+- trigger:
+ name: 'yardstick-daily-huawei-sh-test-2-trigger'
+ triggers:
+ - timed: '0 1 * * *'
diff --git a/jjb/yardstick/yardstick-project-jobs.yml b/jjb/yardstick/yardstick-project-jobs.yml
index bfe343f4f..f06bf7077 100644
--- a/jjb/yardstick/yardstick-project-jobs.yml
+++ b/jjb/yardstick/yardstick-project-jobs.yml
@@ -58,21 +58,9 @@
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o pipefail
-
- echo "Running unit tests..."
- cd $WORKSPACE
- virtualenv $WORKSPACE/yardstick_venv
- source $WORKSPACE/yardstick_venv/bin/activate
- easy_install -U setuptools
- python setup.py develop
- ./run_tests.sh
- - generate-api-docs-for-yardstick
- - upload-review-docs
- - shell: 'deactivate'
+ - yardstick-unit-tests-and-docs-build
+ - upload-under-review-docs-to-opnfv-artifacts
+ - report-docs-build-result-to-gerrit
- job-template:
name: 'yardstick-merge-{stream}'
@@ -108,6 +96,18 @@
branch-pattern: '**/{branch}'
builders:
+ - yardstick-unit-tests-and-docs-build
+ - upload-generated-docs-to-opnfv-artifacts
+ - report-docs-build-result-to-gerrit
+ - remove-old-docs-from-opnfv-artifacts
+
+################################
+# job builders
+################################
+
+- builder:
+ name: yardstick-unit-tests-and-docs-build
+ builders:
- shell: |
#!/bin/bash
set -o errexit
@@ -117,23 +117,23 @@
cd $WORKSPACE
virtualenv $WORKSPACE/yardstick_venv
source $WORKSPACE/yardstick_venv/bin/activate
+
+ # install python packages
easy_install -U setuptools
- python setup.py develop
- ./run_tests.sh
- - generate-api-docs-for-yardstick
- - upload-merged-docs
- - shell: 'deactivate'
+ easy_install -U pip
+ pip install -r ci/requirements.txt
+ pip install -e .
-################################
-# job builders
-################################
+ # unit tests
+ ./run_tests.sh
-- builder:
- name: generate-api-docs-for-yardstick
- builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o pipefail
+ pip install Sphinx==1.3.1 doc8 docutils sphinxcontrib-httpdomain
+ # generate api doc sources
sphinx-apidoc -o docs/apidocs yardstick
+
+ # build docs
+ git clone ssh://gerrit.opnfv.org:29418/releng
+ GERRIT_COMMENT=gerrit_comment.txt ./releng/utils/docs-build.sh
+
+ deactivate