Skip to content

Misc improvements for the bug fix Docker image - #7110

Draft
marco-c wants to merge 5 commits into
mozilla:masterfrom
marco-c:better_docker_image
Draft

marco-c wants to merge 5 commits into
mozilla:masterfrom
marco-c:better_docker_image

Conversation

@marco-c

@marco-c marco-c commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@marco-c
marco-c force-pushed the better_docker_image branch 6 times, most recently from 04f24b1 to a18b97e Compare October 10, 2026 19:18
Install the build prerequisites and Firefox runtime dependencies that `mach
bootstrap` cannot install itself (it runs unprivileged), along with the fonts,
debug symbols and audio setup Firefox's own CI test images use. An entrypoint
starts Xvfb, a D-Bus session and PipeWire, so Firefox launched from the agent's
shell has a display and a working audio device. Add gdb, strace, ripgrep, jq
and sqlite3 for debugging, uv, and profiler-cli, which with the bootstrapped
samply and profiler-edit (also put on PATH, as is node) is what the Firefox
tree's profiling skills use.

Set a git identity matching hackbot_runtime's, so the agent's own `git commit`
and `git stash` work.

ffpuppet looks up minidump-stackwalk only when it is imported, before bootstrap
has installed it, so crashes caught by evaluate_testcase came back without a
stack. bootstrap_firefox now points ffpuppet at the bootstrapped copy. It also
installs the developer tools (treeherder-cli, searchfox-cli, ...) that
non-interactive bootstrap skips.

Build the JS shell too, which desktop builds skip, so evaluate_js_shell has one
to run.

Add opt-in smoke tests for the image (BUG_FIX_IMAGE=<image>), covering the
entrypoint services, tools, evaluate_testcase with and without a crash and,
with BUG_FIX_IMAGE_SLOW=1, bootstrap, configure and running tests.
@marco-c
marco-c force-pushed the better_docker_image branch from a18b97e to 0c060c4 Compare October 10, 2026 20:50
Build the agent image with podman in a privileged task, as taskboot does but
with the non-final target taskboot cannot select, and run the tests inside it
as a task image. The tests gain a mode where they check the container they run
in. After merges to master, two slower tests bootstrap Firefox and make an
artifact build and a full build with the agent's mozconfig, then run tests.
@marco-c
marco-c force-pushed the better_docker_image branch from 0c060c4 to d8a5580 Compare October 10, 2026 21:58
Keep podman's storage in a Taskcluster cache, so a build reuses the layers
that didn't change. Install the Python environment last in the agent stage,
so the system packages layers survive Python changes, and copy what goes
into the environment rather than only bind-mounting it, as bind-mounted files
aren't part of a step's cache key and the environment would go stale.
…cache

The slow tests then update a checkout rather than clone one, when the agent
user can write the cache. They clean up what they built in it afterwards, so
it doesn't hold on to a build's worth of disk space.

This branch has not been deployed

No deployments
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.

Make sure the bug fix agent image contains all tools the agent might need to fix Firefox bugs

1 participant