buildbot/pypy/master/start_buildbot.sh
2016-12-15 13:30:29 +01:00

57 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
# startup script for purely stateless master
# we download the config from an arbitrary curl accessible tar.gz file (which github can generate for us)
B=`pwd`
if [ -z "$BUILDBOT_CONFIG_URL" ]
then
if [ ! -f "$B/master.cfg" ]
then
echo No master.cfg found nor $$BUILDBOT_CONFIG_URL !
echo Please provide a master.cfg file in $B or provide a $$BUILDBOT_CONFIG_URL variable via -e
exit 1
fi
else
BUILDBOT_CONFIG_DIR=${BUILDBOT_CONFIG_DIR:-config}
mkdir -p $B/$BUILDBOT_CONFIG_DIR
# if it ends with .tar.gz then its a tarball, else its directly the file
if echo "$BUILDBOT_CONFIG_URL" | grep '.tar.gz$' >/dev/null
then
until curl -sL $BUILDBOT_CONFIG_URL | tar -xz --strip-components=1 --directory=$B/$BUILDBOT_CONFIG_DIR
do
echo "Can't download from \$BUILDBOT_CONFIG_URL: $BUILDBOT_CONFIG_URL"
sleep 1
done
ln -sf $B/$BUILDBOT_CONFIG_DIR/master.cfg $B/master.cfg
if [ -f $B/$BUILDBOT_CONFIG_DIR/buildbot.tac ]
then
ln -sf $B/$BUILDBOT_CONFIG_DIR/buildbot.tac $B/buildbot.tac
fi
else
until curl -sL $BUILDBOT_CONFIG_URL > $B/master.cfg
do
echo "Can't download from $$BUILDBOT_CONFIG_URL: $BUILDBOT_CONFIG_URL"
done
fi
fi
# copy the default buildbot.tac if not provided by the config
if [ ! -f $B/buildbot.tac ]
then
cp /usr/src/buildbot/contrib/docker/master/buildbot.tac $B
fi
# wait for db to start by trying to upgrade the master
until buildbot upgrade-master $B
do
echo "Can't upgrade master yet. Waiting for database ready?"
sleep 1
done
# we use exec so that twistd use the pid 1 of the container, and so that signals are properly forwarded
exec twistd -ny $B/buildbot.tac