summaryrefslogtreecommitdiffstats
path: root/ci/deploy.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ci/deploy.sh')
-rwxr-xr-xci/deploy.sh83
1 files changed, 83 insertions, 0 deletions
diff --git a/ci/deploy.sh b/ci/deploy.sh
new file mode 100755
index 0000000..4bdce89
--- /dev/null
+++ b/ci/deploy.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+#
+# Copyright (c) Authors of Clover
+#
+# 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
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+set -ex
+
+CLOVER_BASE_DIR=$(cd ${BASH_SOURCE[0]%/*}/..;pwd)
+CLOVER_WORK_DIR=$CLOVER_BASE_DIR/work
+MASTER_NODE_NAME="master"
+SSH_OPTIONS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+K8S_ISTIO_DEPLOY_TIMEOUT=3600
+
+FUNCTEST_IMAGE="opnfv/functest-kubernetes-features:amd64-gambia"
+INSTALLER_TYPE="container4nfv"
+DEPLOY_SCENARIO="k8-istio-clover"
+
+mkdir -p $CLOVER_WORK_DIR
+cd $CLOVER_WORK_DIR
+
+# Fetch container4nfv source code
+if [ -d container4nfv ]; then
+ rm -rf container4nfv
+fi
+git clone https://git.opnfv.org/container4nfv/
+cd container4nfv
+
+# Create kubernetes + istio env
+timeout $K8S_ISTIO_DEPLOY_TIMEOUT ./src/vagrant/kubeadm_istio/deploy.sh
+
+# Fetch kube-master node info
+cd src/vagrant/kubeadm_istio
+MASTER_NODE_HOST=$(vagrant ssh-config $MASTER_NODE_NAME | awk '/HostName /{print $2}')
+MASTER_NODE_USER=$(vagrant ssh-config $MASTER_NODE_NAME | awk '/User /{print $2}')
+MASTER_NODE_KEY=$(vagrant ssh-config $MASTER_NODE_NAME | awk '/IdentityFile /{print $2}')
+
+# Push clover source code to kube-master node
+ssh $SSH_OPTIONS -i $MASTER_NODE_KEY ${MASTER_NODE_USER}@${MASTER_NODE_HOST} rm -rf clover
+scp $SSH_OPTIONS -i $MASTER_NODE_KEY -r $CLOVER_BASE_DIR ${MASTER_NODE_USER}@${MASTER_NODE_HOST}:clover
+
+# Deploy SDC sample for Functest test
+ssh $SSH_OPTIONS -i $MASTER_NODE_KEY ${MASTER_NODE_USER}@${MASTER_NODE_HOST} ./clover/ci/sdc_setup.sh
+
+echo "Clover deploy complete!"
+
+###############################################################################
+# Prepare and run functest.
+# TODO: Use jenkins to trigger functest job.
+
+# Setup configuration file for running functest
+mkdir -p $CLOVER_WORK_DIR/functest/results
+scp $SSH_OPTIONS -i $MASTER_NODE_KEY \
+ ${MASTER_NODE_USER}@${MASTER_NODE_HOST}:.kube/config \
+ $CLOVER_WORK_DIR/functest/kube-config
+RC_FILE=$CLOVER_WORK_DIR/functest/k8.creds
+echo "export KUBERNETES_PROVIDER=local" > $RC_FILE
+KUBE_MASTER_URL=$(cat $CLOVER_WORK_DIR/functest/kube-config | grep server | awk '{print $2}')
+echo "export KUBE_MASTER_URL=$KUBE_MASTER_URL" >> $RC_FILE
+KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL | awk -F'https://|:[0-9]+' '$0=$2')
+echo "export KUBE_MASTER_IP=$KUBE_MASTER_IP" >> $RC_FILE
+
+# Restart docker service in case Container4NFV CI job delete docker0 bridge
+systemctl restart docker
+
+# Run functest
+sudo docker pull $FUNCTEST_IMAGE
+sudo docker run --rm \
+ -e INSTALLER_TYPE=$INSTALLER_TYPE \
+ -e NODE_NAME=$NODE_NAME \
+ -e DEPLOY_SCENARIO=$DEPLOY_SCENARIO \
+ -e BUILD_TAG=$BUILD_TAG \
+ -v $RC_FILE:/home/opnfv/functest/conf/env_file \
+ -v $CLOVER_WORK_DIR/functest/results:/home/opnfv/functest/results \
+ -v $CLOVER_WORK_DIR/functest/kube-config:/root/.kube/config \
+ $FUNCTEST_IMAGE \
+ /bin/bash -c 'run_tests -r -t all'
+
+echo "Clover run functest complete!"
+###############################################################################