#!/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 " > $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