forked from OSchip/llvm-project
112 lines
2.4 KiB
Bash
Executable File
112 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -x
|
|
|
|
readonly BOT_ROOT=/b
|
|
readonly AUTH_FILE=$1
|
|
readonly BOT_ROOT_NAME=$(jq -r ".login" $AUTH_FILE)
|
|
|
|
systemctl daemon-reload
|
|
service buildslave stop
|
|
mkdir -p /b
|
|
rm -rf /b/*
|
|
service buildslave stop
|
|
|
|
pushd /tmp/
|
|
|
|
curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
|
|
sudo bash install-monitoring-agent.sh
|
|
rm install-monitoring-agent.sh
|
|
|
|
curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
|
|
sudo bash install-logging-agent.sh
|
|
rm install-logging-agent.sh
|
|
|
|
popd
|
|
|
|
|
|
systemctl set-property buildslave.service TasksMax=100000
|
|
|
|
function setup_numbered_bot() {
|
|
local BOT_NAME=$1
|
|
local BOT_DIR=$2
|
|
mkdir -p $BOT_DIR
|
|
|
|
buildslave stop $BOT_DIR
|
|
chown buildbot $BOT_DIR
|
|
rm -rf $BOT_DIR/*
|
|
|
|
buildslave create-slave --allow-shutdown=signal "$BOT_DIR" "lab.llvm.org:9990" "$BOT_NAME" $(jq -r ".password" $AUTH_FILE)
|
|
|
|
echo "Eric Fiselier <ericwf@google.com>" > $BOT_DIR/info/admin
|
|
|
|
echo "Connecting as $1"
|
|
{
|
|
uname -a | head -n1
|
|
cmake --version | head -n1
|
|
g++ --version | head -n1
|
|
clang++ --version | head -n1
|
|
ld --version | head -n1
|
|
date
|
|
lscpu
|
|
} > $BOT_DIR/info/host
|
|
|
|
|
|
#echo "SLAVE_RUNNER=/usr/bin/buildslave
|
|
#SLAVE_ENABLED[1]=\"1\"
|
|
#SLAVE_NAME[1]=\"$BOT_NAME\"
|
|
#SLAVE_USER[1]=\"buildbot\"
|
|
#SLAVE_BASEDIR[1]=\"$BOT_DIR\"
|
|
#SLAVE_OPTIONS[1]=\"\"
|
|
#SLAVE_PREFIXCMD[1]=\"\"" > $BOT_DIR/buildslave.cfg
|
|
|
|
ls $BOT_DIR/
|
|
cat $BOT_DIR/buildbot.tac
|
|
}
|
|
|
|
function try_start_builder {
|
|
local N=$1
|
|
local BOT_DIR="$BOT_ROOT/b$N"
|
|
local BOT_NAME="$BOT_ROOT_NAME$N"
|
|
|
|
systemctl daemon-reload
|
|
service buildslave restart
|
|
setup_numbered_bot "$BOT_NAME" "$BOT_DIR"
|
|
|
|
systemctl daemon-reload
|
|
service buildslave restart
|
|
|
|
chown -R buildbot $BOT_DIR/
|
|
sudo -u buildbot /usr/bin/buildslave start $BOT_DIR/
|
|
|
|
sleep 30
|
|
cat $BOT_DIR/twistd.log
|
|
if grep --quiet "slave is ready" $BOT_DIR/twistd.log; then
|
|
return 0
|
|
fi
|
|
if grep --quiet "configuration update complete" $BOT_DIR/twistd.log; then
|
|
return 0
|
|
fi
|
|
if grep "rejecting duplicate slave" $BOT_DIR/twistd.log; then
|
|
return 1
|
|
fi
|
|
echo "Unknown error"
|
|
cat $BOT_DIR/twistd.log
|
|
exit 1
|
|
}
|
|
|
|
for N in `shuf -i 1-5`
|
|
do
|
|
if try_start_builder $N; then
|
|
break
|
|
fi
|
|
echo "failed to start any buildbot"
|
|
shutdown now
|
|
done
|
|
|
|
# GCE can restart instance after 24h in the middle of the build.
|
|
# Gracefully restart before that happen.
|
|
sleep 72000
|
|
while pkill -SIGHUP buildslave; do sleep 5; done;
|
|
shutdown now
|
|
|