[[PageOutline]] = WebKit Early Warning System (EWS) = The [https://ews-build.webkit.org WebKit Early Warning System] is pre-commit testing infrastructure, designed to help catch build/test failures before patches are committed into WebKit resository. EWS checks every patch posted for review on bugs.webkit.org on various OSes (e.g. macOS, iOS, Linux, Windows), using various test suites (e.g.: layout tests, API tests, webkitperl tests, webkitpy tests, jsc tests etc.) in various configurations (e.g.: Debug, Release). EWS consists of two servers: 1) ews-build: This is a Buildbot server. It processes the builds. 2) ews-app: This is a Django based web-app and coordinates between Bugzilla and Buildbot. It retrieves patches from bugzilla and submits them to Buildbot for processing. It also receives results from Buildbot, and display them in status-bubble. == Adding a new EWS Bot == Anyone can add a new EWS bot. Follow these steps to add a new EWS bot: - Install buildbot-worker package on the bot (e.g.: sudo pip3 install buildbot-worker==2.10.2) and point it to ews-build.webkit.org:17000 - Submit a patch adding the bot to [https://trac.webkit.org/browser/webkit/trunk/Tools/CISupport/ews-build/config.json config.json] appropriately, and get it reviewed and landed. - email admin@webkit.org to request restart/reconfig of the Buildbot server. == Adding a new EWS Queue == Add a new Builder to the Buildbot configuration appropriately in the source code. Then email admin@webkit.org to request restart/reconfig of the Buildbot server. == Contributing to Early Warning System == All code changes go through the normal WebKit code review process. === Source code Location === ews-build: Tools/CISupport/ews-build ews-app: Tools/CISupport/ews-app === Installing required packages: === {{{ sudo pip3 install buildbot==2.10.2 --no-binary :all: sudo pip3 install Twisted --no-binary :all: sudo pip3 install buildbot-www==2.10.2 sudo pip3 install buildbot-worker==2.10.2 }}} === Configuring Buildbot master === {{{ cd Tools/CISupport/ews-build buildbot create-master -r -c master.cfg . buildbot start }}} Navigate to http://localhost:8010 === Configuring local Buildbot worker === {{{ WORKER_DIRECTORY=/tmp/buildbot-worker WORKER_NAME=local-worker WORKER_PASSWORD='password' MASTER=localhost:17000 mkdir ${WORKER_DIRECTORY} cd ${WORKER_DIRECTORY} buildbot-worker create-worker --keepalive 120 ${WORKER_DIRECTORY} ${MASTER} ${WORKER_NAME} ${WORKER_PASSWORD} buildbot-worker start }}} === Configuring ews-app === {{{ cd Tools/CISupport/ews-app python manage.py makemigrations python manage.py migrate python manage.py runserver }}} Navigate to http://localhost:8000 == Contact == In case of any issues or questions please email Aakash Jain (aakash_jain@apple.com) and admin@webkit.org