From f85b1d440e1ebbd4e3177ee03da2961875462c2e Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sun, 19 Apr 2026 10:42:51 +0200 Subject: [PATCH] fix(ci): poll PyPI JSON API for availability check Replace `pip install --dry-run --no-cache-dir` with a curl request to the PyPI JSON API. pip resolves against the Simple Index, which is served via Fastly and can return stale `/simple/reqstool/` pages for minutes after upload. `--no-cache-dir` only disables pip's on-disk cache; it does not bypass the upstream CDN cache. The JSON endpoint `/pypi/{name}/{version}/json` is the canonical, cache-friendly way to check whether a specific version exists. Observed failure: run 24624666126 (release of 0.9.0) polled for the full 15 minutes and never saw the package, even though the JSON API returns 200 for reqstool 0.9.0. Signed-off-by: Jimisola Laursen --- .github/workflows/release_prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_prod.yml b/.github/workflows/release_prod.yml index f3970a9..f3717c4 100644 --- a/.github/workflows/release_prod.yml +++ b/.github/workflows/release_prod.yml @@ -73,7 +73,7 @@ jobs: VERSION="${{ steps.meta.outputs.version }}" echo "Waiting for reqstool==${VERSION} to become available on PyPI..." for i in $(seq 1 90); do - if pip install --dry-run --no-cache-dir "reqstool==${VERSION}" &>/dev/null; then + if curl -fsSL -o /dev/null "https://pypi.org/pypi/reqstool/${VERSION}/json"; then echo "reqstool==${VERSION} is available on PyPI" exit 0 fi