1) Cache act_runner phải nằm trên volume.
Mặc định cache.dir rỗng -> act_runner ghi vào $HOME/.cache/actcache, tức
WRITABLE LAYER của container. Đo thực tế trên ba máy: 278 GB / 95 GB / 32 GB
nằm ở đó, mất sạch chỉ với một lệnh docker compose up -d.
Thêm volume runner-cache mount vào /cache và đặt cache.dir="/cache".
Hai chỗ này phải luôn đổi cùng nhau.
2) Ghim image theo digest thay vì :nightly.
Tag tự cập nhật nghĩa là compose pull có thể tạo lại container sau lưng, kéo
theo mất cache. Nâng cấp có chủ đích: đổi digest, commit, rồi mới áp dụng.
3) XOÁ runner.sh.
Nó lỗi thời (đã thay bằng docker compose) và quan trọng hơn: nó chứa
GITEA_RUNNER_REGISTRATION_TOKEN dạng plaintext đã commit vào git. Ai có token
đó đăng ký được runner vào Gitea, tức chạy job tuỳ ý trên hạ tầng này.
XOÁ FILE LÀ CHƯA ĐỦ - token vẫn nằm trong lịch sử git, BẮT BUỘC phải thu hồi
và cấp lại token trong Gitea.
4) README: bổ sung bước clone cho máy builder mới, cảnh báo phải kiểm tra job
đang chạy trước khi tạo lại runner (tạo lại là mồ côi job đang chạy), và
phần dọn rác trong DinD (image/volume/build cache không tự dọn - một máy đo
được 515 image thừa và 71 GB build cache).
Stable docker-compose setup for building Rust projects on Gitea Actions.
DinD-isolated daemon, built-in cache server, capacity=4 parallel jobs,
healthcheck-gated startup. Portable to other build machines via .env.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HU4wDwdydNZpR3YkMiYYy8