Skip to content

Misc improvements for the bug fix Docker image - #7110

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

marco-c wants to merge 6 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 9 times, most recently from d8a5580 to 859f67f Compare October 10, 2026 22:54
@marco-c
marco-c force-pushed the better_docker_image branch 2 times, most recently from f2c0d95 to 9f28ce5 Compare October 12, 2026 12:36

# Non-interactive bootstrap skips the developer tools it offers to install for
# coding agents (treeherder-cli, searchfox-cli, ...), so install them the way it
# would: from the tree's toolchain artifacts into ~/.cargo/bin.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably want to fix this.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread agents/bug-fix/Dockerfile Outdated
Comment thread agents/bug-fix/Dockerfile Outdated
Comment thread agents/bug-fix/Dockerfile Outdated
Comment thread agents/bug-fix/Dockerfile
@marco-c
marco-c force-pushed the better_docker_image branch from 9f28ce5 to 29b82ec Compare October 12, 2026 20:15
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.
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. A slower test bootstraps Firefox and makes an artifact build to run tests
in, and after merges to master that change the image or what goes into it,
another one makes a full build with the agent's mozconfig.
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.
bootstrap_firefox (and its tool) take the application to bootstrap for, so
the agent can install the JDK and Android SDK and NDK an Android build needs,
and link their versioned directories under stable names the image puts on
PATH (java, adb, aapt2, apksigner, apkanalyzer, lint, sdkmanager).
Bootstrapping for Android also writes a mozconfig for it, which build_firefox
then builds with, until bootstrapping for desktop again. The agent's prompt
explains how to build and test Android code without the emulator, which
isn't available.

Fixes mozilla#7067
Bootstrap a Firefox checkout for Android the way the agent does, make an
artifact build, inspect and verify the APKs it builds, run android-components
unit tests through `mach gradle`, and check the Android formatter catches and
fixes misformatted code.
@marco-c
marco-c force-pushed the better_docker_image branch from 29b82ec to e9540b1 Compare October 12, 2026 22:42
@marco-c
marco-c requested a review from padenot October 13, 2026 08:37
@marco-c
marco-c marked this pull request as ready for review October 13, 2026 08:37
@marco-c
marco-c requested a review from a team as a code owner October 13, 2026 08:37

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

2 participants