| import os |
| import socket |
| import sys |
| |
| from buildbot.plugins import reporters, util |
| |
| import loadConfig |
| from events import Events |
| |
| # This is work-around for Twisted having a small size limit for patches. See https://bugs.webkit.org/show_bug.cgi?id=198851#c5 |
| from twisted.spread import banana |
| banana.SIZE_LIMIT = 100 * 1024 * 1024 |
| |
| is_test_mode_enabled = os.getenv('BUILDBOT_PRODUCTION') is None |
| |
| c = BuildmasterConfig = {} |
| |
| c['www'] = dict(port=8010, allowed_origins=["*"]) |
| c['www']['custom_templates_dir'] = 'templates' |
| |
| c['www']['ui_default_config'] = { |
| 'Builders.show_workers_name': True, |
| 'Builders.buildFetchLimit': 1000, |
| 'Workers.showWorkerBuilders': True, |
| } |
| |
| if not is_test_mode_enabled: |
| admin_username = os.getenv('EWS_ADMIN_USERNAME') |
| admin_password = os.getenv('EWS_ADMIN_PASSWORD') |
| if not admin_username or not admin_password: |
| print('Environment variables for admin username/password not found. Please ensure these variables are set.') |
| sys.exit(1) |
| # See https://docs.buildbot.net/current/manual/configuration/www.html#example-configs |
| authz = util.Authz( |
| allowRules=[util.AnyControlEndpointMatcher(role="admin")], |
| roleMatchers=[util.RolesFromEmails(admin=[admin_username])] |
| ) |
| auth = util.UserPasswordAuth({admin_username: admin_password}) |
| c['www']['auth'] = auth |
| c['www']['authz'] = authz |
| |
| c['protocols'] = {'pb': {'port': 17000}} |
| |
| c['projectName'] = 'WebKit EWS' |
| c['projectURL'] = 'https://ews-build.webkit.org/' |
| |
| if is_test_mode_enabled: |
| c['buildbotURL'] = 'http://localhost:8010/' |
| c['db_url'] = 'sqlite:///state.sqlite?serialize_access=1' |
| else: |
| c['buildbotURL'] = 'https://ews-build.webkit.org/' |
| db_url = os.getenv('DB_URL', None) |
| db_name = os.getenv('DB_NAME', None) |
| db_username = os.getenv('DB_USERNAME', None) |
| db_password = os.getenv('DB_PASSWORD', None) |
| if None in [db_url, db_name, db_username, db_password]: |
| print('Environment variables for DB not found. Please ensure these variables are set.') |
| sys.exit(1) |
| # See https://docs.buildbot.net/1.7.0/manual/configuration/global.html#database-specification |
| c['db_url'] = 'postgresql://{}:{}@{}/{}'.format(db_username, db_password, db_url, db_name) |
| |
| c['logCompressionMethod'] = 'lz4' |
| c['buildbotNetUsageData'] = None |
| |
| loadConfig.loadBuilderConfig(c, is_test_mode_enabled=is_test_mode_enabled) |
| |
| mail_notifier = reporters.MailNotifier( |
| fromaddr='ews-build@webkit.org', |
| sendToInterestedUsers=False, |
| extraRecipients=['aakash_jain@webkit.org'], |
| mode=('failing', 'exception'), |
| addPatch=False) |
| |
| if not is_test_mode_enabled: |
| hostname = socket.gethostname().strip() |
| event_reporter = Events(master_hostname=hostname, type_prefix='ews') |
| c['services'] = [event_reporter, mail_notifier] |