fix(ci): export UV_INDEX_STRATEGY to current shell before running uv sync

The previous fix only exported UV_INDEX_STRATEGY to GITHUB_ENV, which
only affects subsequent GitHub Actions steps. However, uv sync runs in
the same step, so it never saw the UV_INDEX_STRATEGY variable.

This caused uv to fail when UV_EXTRA_INDEX_URL was set (on release
branches) because uv would find packages on test.pypi but refuse to
check PyPI for compatible versions, resulting in:

  setuptools was found on test.pypi but not at the requested version.
  A compatible version may be available on PyPI. Use --index-strategy
  unsafe-best-match to check all indexes.

The fix adds export UV_INDEX_STRATEGY=unsafe-best-match to make it
available in the current shell before running uv commands.
This commit is contained in:
Ashwin Bharambe 2025-11-01 07:45:27 -07:00
parent e0bb7529ed
commit ffcb76597b

View file

@ -29,11 +29,12 @@ runs:
env: env:
UV_EXTRA_INDEX_URL: ${{ steps.client-config.outputs.uv-extra-index-url }} UV_EXTRA_INDEX_URL: ${{ steps.client-config.outputs.uv-extra-index-url }}
run: | run: |
# Export UV env vars to GITHUB_ENV so they persist across steps # Export UV env vars for current step and persist to GITHUB_ENV for subsequent steps
if [ -n "$UV_EXTRA_INDEX_URL" ]; then if [ -n "$UV_EXTRA_INDEX_URL" ]; then
export UV_INDEX_STRATEGY=unsafe-best-match
echo "UV_EXTRA_INDEX_URL=$UV_EXTRA_INDEX_URL" >> $GITHUB_ENV echo "UV_EXTRA_INDEX_URL=$UV_EXTRA_INDEX_URL" >> $GITHUB_ENV
echo "UV_INDEX_STRATEGY=unsafe-best-match" >> $GITHUB_ENV echo "UV_INDEX_STRATEGY=$UV_INDEX_STRATEGY" >> $GITHUB_ENV
echo "Exported UV environment variables for subsequent steps" echo "Exported UV environment variables for current and subsequent steps"
fi fi
echo "Updating project dependencies via uv sync" echo "Updating project dependencies via uv sync"