Summary
The dbt-tools E2E CI job has failed on every main run since 2026-09-07 (e.g. run 34109284290 at ec475f4): three dbt resolver e2e > uv tests fail with
error: ENOENT: no such file or directory, posix_spawn '.../packages/dbt-tools/test/.dbt-resolve-envs/uv/.venv/bin/dbt'
while the resolver itself reports Found: .../uv/.venv/bin/dbt (via .venv/ in project root).
Root cause
test/e2e/setup-resolve.sh trusts a .done marker: when the dbt-resolve-envs-Linux-v1 cache is restored it prints ✓ uv (cached) and skips setup. The cached uv venv's bin/python links to a uv-managed interpreter under ~/.local/share/uv, which is outside the cached directory and absent on a fresh runner. bin/dbt therefore exists on disk but its interpreter does not, and exec fails with ENOENT. Because actions/cache only saves on a miss, the broken environment is restored on every run.
Fix
- Validate cached environments by running
<env>/bin/dbt --version and rebuild when it fails.
- Create the uv venv with
--python "$REAL_PYTHON" so it links to the system interpreter that every runner has.
- Bump the cache key to
-v2 so the broken v1 cache is not restored.
Summary
The
dbt-tools E2ECI job has failed on everymainrun since 2026-09-07 (e.g. run 34109284290 atec475f4): threedbt resolver e2e > uvtests fail withwhile the resolver itself reports
Found: .../uv/.venv/bin/dbt (via .venv/ in project root).Root cause
test/e2e/setup-resolve.shtrusts a.donemarker: when thedbt-resolve-envs-Linux-v1cache is restored it prints✓ uv (cached)and skips setup. The cached uv venv'sbin/pythonlinks to a uv-managed interpreter under~/.local/share/uv, which is outside the cached directory and absent on a fresh runner.bin/dbttherefore exists on disk but its interpreter does not, and exec fails with ENOENT. Becauseactions/cacheonly saves on a miss, the broken environment is restored on every run.Fix
<env>/bin/dbt --versionand rebuild when it fails.--python "$REAL_PYTHON"so it links to the system interpreter that every runner has.-v2so the broken v1 cache is not restored.