Make CI pip indexes explicit with safe diagnostics and sequential fallback
This commit is contained in:
@@ -310,3 +310,31 @@ fallback can retry. Abrupt host/daemon loss or a forcibly terminated entire job
|
||||
can prevent both cleanup paths; no CI script can guarantee cleanup in that case.
|
||||
No global prune or production resource removal is performed. Keep builder
|
||||
caches: only the run-specific image tag is removed.
|
||||
|
||||
### CI Job pip indexes versus Docker build indexes
|
||||
|
||||
The Job bootstrap runs `python scripts/ci-install.py` before Ruff/mypy/tests.
|
||||
It needs only the Python standard library, so it runs before PyYAML or tooling
|
||||
is installed. `CI_PIP_INDEX_URL` and `CI_PIP_FALLBACK_INDEX_URL` are optional
|
||||
Gitea repository variables. Defaults are the TUNA HTTPS PyPI simple endpoint
|
||||
and official `https://pypi.org/simple`. Each is attempted separately; the
|
||||
fallback repeats the unchanged editable `.[test]` installation, including
|
||||
PEP 517 build isolation and `setuptools>=75`. No simultaneous extra index is
|
||||
used, no build dependency is removed, and both failures fail CI.
|
||||
|
||||
Logs show inherited index/config/proxy hosts and the selected index host for
|
||||
each attempt, with URL credentials and query strings removed. Bootstrap
|
||||
disables inherited pip config files via `PIP_CONFIG_FILE=/dev/null`, explicitly
|
||||
sets the selected index, and clears no-index/extra-index/find-links, insecure
|
||||
trusted-host, and no-build-isolation environment settings. Constraints, TLS
|
||||
certificate environment settings, and proxy settings remain in effect.
|
||||
|
||||
These `CI_PIP_*` settings apply only to the Job's pip install. They are not
|
||||
passed into Docker build arguments or persisted into the production image.
|
||||
The Dockerfile keeps its own cached/offline dependency installation and logs
|
||||
the Docker pip index host for online installs. Debian mirror variables affect
|
||||
APT only and are loaded later in the Docker verification step.
|
||||
|
||||
If dependency installation fails, the always() cleanup step still executes.
|
||||
It skips the Python/PyYAML cleanup script when no CI Compose manifest exists,
|
||||
as no Docker verification resources have been created at that point.
|
||||
|
||||
Reference in New Issue
Block a user