diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index daf65c2..86f419e 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -81,16 +81,19 @@ jobs: # reveals which shard is the long pole. # # Each shard's docker-ps filter uses its own unique job name to scope - # service-container resolution (act_runner names containers - # `...JOB--...`); shard names must stay unique across the - # workflow for this to work. + # service-container resolution. act_runner appears to strip underscores + # from job names when building container labels — `int_api` yielded + # zero matches on 2026-05-25 — so shards use no-separator names + # (`intapi`, `intimp`, `intcore`) instead. Each step prints + # `docker ps -a` first so a future naming-convention shift surfaces in + # the log without another guess-and-push cycle. # # Pre-baking requirements.txt into ci-python:3.14 is intentionally NOT # done — per ci-requirements.md, FC is the only Python consumer of that # image and the CI-Runner project's "add deps to image when used by >1 # project" rule keeps the install per-job. - int_api: + intapi: runs-on: python-ci container: image: git.fabledsword.com/bvandeusen/ci-python:3.14 @@ -131,8 +134,11 @@ jobs: - name: API integration shard (resolve service IPs, migrate, test) run: | set -eux - PG=$(docker ps --filter "name=JOB-int_api" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) - RD=$(docker ps --filter "name=JOB-int_api" --filter "ancestor=redis:7-alpine" -q | head -n1) + echo "=== container landscape (diagnostic for filter scoping) ===" + docker ps -a --format '{{.ID}} {{.Image}} -> {{.Names}}' + echo "=== end landscape ===" + PG=$(docker ps --filter "name=intapi" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) + RD=$(docker ps --filter "name=intapi" --filter "ancestor=redis:7-alpine" -q | head -n1) test -n "$PG" && test -n "$RD" PG_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$PG") RD_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$RD") @@ -152,7 +158,7 @@ jobs: alembic upgrade head pytest tests/test_api_*.py -v -m integration --durations=15 - int_imp: + intimp: runs-on: python-ci container: image: git.fabledsword.com/bvandeusen/ci-python:3.14 @@ -193,8 +199,11 @@ jobs: - name: Importer integration shard (resolve service IPs, migrate, test) run: | set -eux - PG=$(docker ps --filter "name=JOB-int_imp" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) - RD=$(docker ps --filter "name=JOB-int_imp" --filter "ancestor=redis:7-alpine" -q | head -n1) + echo "=== container landscape (diagnostic for filter scoping) ===" + docker ps -a --format '{{.ID}} {{.Image}} -> {{.Names}}' + echo "=== end landscape ===" + PG=$(docker ps --filter "name=intimp" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) + RD=$(docker ps --filter "name=intimp" --filter "ancestor=redis:7-alpine" -q | head -n1) test -n "$PG" && test -n "$RD" PG_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$PG") RD_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$RD") @@ -214,7 +223,7 @@ jobs: alembic upgrade head pytest tests/test_importer*.py tests/test_import_*.py tests/test_migration_*.py tests/test_phash_*.py tests/test_sidecar_*.py tests/test_scan_*.py tests/test_archive_extractor.py tests/test_backfill_phash.py -v -m integration --durations=15 - int_core: + intcore: runs-on: python-ci container: image: git.fabledsword.com/bvandeusen/ci-python:3.14 @@ -255,8 +264,11 @@ jobs: - name: Core integration shard (everything not api / importer / migration / phash / sidecar / scan / archive / backfill) run: | set -eux - PG=$(docker ps --filter "name=JOB-int_core" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) - RD=$(docker ps --filter "name=JOB-int_core" --filter "ancestor=redis:7-alpine" -q | head -n1) + echo "=== container landscape (diagnostic for filter scoping) ===" + docker ps -a --format '{{.ID}} {{.Image}} -> {{.Names}}' + echo "=== end landscape ===" + PG=$(docker ps --filter "name=intcore" --filter "ancestor=pgvector/pgvector:pg16" -q | head -n1) + RD=$(docker ps --filter "name=intcore" --filter "ancestor=redis:7-alpine" -q | head -n1) test -n "$PG" && test -n "$RD" PG_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$PG") RD_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$RD")