Add TOCI_GIT_CHECKOUT option.

Added a new option to control whether toci checks out the
various tripleO git repos it uses (incubator, diskimage_builder, etc.).

Also, internally reworks the git clone directory names we so they just
use the project names and not the GitHub org names as well.

These changes should facilitate easier integration within the upstream
jenkins.
This commit is contained in:
Dan Prince 2013-05-21 14:58:06 -04:00
parent 2379b2b387
commit 2a620be9b0
6 changed files with 59 additions and 35 deletions

View File

@ -10,6 +10,7 @@ TOCI_UPLOAD=0
TOCI_RESULTS_SERVER=1.2.3.4 TOCI_RESULTS_SERVER=1.2.3.4
TOCI_CLEANUP=1 TOCI_CLEANUP=1
TOCI_REMOVE=1 TOCI_REMOVE=1
TOCI_GIT_CHECKOUT=1
export http_proxy=http://1.2.3.4:3128 export http_proxy=http://1.2.3.4:3128
export https_proxy=http://1.2.3.4:3128 export https_proxy=http://1.2.3.4:3128
``` ```

27
toci.sh
View File

@ -5,10 +5,18 @@
export STARTTIME=$(date) export STARTTIME=$(date)
export TOCI_SOURCE_DIR=$PWD export TOCI_SOURCE_DIR=$PWD
# env specific to this run, can contain
# TOCI_RESULTS_SERVER, http_proxy, TOCI_UPLOAD, TOCI_REMOVE,
source ~/.toci
export TOCI_GIT_CHECKOUT
# All temp files should go here # All temp files should go here
export TOCI_WORKING_DIR=$(mktemp -d --tmpdir toci_working_XXXXXXX) export TOCI_WORKING_DIR=${TOCI_WORKING_DIR:-$(mktemp -d --tmpdir toci_working_XXXXXXX)}
mkdir -p $TOCI_WORKING_DIR
# Any files to be uploaded to results server goes here # Any files to be uploaded to results server goes here
export TOCI_LOG_DIR=${TOCI_LOG_DIR:-$(mktemp -d --tmpdir toci_logs_XXXXXXX)} export TOCI_LOG_DIR=${TOCI_LOG_DIR:-$(mktemp -d --tmpdir toci_logs_XXXXXXX)}
mkdir -p $TOCI_LOG_DIR
# Files that should be cached between runs should go in here # Files that should be cached between runs should go in here
# e.g. downloaded images, git repo's etc... # e.g. downloaded images, git repo's etc...
export TOCI_CACHE_DIR=/var/tmp/toci_cache export TOCI_CACHE_DIR=/var/tmp/toci_cache
@ -17,26 +25,29 @@ RESULT_CACHE=$TOCI_CACHE_DIR/results_cache.html
echo "Starting run $STARTTIME ($TOCI_WORKING_DIR,$TOCI_LOG_DIR)" echo "Starting run $STARTTIME ($TOCI_WORKING_DIR,$TOCI_LOG_DIR)"
# env specific to this run, can contain
# TOCI_RESULTS_SERVER, http_proxy, TOCI_UPLOAD, TOCI_REMOVE,
source ~/.toci
# If running in cron $USER isn't setup # If running in cron $USER isn't setup
export USER=${USER:-$(whoami)} export USER=${USER:-$(whoami)}
mkdir -p $TOCI_CACHE_DIR mkdir -p $TOCI_CACHE_DIR
STATUS=0 STATUS=0
mark_time Starting setup
timeout --foreground 60m ./toci_setup.sh > $TOCI_LOG_DIR/setup.out 2>&1 || STATUS=1 mark_time Starting git
timeout --foreground 60m ./toci_git.sh > $TOCI_LOG_DIR/git.out 2>&1 || STATUS=1
if [ $STATUS == 0 ] ; then if [ $STATUS == 0 ] ; then
mark_time Starting tests mark_time Starting setup
timeout --foreground 60m ./toci_setup.sh > $TOCI_LOG_DIR/setup.out 2>&1 || STATUS=1
fi
if [ $STATUS == 0 ] ; then
mark_time Starting test
timeout --foreground 60m ./toci_test.sh > $TOCI_LOG_DIR/test.out 2>&1 || STATUS=1 timeout --foreground 60m ./toci_test.sh > $TOCI_LOG_DIR/test.out 2>&1 || STATUS=1
fi fi
if [ ${TOCI_CLEANUP:-1} == 1 ] ; then if [ ${TOCI_CLEANUP:-1} == 1 ] ; then
mark_time Starting cleanup mark_time Starting cleanup
timeout --foreground 60m ./toci_cleanup.sh > $TOCI_LOG_DIR/cleanup.out 2>&1 || STATUS=1 timeout --foreground 60m ./toci_cleanup.sh > $TOCI_LOG_DIR/cleanup.out 2>&1 || STATUS=1
fi fi
mark_time Starting finished mark_time Finished
if [ ${TOCI_UPLOAD:-0} == 1 ] ; then if [ ${TOCI_UPLOAD:-0} == 1 ] ; then
cd $(dirname $TOCI_LOG_DIR) cd $(dirname $TOCI_LOG_DIR)

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
get_get_repo(){ get_get_repo(){
CACHDIR=$TOCI_CACHE_DIR/${1/\//_} CACHDIR=$TOCI_CACHE_DIR/${1/[^\/]*\//}
if [ ! -e $CACHDIR ] ; then if [ ! -e $CACHDIR ] ; then
git clone https://github.com/$1.git $CACHDIR git clone https://github.com/$1.git $CACHDIR
else else
@ -9,7 +9,7 @@ get_get_repo(){
git fetch git fetch
git reset --hard origin/master git reset --hard origin/master
fi fi
cp -r $CACHDIR $TOCI_WORKING_DIR/${1/\//_} cp -r $CACHDIR $TOCI_WORKING_DIR/${1/[^\/]*\//}
} }
ssh_noprompt(){ ssh_noprompt(){

25
toci_git.sh Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -xe
. toci_functions.sh
# Get the tripleO repo's
for repo in 'tripleo/incubator' 'tripleo/bm_poseur' 'stackforge/diskimage-builder' 'stackforge/tripleo-image-elements' ; do
if [ ${TOCI_GIT_CHECKOUT:-1} == 1 ] ; then
get_get_repo $repo
else
if [ ! -d "$TOCI_WORK_DIR/$repo" ]; then
echo "Please checkout $repo to $TOCI_WORK_DIR or enabled TOCI_GIT_CHECKOUT."
fi
fi
done
#only patch if we do the git checkout
if [ ${TOCI_GIT_CHECKOUT:-1} == 1 ] ; then
# patches can be added to git repo's like this, this just a temp measure we need to make faster progress
# until we get up and runing properly
apply_patches incubator incubator*
apply_patches bm_poseur bm_poseur*
apply_patches diskimage-builder diskimage-builder*
apply_patches tripleo-image-elements tripleo-image-elements*
fi

View File

@ -3,20 +3,8 @@
set -xe set -xe
. toci_functions.sh . toci_functions.sh
# Get the tripleO repo's
for repo in 'tripleo/incubator' 'tripleo/bm_poseur' 'stackforge/diskimage-builder' 'stackforge/tripleo-image-elements' ; do
get_get_repo $repo
done
# patches can be added to git repo's like this, this just a temp measure we need to make faster progress
# until we get up and runing properly
apply_patches tripleo_incubator incubator*
apply_patches tripleo_bm_poseur bm_poseur*
apply_patches stackforge_diskimage-builder diskimage-builder*
apply_patches stackforge_tripleo-image-elements tripleo-image-elements*
# install deps on host machine # install deps on host machine
cd $TOCI_WORKING_DIR/tripleo_incubator cd $TOCI_WORKING_DIR/incubator
./scripts/install-dependencies ./scripts/install-dependencies
id | grep libvirt || ( echo "You have been added to the libvirt group, this script will now exit but will succeed if run again in a new shell" ; exit 1 ) id | grep libvirt || ( echo "You have been added to the libvirt group, this script will now exit but will succeed if run again in a new shell" ; exit 1 )
@ -24,7 +12,7 @@ id | grep libvirt || ( echo "You have been added to the libvirt group, this scri
# looks like libvirt somtimes takes a little time to start # looks like libvirt somtimes takes a little time to start
wait_for 3 3 ls /var/run/libvirt/libvirt-sock wait_for 3 3 ls /var/run/libvirt/libvirt-sock
cd $TOCI_WORKING_DIR/tripleo_bm_poseur cd $TOCI_WORKING_DIR/bm_poseur
sudo ./bm_poseur --bridge-ip=none create-bridge || true sudo ./bm_poseur --bridge-ip=none create-bridge || true
if [ -f /etc/init.d/libvirt-bin ]; then if [ -f /etc/init.d/libvirt-bin ]; then
@ -33,14 +21,13 @@ else
sudo service libvirtd restart sudo service libvirtd restart
fi fi
cd $TOCI_WORKING_DIR/stackforge_diskimage-builder/ cd $TOCI_WORKING_DIR/diskimage-builder/
bin/disk-image-create -u base -a i386 -o $TOCI_WORKING_DIR/tripleo_incubator/base bin/disk-image-create -u base -a i386 -o $TOCI_WORKING_DIR/incubator/base
cd $TOCI_WORKING_DIR/incubator
cd $TOCI_WORKING_DIR/tripleo_incubator sed -i "s/\"user\": \"stack\",/\"user\": \"`whoami`\",/" $TOCI_WORKING_DIR/tripleo-image-elements/elements/boot-stack/config.json
sed -i "s/\"user\": \"stack\",/\"user\": \"`whoami`\",/" $TOCI_WORKING_DIR/stackforge_tripleo-image-elements/elements/boot-stack/config.json ELEMENTS_PATH=$TOCI_WORKING_DIR/tripleo-image-elements/elements \
ELEMENTS_PATH=$TOCI_WORKING_DIR/stackforge_tripleo-image-elements/elements \ DIB_PATH=$TOCI_WORKING_DIR/diskimage-builder \
DIB_PATH=$TOCI_WORKING_DIR/stackforge_diskimage-builder \
scripts/boot-elements boot-stack -o bootstrap scripts/boot-elements boot-stack -o bootstrap
BOOTSTRAP_IP=`scripts/get-vm-ip bootstrap` BOOTSTRAP_IP=`scripts/get-vm-ip bootstrap`

View File

@ -3,7 +3,7 @@
set -xe set -xe
. toci_functions.sh . toci_functions.sh
cd $TOCI_WORKING_DIR/tripleo_incubator cd $TOCI_WORKING_DIR/incubator
BOOTSTRAP_IP=`scripts/get-vm-ip bootstrap` BOOTSTRAP_IP=`scripts/get-vm-ip bootstrap`
# Get logs from the node on exit # Get logs from the node on exit
@ -16,14 +16,14 @@ source $TOCI_WORKING_DIR/stackrc
unset http_proxy unset http_proxy
nova list nova list
sudo $TOCI_WORKING_DIR/tripleo_bm_poseur/bm_poseur --vms 1 --arch i686 create-vm sudo $TOCI_WORKING_DIR/bm_poseur/bm_poseur --vms 1 --arch i686 create-vm
MAC=`$TOCI_WORKING_DIR/tripleo_bm_poseur/bm_poseur get-macs` MAC=`$TOCI_WORKING_DIR/bm_poseur/bm_poseur get-macs`
nova keypair-add --pub-key ~/.ssh/id_rsa.pub default nova keypair-add --pub-key ~/.ssh/id_rsa.pub default
nova baremetal-node-create ubuntu 1 512 10 $MAC nova baremetal-node-create ubuntu 1 512 10 $MAC
# Load the base image into glance # Load the base image into glance
export DIB_PATH=$TOCI_WORKING_DIR/stackforge_diskimage-builder export DIB_PATH=$TOCI_WORKING_DIR/diskimage-builder
./scripts/load-image base.qcow2 ./scripts/load-image base.qcow2
# place the bootstrap public key on host so that it can admin virt # place the bootstrap public key on host so that it can admin virt