Skip to content

Commit 1d4f907

Browse files
ci: reduce Docker Hub pulls in performance-tests workflow (#1549)
* ci: reduce Docker Hub pulls in performance-tests workflow The performance-tests job timed out booting BuildKit while pulling moby/buildkit from Docker Hub (registry-1.docker.io: context deadline exceeded). The job never runs `docker build`, so the buildx builder it sets up is unused — remove the step to drop that Docker Hub pull. Also set TESTCONTAINERS_RYUK_DISABLED=true, matching e2e-tests.yml and pr.yml. performance-tests.yml was the only testcontainers workflow missing it, so it uniquely pulled testcontainers/ryuk from Docker Hub on every run; the fixture cleans up via its `with container:` context manager, so the reaper is unneeded on ephemeral CI runners. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(internal): list performance-tests.yml in ryuk-disable cleanup note The container-cleanup comment in conftest.py enumerated the workflows that set TESTCONTAINERS_RYUK_DISABLED=true ({pr,e2e-tests}.yml). This PR adds that env to performance-tests.yml as well, so include it in the list to keep the cross-reference accurate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: kingpanther13 <kingpanther13@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 94195ee commit 1d4f907

2 files changed

Lines changed: 9 additions & 6 deletions

File tree

.github/workflows/performance-tests.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ env:
2929
UV_CACHE_DIR: /tmp/.uv-cache
3030
# renovate: datasource=docker depName=ghcr.io/home-assistant/home-assistant
3131
HA_IMAGE_GHCR: "ghcr.io/home-assistant/home-assistant:2026.5.4"
32+
# Disable Testcontainers' Ryuk reaper: it has been reported to leave
33+
# zombie containers on GHA runners (see #366, Ilya0527 2026-05-18).
34+
# The E2E fixture in tests/src/e2e/conftest.py relies instead on the
35+
# enclosing ``with container:`` context manager — Python guarantees
36+
# its ``__exit__`` fires on both normal and exception flows, so the
37+
# Ryuk safety net is not needed for deterministic cleanup. Refs #366.
38+
TESTCONTAINERS_RYUK_DISABLED: "true"
3239

3340
jobs:
3441
performance-tests:
@@ -39,11 +46,6 @@ jobs:
3946
steps:
4047
- uses: actions/checkout@v6
4148

42-
- name: Set up Docker Buildx
43-
uses: docker/setup-buildx-action@v4
44-
with:
45-
cache-binary: true
46-
4749
- name: Cache HA Docker image
4850
id: cache-ha-image
4951
uses: actions/cache@v5

tests/src/e2e/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1741,7 +1741,8 @@ def ha_container_with_fresh_config(_blueprint_http_server):
17411741
# Container cleanup runs via the enclosing ``with container:``
17421742
# block's ``__exit__`` (calls ``stop()`` which removes the
17431743
# container). With ``TESTCONTAINERS_RYUK_DISABLED=true`` set in
1744-
# the CI workflow env (see .github/workflows/{pr,e2e-tests}.yml)
1744+
# the CI workflow env (see
1745+
# .github/workflows/{pr,e2e-tests,performance-tests}.yml)
17451746
# the with-block exit IS the only cleanup mechanism — Python's
17461747
# context-manager protocol guarantees ``__exit__`` fires on
17471748
# both normal and exception flows, so the Ryuk reaper safety

0 commit comments

Comments
 (0)