Skip to content

[TASK] Run CI containers with docker - #92

Merged
sbuerk merged 1 commit into
mainfrom
task/ci-run-containers-with-docker
Jul 30, 2026
Merged

sbuerk merged 1 commit into
mainfrom
task/ci-run-containers-with-docker

Conversation

@sbuerk

@sbuerk sbuerk commented Jul 30, 2026

Copy link
Copy Markdown
Member

Why

GitHub hosted runners ship both podman and docker. Since 2026-07-29 their
podman/crun combination intermittently aborts the first container start of a
job
with

Error: OCI runtime error: crun: unknown version specified

exit code 126. It is independent of the job, the core version and the PHP
version, and a rerun on another host clears it. Neither the runner image nor
the TYPO3 testing image changed, so this is variance in the GitHub host fleet,
not in anything of ours.

The change

Build/Scripts/runTests.sh prefers podman whenever it is present and only
falls back to docker. That default is correct for the script — podman-only
machines are exactly what it is built for — so it stays. The GitHub hosted
runners are the single place these workflows meet the broken combination, so
the override belongs in the workflows.

Every runTests.sh call now passes -b docker, with the reasoning in the
workflow header so the flag can be dropped knowingly once GitHub stops
producing the mismatch.

Selecting docker exposed a second, unrelated defect

docker runs the container as --user $HOST_UID with group 0, while the sqlite
tmpfs comes up owned by root:root with mode 0755 — so no test database can
be created and every functional sqlite test fails with unable to open database file. Rootless podman is root inside its user namespace and passes no
--user, which is why this never showed before.

Fixed in runTests.sh by mounting that tmpfs with mode=1777: docker needs
it, podman does not mind, and it stays correct regardless of which runtime is
selected.

Documentation rendering

That job pinned -b podman explicitly. It moves to -b docker too, which
required dropping a redundant hardcoded -it from the renderDocumentation
container run: docker rejects -t without a TTY (the input device is not a TTY), and the script already manages the interactive flags itself
(CONTAINER_INTERACTIVE, empty in CI). Local runs keep -it --init.

This pull request is its own proof

The pipeline below runs with both changes.

GitHub hosted runners ship both podman and docker. Since 2026-07-29
their podman/crun combination intermittently aborts the first container
start of a job with "OCI runtime error: crun: unknown version
specified" (exit code 126), independent of the job, the core version or
the PHP version. Neither the runner image nor the TYPO3 testing image
changed, and a rerun on another host clears it.

runTests.sh prefers podman whenever it is present and only falls back
to docker. That default is correct for the script and is kept, since
podman-only machines are exactly what it is built for. GitHub hosted
runners are the single place these workflows meet the broken
combination, so the override belongs in the workflows: every
"runTests.sh" call passes "-b docker" now, with the reasoning noted in
the workflow header so the flag can be dropped knowingly later.

Selecting docker exposes a second, unrelated defect. docker runs the
container as "--user $HOST_UID" with group 0, while the sqlite tmpfs
comes up owned by root with mode 0755, so no test database can be
created and every functional sqlite test fails with "unable to open
database file". Rootless podman is root inside its user namespace and
passes no "--user", which is why this never showed before. The tmpfs is
mounted with "mode=1777" now, which docker needs and podman does not
mind, and which stays correct regardless of the selected runtime.

The documentation rendering call moves from "-b podman" to "-b docker"
as well. Its container run hardcoded "-it" on top of the interactive
flags the script already manages, which docker rejects without a TTY
("the input device is not a TTY"). The redundant flag is dropped, so
CI mode stays non-interactive while local runs keep the "-it --init"
the script adds itself.
@github-actions

Copy link
Copy Markdown

Documentation rendering

You can find files attached to the below linked Workflow Run URL (Logs).

Please note that files only stay for around 5 days!

Name Link
Commit c2947ea
Logs https://github.com/web-vision/deepl-base/actions/runs/30524943739
Documentation https://github.com/web-vision/deepl-base/actions/runs/30524943739/artifacts/8752332698

@sbuerk
sbuerk merged commit 633f2fc into main Jul 30, 2026
8 checks passed
@sbuerk
sbuerk deleted the task/ci-run-containers-with-docker branch July 30, 2026 08:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant