set -o nounset
set -o pipefail
-trap cleanup_and_upload EXIT
-
-function upload_logs() {
- BIFROST_CONSOLE_LOG="${BUILD_URL}/consoleText"
- BIFROST_GS_URL=${BIFROST_LOG_URL/http:/gs:}
+git clone https://gerrit.opnfv.org/gerrit/releng-xci $WORKSPACE/releng-xci
- # Make sure the old landing page is gone in case
- # we break later on. We don't want to publish
- # stale information.
- # TODO: Maybe cleanup the entire $BIFROST_GS_URL directory
- # before we upload the new data.
- gsutil -q rm ${BIFROST_GS_URL}/index.html || true
+cd $WORKSPACE
+git fetch $PROJECT_REPO $GERRIT_REFSPEC && sudo git checkout FETCH_HEAD
- echo "Uploading collected bifrost build logs to ${BIFROST_LOG_URL}"
+# combine opnfv and upstream scripts/playbooks
+/bin/cp -rf $WORKSPACE/releng-xci/xci/infra/bifrost/* $WORKSPACE/
- if [[ -d ${WORKSPACE}/logs ]]; then
- pushd ${WORKSPACE}/logs &> /dev/null
- for x in *.log; do
- echo "Compressing and uploading $x"
- gsutil -q cp -Z ${x} ${BIFROST_GS_URL}/${x}
- done
- popd &> /dev/null
- fi
+cd $WORKSPACE/releng-xci
+cat > bifrost_test.sh<<EOF
+#!/bin/bash
+set -o errexit
+set -o nounset
+set -o pipefail
- echo "Generating the ${BIFROST_LOG_URL}/index.html landing page"
- cat > ${WORKSPACE}/index.html <<EOF
-<html>
-<h1>Build results for <a href=https://$GERRIT_NAME/#/c/$GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER>$GERRIT_NAME/$GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER</a></h1>
-<h2>Job: <a href=${BUILD_URL}>$JOB_NAME</a></h2>
-<ul>
-<li><a href=${BIFROST_LOG_URL}/build_log.txt>build_log.txt</a></li>
-EOF
+cd ~/bifrost
+# set path for XCI repository
+export XCI_PATH=~/bifrost/releng-xci
- if [[ -d ${WORKSPACE}/logs ]]; then
- pushd ${WORKSPACE}/logs &> /dev/null
- for x in *.log; do
- echo "<li><a href=${BIFROST_LOG_URL}/${x}>${x}</a></li>" >> ${WORKSPACE}/index.html
- done
- popd &> /dev/null
- fi
+# provision 3 VMs; xcimaster, controller, and compute
+./scripts/bifrost-provision.sh | ts
- cat >> ${WORKSPACE}/index.html << EOF
-</ul>
-</html>
+sudo -H -E virsh list
EOF
+chmod a+x bifrost_test.sh
- # Upload landing page
- echo "Uploading the landing page"
- gsutil -q cp ${WORKSPACE}/index.html ${BIFROST_GS_URL}/index.html
- rm -f ${WORKSPACE}/index.html
-
- # Finally, download and upload the entire build log so we can retain
- # as much build information as possible
- echo "Uploading the final console output"
- curl -s -L ${BIFROST_CONSOLE_LOG} > ${WORKSPACE}/build_log.txt
- gsutil -q cp -Z ${WORKSPACE}/build_log.txt ${BIFROST_GS_URL}/build_log.txt
- rm -f ${WORKSPACE}/build_log.txt
-}
-
-function fix_ownership() {
- if [ -z "${JOB_URL+x}" ]; then
- echo "Not running as part of Jenkins. Handle the logs manually."
- else
- # Make sure cache exists
- [[ ! -d ${HOME}/.cache ]] && mkdir ${HOME}/.cache
+# Fix up distros
+case ${DISTRO} in
+ xenial) VM_DISTRO=ubuntu ;;
+ centos7) VM_DISTRO=centos ;;
+ *suse*) VM_DISTRO=opensuse ;;
+esac
- sudo chown -R jenkins:jenkins $WORKSPACE
- sudo chown -R jenkins:jenkins ${HOME}/.cache
- fi
-}
+export XCI_BUILD_CLEAN_VM_OS=false
+export XCI_UPDATE_CLEAN_VM_OS=true
-function cleanup_and_upload() {
- original_exit=$?
- echo "Job exit code: $original_exit"
- # Turn off errexit
- set +o errexit
- fix_ownership
- upload_logs
- exit $original_exit
-}
+./xci/scripts/vm/start-new-vm.sh $VM_DISTRO
-# check distro to see if we support it
-if [[ ! "$DISTRO" =~ (xenial|centos7|suse) ]]; then
- echo "Distro $DISTRO is not supported!"
- exit 1
-fi
+rsync -a -e "ssh -F $HOME/.ssh/${VM_DISTRO}-xci-vm-config" $WORKSPACE/ ${VM_DISTRO}_xci_vm:~/bifrost
-# remove previously cloned repos
-/bin/rm -rf $WORKSPACE/bifrost $WORKSPACE/releng-xci
-
-# Fix up permissions
-fix_ownership
-
-# clone all the repos first and checkout the patch afterwards
-git clone https://git.openstack.org/openstack/bifrost $WORKSPACE/bifrost
-git clone https://gerrit.opnfv.org/gerrit/releng-xci $WORKSPACE/releng-xci
-
-# checkout the patch
-cd $CLONE_LOCATION
-git fetch $PROJECT_REPO $GERRIT_REFSPEC && sudo git checkout FETCH_HEAD
-
-# combine opnfv and upstream scripts/playbooks
-/bin/cp -rf $WORKSPACE/releng-xci/bifrost/* $WORKSPACE/bifrost/
-
-# cleanup remnants of previous deployment
-cd $WORKSPACE/bifrost
-sudo -H -E ./scripts/destroy-env.sh
-
-# provision 3 VMs; xcimaster, controller, and compute
-cd $WORKSPACE/bifrost
-./scripts/bifrost-provision.sh
-
-# list the provisioned VMs
-cd $WORKSPACE/bifrost
-source env-vars
-ironic node-list
-sudo -H -E virsh list
+ssh -F $HOME/.ssh/${VM_DISTRO}-xci-vm-config ${VM_DISTRO}_xci_vm "cd ~/bifrost/releng-xci && ./bifrost_test.sh"