| #!/bin/bash |
| |
| # Setup of buildbot configuration. Package installation is being done by |
| # Vagrantfile |
| # Dependencies: buildbot, buildbot-slave, supervisor |
| |
| USER=$1 |
| GOPATH=$2 |
| DOCKER_PATH=$3 |
| CFG_PATH=$4 |
| BUILDBOT_PATH=$5 |
| SLAVE_NAME="buildworker" |
| SLAVE_SOCKET="localhost:9989" |
| BUILDBOT_PWD="pass-docker" |
| IP=$(sed -nE 's/VM_IP = "(.+)"/\1/p' ${DOCKER_PATH}/hack/Vagrantfile) |
| export PATH="/bin:sbin:/usr/bin:/usr/sbin:/usr/local/bin" |
| |
| function run { su $USER -c "$1"; } |
| |
| # Exit if buildbot has already been installed |
| [ -d "$BUILDBOT_PATH" ] && exit 0 |
| |
| # Setup buildbot |
| run "mkdir -p $BUILDBOT_PATH" |
| cd $BUILDBOT_PATH |
| run "buildbot create-master master" |
| run "cp $CFG_PATH/master.cfg master" |
| run "sed -i 's/localhost/$IP/' master/master.cfg" |
| run "sed -i -E 's#(GOPATH = ).+#\1\"$GOPATH\"#' master/master.cfg" |
| run "sed -i -E 's#(DOCKER_PATH = ).+#\1\"$DOCKER_PATH\"#' master/master.cfg" |
| run "buildslave create-slave slave $SLAVE_SOCKET $SLAVE_NAME $BUILDBOT_PWD" |
| |
| # Allow buildbot subprocesses (docker tests) to properly run in containers, |
| # in particular with docker -u |
| run "sed -i 's/^umask = None/umask = 000/' slave/buildbot.tac" |
| |
| # Setup supervisor |
| cp $CFG_PATH/buildbot.conf /etc/supervisor/conf.d/buildbot.conf |
| sed -i -E "s/^chmod=0700.+/chmod=0770\nchown=root:$USER/" /etc/supervisor/supervisord.conf |
| kill -HUP $(pgrep -f "/usr/bin/python /usr/bin/supervisord") |
| |
| # Add git hook |
| cp $CFG_PATH/post-commit $DOCKER_PATH/.git/hooks |
| sed -i "s/localhost/$IP/" $DOCKER_PATH/.git/hooks/post-commit |
| |