CI: cross-job dependency caching (shell client for the act-runner cache server) #6

Merged
johnpreston merged 2 commits from ci/shell-cache into main 2026-09-15 17:51:38 +00:00
Member

actions/cache@v4 is a Node action fetched from github.com - unreachable from the runner network, and job containers are deliberately nodeless. scripts/ci-cache.sh speaks the act-runner artifactcache REST protocol directly (lookup, reserve, upload, commit), verified against the forgejo-runner source (act/artifactcache/handler.go).

  • Keyed on the poetry.lock hash, per python version (tests) + docs/build jobs
  • Caches the poetry venv + ~/.cache/pypoetry + ~/.cache/pip
  • Best-effort: any cache failure exits 0 - CI never breaks because of the cache
  • First run: save-only (miss); this PR run itself validates both paths

Measured context: jobs spend a chunk of their 110-175s in poetry install; warm-cache runs should cut that on repeat commits.

actions/cache@v4 is a Node action fetched from github.com - unreachable from the runner network, and job containers are deliberately nodeless. scripts/ci-cache.sh speaks the act-runner **artifactcache REST protocol** directly (lookup, reserve, upload, commit), verified against the forgejo-runner source (act/artifactcache/handler.go). - Keyed on the poetry.lock hash, per python version (tests) + docs/build jobs - Caches the poetry venv + ~/.cache/pypoetry + ~/.cache/pip - Best-effort: any cache failure exits 0 - CI never breaks because of the cache - First run: save-only (miss); this PR run itself validates both paths Measured context: jobs spend a chunk of their 110-175s in poetry install; warm-cache runs should cut that on repeat commits.
CI: cross-job dependency caching via act-runner cache server (shell client)
Some checks failed
CI / Lint (ruff) (pull_request) Successful in 2m25s
CI / Tests (Python 3.11) (pull_request) Failing after 2s
CI / Tests (Python 3.10) (pull_request) Successful in 5m12s
CI / Tests (Python 3.12) (pull_request) Successful in 2m51s
CI / Tests (Python 3.13) (pull_request) Successful in 2m57s
CI / Tests (Python 3.14) (pull_request) Successful in 3m0s
CI / Package build (pull_request) Successful in 2m43s
CI / Docs build (pull_request) Successful in 3m24s
0d0f043c14
actions/cache@v4 is a Node action fetched from github.com — unreachable
from the runner network and the job containers are deliberately nodeless.
scripts/ci-cache.sh speaks the act-runner artifactcache REST protocol
directly (lookup/reserve/upload/commit), keyed on poetry.lock hash, and is
best-effort: cache failures never fail a job.

Caches the poetry venv + pip/pypoetry caches for tests (per python
version), docs and build jobs.
ci: retrigger - 3.11 flake check + warm-cache validation run
All checks were successful
CI / Lint (ruff) (pull_request) Successful in 11s
CI / Tests (Python 3.11) (pull_request) Successful in 3m5s
CI / Tests (Python 3.10) (pull_request) Successful in 3m14s
CI / Tests (Python 3.12) (pull_request) Successful in 2m13s
CI / Tests (Python 3.13) (pull_request) Successful in 2m52s
CI / Tests (Python 3.14) (pull_request) Successful in 3m1s
CI / Docs build (pull_request) Successful in 3m7s
CI / Package build (pull_request) Successful in 2m4s
a5729c2110
Sign in to join this conversation.
No reviewers
No labels
ci::lib
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
compose-x/compose-x-common!6
No description provided.