#!/usr/bin/env python3 import multiprocessing import os import socket from io import open from buildbot_worker.bot import Worker from twisted.application import service def require_env(key: str) -> str: val = os.environ.get(key) assert val is not None, "val is not set" return val def setup_worker(application: service.Application, id: int) -> None: basedir = f"{require_env('BUILDBOT_DIR')}-{id}" os.makedirs(basedir, mode=0o700, exist_ok=True) master_url = require_env("MASTER_URL") hostname = socket.gethostname() workername = f"{hostname}-{id}" with open( require_env("WORKER_PASSWORD_FILE"), "r", encoding="utf-8" ) as passwd_file: passwd = passwd_file.read().strip("\r\n") keepalive = 600 umask = None maxdelay = 300 numcpus = None allow_shutdown = None s = Worker( "2a01:e34:ec2a:8e60:8ec7:b5d2:f663:a67a", 9989, workername, passwd, basedir, keepalive, umask=umask, maxdelay=maxdelay, numcpus=numcpus, allow_shutdown=allow_shutdown, ) s.setServiceParent(application) # note: this line is matched against to check that this is a worker # directory; do not edit it. application = service.Application("buildbot-worker") for i in range(14): setup_worker(application, i)