blob: f95f45575369450acc2f2df801b295a511fb9c2a [file] [log] [blame]
#!/bin/bash
# Found as /opt/start_swarming. Called by /etc/init.d/start-swarming so it can be run
# as user chrome-bot (swarming doesn't like being run as root).
# Logs will be found in /var/log/startup.(log|err)
# Wait 20s to make sure ssl is fully booted. Otherwise, we may get an error
# when trying to download the bootstrap code.
sleep 20s
# Copy authentication to home directory
cp /opt/.gitconfig /home/chrome-bot/.gitconfig
cp /opt/.netrc /home/chrome-bot/.netrc
host="$(hostname)"
swarming="https://chromium-swarm.appspot.com"
if [[ "$host" = skia-i-* ]]; then
swarming="https://chrome-swarming.appspot.com"
elif [[ "$host" = skia-d-* ]]; then
swarming="https://chromium-swarm-dev.appspot.com"
fi
if [ ! -d "/b/s" ]; then
mkdir /b/s
cd /b/s
echo "Bootstrapping $swarming, expect a reboot"
# The following is based on this Ansible script, which was not used here
# because it would've complicated the setup flow a bit:
# https://skia.googlesource.com/buildbot/+/master/skolo/common/ansible/bootstrap-swarming.yml
script=$(cat << EOF
import json
import urllib2
token_url = ('http://metadata/computeMetadata/v1/instance/'
'service-accounts/default/token')
req = urllib2.Request(token_url, headers={'Metadata-Flavor': 'Google'})
tok = json.load(urllib2.urlopen(req))
req = urllib2.Request(
'$swarming/bootstrap',
headers={'Authorization': 'Bearer %s' % tok['access_token']})
exec urllib2.urlopen(req).read()
EOF
)
python -c "$script"
else
echo "Starting swarming"
/usr/bin/python /b/s/swarming_bot.zip start_bot &
fi