Skip to content

Commit 5c65170

Browse files
authored
Remove support for docker-in-docker, privileged and loopback-audio docker-worker features (#753)
As far as I know they're unused at this point. In addition: - docker-in-docker involves talking to the docker daemon on the host, which has proven problematic as it bakes in dependencies on the docker daemon's version. It's also dubious from a security perspective, and as far as I can tell doesn't work in generic-worker/d2g (it doesn't have a proxy to only allow "safe" commands) - privileged is inherently problematic as it makes the task root-equivalent on the worker - loopback audio these days is achieved with dummy devices at the pulseaudio or pipewire level, not at the kernel level
1 parent eb71f22 commit 5c65170

1 file changed

Lines changed: 4 additions & 19 deletions

File tree

src/taskgraph/transforms/task.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,6 @@ class DockerWorkerPayloadSchema(Schema, forbid_unknown_fields=False, kw_only=Tru
273273
taskcluster_proxy: bool
274274
allow_ptrace: bool
275275
loopback_video: bool
276-
loopback_audio: bool
277-
docker_in_docker: bool # (aka 'dind')
278-
privileged: bool
279276
# environment variables
280277
env: dict[str, taskref_or_string_msgspec]
281278
# the maximum time to run, in seconds
@@ -356,9 +353,6 @@ def build_docker_worker_payload(config, task, task_def):
356353
if worker.get("chain-of-trust"):
357354
features["chainOfTrust"] = True
358355

359-
if worker.get("docker-in-docker"):
360-
features["dind"] = True
361-
362356
if task.get("needs-sccache"):
363357
features["taskclusterProxy"] = True
364358
task_def["scopes"].append(
@@ -375,16 +369,10 @@ def build_docker_worker_payload(config, task, task_def):
375369

376370
capabilities = {}
377371

378-
for lo in "audio", "video":
379-
if worker.get("loopback-" + lo):
380-
capitalized = "loopback" + lo.capitalize()
381-
devices = capabilities.setdefault("devices", {})
382-
devices[capitalized] = True
383-
task_def["scopes"].append("docker-worker:capability:device:" + capitalized)
384-
385-
if worker.get("privileged"):
386-
capabilities["privileged"] = True
387-
task_def["scopes"].append("docker-worker:capability:privileged")
372+
if worker.get("loopback-video"):
373+
devices = capabilities.setdefault("devices", {})
374+
devices["loopbackVideo"] = True
375+
task_def["scopes"].append("docker-worker:capability:device:loopbackVideo")
388376

389377
task_def["payload"] = payload = {
390378
"image": image,
@@ -815,9 +803,6 @@ def set_defaults(config, tasks):
815803
worker.setdefault("taskcluster-proxy", False)
816804
worker.setdefault("allow-ptrace", False)
817805
worker.setdefault("loopback-video", False)
818-
worker.setdefault("loopback-audio", False)
819-
worker.setdefault("docker-in-docker", False)
820-
worker.setdefault("privileged", False)
821806
worker.setdefault("volumes", [])
822807
worker.setdefault("env", {})
823808
if "caches" in worker:

0 commit comments

Comments
 (0)