CI: no macOS (Apple Container) runner — macos_container backend is unexercised #426
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background
CI has no runner for the
macos_container(Apple Container) backend..gitea/workflows/test.ymlruns onubuntu-latestand a self-hosted[self-hosted, kvm]Linux box — there is nomacos,darwin, orapplerunner anywhere. Docker and Firecracker are both exercised;macos_containeris not.This is not theoretical.
5ad3449movedbot_bottlefrom flat files under/appinto a pip-installed package but left init scripts spawning the supervisor aspython3 /app/gateway_init.py, which no longer exists. Both the firecracker and macos-container backends had the identical bug:127ba49, because the KVM runner added inc193b04(PR #349) actually runs that backend's integration suite.mainand only surfaced when a human ranbot-bottle startby hand.The failure mode is also expensive to debug: the supervisor never starts, so mitmdump never generates its CA, and the launch dies downstream with
GatewayError: gateway CA not available, which points at TLS rather than at the supervisor.The unit tests did not help.
test_macos_infraasserted the substring"gateway_init.py", which the broken path satisfies, so it stayed green. Its firecracker twin was tightened to the module form as part of127ba49; the macOS one was not.Proposal
Provision a self-hosted macOS runner (label e.g.
macos, on Apple Silicon with Apple Container installed) and add anintegration-macosjob alongside the existingintegration-dockerandintegration-firecrackerjobs.Considerations
integration-firecrackerdoes (command -v container, a workingcontainer system status) so a misprovisioned runner fails loudly rather than silently skipping.bot-bottle-mac-infra), so parallel jobs on one runner will collide. See #425 for the equivalent problem already hitting the KVM runner.Acceptance criteria
integration-macosjob runs the integration suite againstBOT_BOTTLE_BACKEND=macos-container.macos_container/infra.pyfix makes the job fail.Related