Change libcloud imports to remove deprecated module paths. Actually move the pip cache into the place devstack expects on the devstack host. As soon as the new version of openstack-ci is checked out, start using it for the scripts in the currently running test, so that we are testing as much of the test infrastructure itself as possible. Allow the update and launch scripts to have the server/image name specified in an environment variable for easier testing/upgrading. Change-Id: Iee0a946afa80929e99c08e5a6b0504c1d8dd0093
101 lines
2.8 KiB
Bash
Executable File
101 lines
2.8 KiB
Bash
Executable File
#!/bin/bash -x
|
|
|
|
# Gate commits to several projects on a VM running those projects
|
|
# configured by devstack.
|
|
|
|
# Copyright (C) 2011 OpenStack LLC.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
#
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
PROJECTS="openstack/nova openstack/glance openstack/keystone openstack/python-novaclient openstack-dev/devstack openstack/openstack-ci"
|
|
|
|
# Set this to 1 to always keep the host around
|
|
ALWAYS_KEEP=${ALWAYS_KEEP:-0}
|
|
|
|
cd $WORKSPACE
|
|
mkdir -p logs
|
|
rm -f logs/*
|
|
|
|
for PROJECT in $PROJECTS
|
|
do
|
|
echo "Setting up $PROJECT"
|
|
SHORT_PROJECT=`basename $PROJECT`
|
|
if [[ ! -e $SHORT_PROJECT ]]; then
|
|
echo " Need to clone"
|
|
git clone https://review.openstack.org/p/$PROJECT
|
|
fi
|
|
cd $SHORT_PROJECT
|
|
|
|
BRANCH=$GERRIT_BRANCH
|
|
|
|
# See if this project has this branch, if not, use master
|
|
git remote update
|
|
if ! git branch -a |grep remotes/origin/$GERRIT_BRANCH>/dev/null; then
|
|
BRANCH=master
|
|
fi
|
|
git reset --hard
|
|
git clean -x -f
|
|
git checkout $BRANCH
|
|
git reset --hard remotes/origin/$BRANCH
|
|
git clean -x -f
|
|
|
|
if [[ $GERRIT_PROJECT == $PROJECT ]]; then
|
|
echo " Merging proposed change"
|
|
git fetch https://review.openstack.org/p/$PROJECT $GERRIT_REFSPEC
|
|
git merge FETCH_HEAD
|
|
else
|
|
echo " Updating from origin"
|
|
git pull --ff-only origin $BRANCH
|
|
fi
|
|
cd $WORKSPACE
|
|
done
|
|
|
|
# Set CI_SCRIPT_DIR to point to opestack-ci in the workspace so that
|
|
# we are testing the proposed change from this point forward.
|
|
CI_SCRIPT_DIR=$WORKSPACE/openstack-ci/slave-scripts
|
|
|
|
eval `$CI_SCRIPT_DIR/devstack-vm-fetch.py` || exit $?
|
|
|
|
scp -C $CI_SCRIPT_DIR/devstack-vm-gate-host.sh $NODE_IP_ADDR:
|
|
RETVAL=$?
|
|
if [ $RETVAL != 0 ]; then
|
|
echo "Deleting host"
|
|
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
|
|
exit $RETVAL
|
|
fi
|
|
|
|
scp -C -q -r $WORKSPACE/ $NODE_IP_ADDR:workspace
|
|
RETVAL=$?
|
|
if [ $RETVAL != 0 ]; then
|
|
echo "Deleting host"
|
|
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
|
|
exit $RETVAL
|
|
fi
|
|
|
|
ssh $NODE_IP_ADDR ./devstack-vm-gate-host.sh
|
|
RETVAL=$?
|
|
# No matter what, archive logs
|
|
scp -C -q $NODE_IP_ADDR:/var/log/syslog $WORKSPACE/logs/syslog.txt
|
|
# Now check whether the run was a success
|
|
if [ $RETVAL = 0 ] && [ $ALWAYS_KEEP = 0 ]; then
|
|
echo "Deleting host"
|
|
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
|
|
exit $RETVAL
|
|
else
|
|
#echo "Giving host to developer"
|
|
#$CI_SCRIPT_DIR/devstack-vm-give.py $NODE_UUID
|
|
exit $RETVAL
|
|
fi
|