| #!/bin/bash |
| |
| # Auto setup of buildbot configuration. Package installation is being done |
| # on buildbot.pp |
| # Dependencies: buildbot, buildbot-slave, supervisor |
| |
| SLAVE_NAME='buildworker' |
| SLAVE_SOCKET='localhost:9989' |
| BUILDBOT_PWD='pass-docker' |
| USER='vagrant' |
| ROOT_PATH='/data/buildbot' |
| DOCKER_PATH='/data/docker' |
| BUILDBOT_CFG="$DOCKER_PATH/buildbot/buildbot-cfg" |
| IP=$(grep BUILDBOT_IP /data/docker/buildbot/Vagrantfile | awk -F "'" '{ print $2; }') |
| |
| function run { su $USER -c "$1"; } |
| |
| export PATH=/bin:sbin:/usr/bin:/usr/sbin:/usr/local/bin |
| |
| # Exit if buildbot has already been installed |
| [ -d "$ROOT_PATH" ] && exit 0 |
| |
| # Setup buildbot |
| run "mkdir -p ${ROOT_PATH}" |
| cd ${ROOT_PATH} |
| run "buildbot create-master master" |
| run "cp $BUILDBOT_CFG/master.cfg master" |
| run "sed -i 's/localhost/$IP/' 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/' ${ROOT_PATH}/slave/buildbot.tac" |
| |
| # Setup supervisor |
| cp $BUILDBOT_CFG/buildbot.conf /etc/supervisor/conf.d/buildbot.conf |
| sed -i "s/^chmod=0700.*0700./chmod=0770\nchown=root:$USER/" /etc/supervisor/supervisord.conf |
| kill -HUP `pgrep -f "/usr/bin/python /usr/bin/supervisord"` |
| |
| # Add git hook |
| cp $BUILDBOT_CFG/post-commit $DOCKER_PATH/.git/hooks |
| sed -i "s/localhost/$IP/" $DOCKER_PATH/.git/hooks/post-commit |
| |