feat(deploy): give the PR reviewer its own image, like every other agent

pr-reviewer-1 was the one agent with no dedicated image and no compose
builder service — it reused roboco-agent-base, which left it absent from the
compose files entirely (so it looked like the PR reviewer simply was not
there). Make it first-class for parity: add docker/agent-pr-reviewer.Dockerfile
(FROM the base — read-only reviewer, no extra toolchain), an
agent-pr-reviewer-image builder service in both compose files and the registry
compose, the image in the release workflow's publish list, and map
pr-reviewer-1 -> roboco-agent-pr-reviewer in the orchestrator plus its
lazy-build dockerfile map. Supersedes the earlier base-reuse mapping.
This commit is contained in:
Renn F
2026-06-17 00:56:56 +02:00
parent 00c467a894
commit 7a8c083c31
7 changed files with 57 additions and 8 deletions
@@ -53,8 +53,10 @@ def test_get_agent_image_local_default(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(orch.settings, "agent_image_registry", "")
monkeypatch.setattr(orch.settings, "agent_image_tag", "")
assert orch.get_agent_image("be-dev-1") == "roboco-agent-dev-be"
# Unknown agent id falls back to the base image.
assert orch.get_agent_image("pr-reviewer-1") == "roboco-agent-base"
# The PR reviewer has its own image (parity with the other agents).
assert orch.get_agent_image("pr-reviewer-1") == "roboco-agent-pr-reviewer"
# A genuinely unknown agent id falls back to the base image.
assert orch.get_agent_image("nope-not-real") == "roboco-agent-base"
def test_get_agent_image_registry_mode(monkeypatch: pytest.MonkeyPatch) -> None:
@@ -66,5 +68,5 @@ def test_get_agent_image_registry_mode(monkeypatch: pytest.MonkeyPatch) -> None:
)
assert (
orch.get_agent_image("pr-reviewer-1")
== "ghcr.io/rennf93/roboco-agent-base:0.5.0"
== "ghcr.io/rennf93/roboco-agent-pr-reviewer:0.5.0"
)