Skip to content

Commit 12e40ae

Browse files
MiaoDXcodex
andcommitted
fix(ci): restore Docker image builds
Replace the obsolete Debian GL package in the CPU image and copy README.md into metadata-only Docker build contexts so Hatchling editable installs can validate package metadata. Co-authored-by: Codex <codex@users.noreply.github.com>
1 parent f3234b2 commit 12e40ae

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ FROM python:3.12-slim
1313
RUN apt-get update && \
1414
apt-get install -y --no-install-recommends \
1515
libosmesa6-dev \
16-
libgl1-mesa-glx \
16+
libgl1 \
1717
git \
1818
&& rm -rf /var/lib/apt/lists/*
1919

@@ -26,6 +26,7 @@ ENV UV_SYSTEM_PYTHON=1
2626
# Copy only dependency metadata first (for layer caching)
2727
WORKDIR /opt/roboharness
2828
COPY pyproject.toml .
29+
COPY README.md .
2930
RUN mkdir -p src/roboharness && \
3031
echo '__version__ = "0.0.0"' > src/roboharness/__init__.py
3132

Dockerfile.gpu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ ENV UV_SYSTEM_PYTHON=1
3333
# Copy only dependency metadata first (for layer caching)
3434
WORKDIR /opt/roboharness
3535
COPY pyproject.toml .
36+
COPY README.md .
3637
RUN mkdir -p src/roboharness && \
3738
echo '__version__ = "0.0.0"' > src/roboharness/__init__.py
3839

tests/contract/test_dockerfiles.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""Contract tests for CI Docker image definitions."""
2+
3+
from __future__ import annotations
4+
5+
from pathlib import Path
6+
7+
REPO_ROOT = Path(__file__).resolve().parents[2]
8+
9+
10+
def _dockerfile(name: str) -> str:
11+
return (REPO_ROOT / name).read_text()
12+
13+
14+
def test_cpu_dockerfile_uses_current_debian_gl_package() -> None:
15+
dockerfile = _dockerfile("Dockerfile")
16+
17+
assert "libgl1-mesa-glx" not in dockerfile
18+
assert "libgl1" in dockerfile
19+
20+
21+
def test_dockerfiles_copy_readme_before_editable_install() -> None:
22+
for name in ("Dockerfile", "Dockerfile.gpu"):
23+
dockerfile = _dockerfile(name)
24+
readme_index = dockerfile.index("COPY README.md .")
25+
install_index = dockerfile.index('RUN uv pip install -e "')
26+
27+
assert readme_index < install_index

0 commit comments

Comments
 (0)