fix: rebuild Docker image in CI and sync PR validation pipeline#25
fix: rebuild Docker image in CI and sync PR validation pipeline#25AndrewAltimit merged 8 commits intomainfrom
Conversation
Self-hosted runner was using a stale cached Docker image from before xvfb was added to the Dockerfile. Add an explicit build step so docker compose rebuilds the rust-ci image when the Dockerfile changes, ensuring xvfb-run is available for screenshot tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add "Build CI Docker image" step to both ci.yml and pr-validation.yml so the self-hosted runner rebuilds the rust-ci image when the Dockerfile changes (fixes stale image missing xvfb-run). - Add missing steps to pr-validation.yml to match ci.yml: screenshot tests, screenshot report upload, benchmarks, benchmark results upload, and test metrics summary. Both pipelines now run identical CI checks before diverging (main CI has no review jobs; PR validation adds Gemini/Codex review). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gemini AI Code ReviewIssues (if any)
Previous Issues (for incremental reviews)(none) Suggestions (if any)
Notes
Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews. |
Codex AI Code ReviewIssues (if any)
Previous Issues (for incremental reviews)
Suggestions (if any)
Notes
Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews. |
Benchmark steps piped through `tee` without `pipefail`, silently masking cargo bench failures. Test metrics summary re-ran the entire test suite just to capture output; now the initial Test step captures output via tee and the metrics step reuses it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Review Response Agent (Iteration 1)Status: No changes needed Fixed Issues
Ignored Issues
Deferred to Human
Notes
The agent reviewed feedback but determined no code changes were required. |
xvfb-run requires xauth to manage X authentication cookies, but --no-install-recommends on Debian trixie does not pull it in as a dependency of the xvfb package. This was the actual cause of the screenshot test failure: "xvfb-run: error: xauth command not found". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SDL2's .accelerated().present_vsync() hangs in Docker with xvfb when no OpenGL/GPU is available. Force SDL_RENDER_DRIVER=software to use the software renderer, add a 5-minute timeout as a safety net, and install libgl1-mesa-dri in the Docker image as a fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Review Response Agent (Iteration 2)Status: No changes needed Fixed Issues
Ignored Issues
Deferred to Human
Notes
The agent reviewed feedback but determined no code changes were required. |
Automated fix by Claude in response to pipeline failures. Failures addressed: - format - lint - test-suite Actions taken: - Ran autoformat (ruff format, cargo fmt) - Fixed remaining lint issues Iteration: 1/5 Co-Authored-By: AI Pipeline Agent <noreply@anthropic.com>
Failure Handler Agent (Iteration 1)Status: Changes committed and pushed Commit: Failures addressed:
Automated fix in response to CI pipeline failures. |
Gemini AI Incremental ReviewThis is an incremental review focusing on changes since the last review. Issues (if any)(none) Previous Issues (for incremental reviews)
Suggestions (if any)(none) Notes
Generated by Gemini AI (gemini-3.1-pro-preview). Supplementary to human reviews. |
xvfb-run hangs in the CI runner's Docker environment. With SDL_VIDEODRIVER=dummy and SDL_RENDER_DRIVER=software, SDL2 renders to an in-memory buffer without needing any X11 display at all. Verified locally from the CI runner directory: 57 scenarios pass in ~2 seconds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary of CI screenshot test fixesThe screenshot test step was hanging indefinitely in CI. Here's what we found and why each change was made: Root cause
ChangesDrop
Skip
Added
VerificationTested the exact CI command from the CI runner directory — 57 screenshot scenarios pass in ~2 seconds. |
Gemini AI Incremental ReviewThis is an incremental review focusing on changes since the last review. Issues (if any)(none) Previous Issues (for incremental reviews)
Suggestions (if any)(none) Notes
Generated by Gemini AI (gemini-3.1-pro-preview). Supplementary to human reviews. |
Codex AI Incremental ReviewThis is an incremental review focusing on changes since the last review. Issues (if any)(none) Previous Issues (for incremental reviews)
Suggestions (if any)(none) Notes
Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews. |
Review Response Agent (Iteration 3)Status: No changes needed Fixed Issues
Ignored Issues
Deferred to Human
Notes
The agent reviewed feedback but determined no code changes were required. |
Summary
docker compose build rust-cistep to bothci.ymlandpr-validation.yml. The self-hosted runner was using a stale cached image from beforexvfbwas added to the Dockerfile, causingxvfb-run: command not foundin screenshot tests.pr-validation.ymlso PRs run the same checks as main:Both pipelines now have identical CI steps before diverging (PR validation additionally runs Gemini/Codex AI reviews).
Test plan
Generated with Claude Code