Skip to content

ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml - #552

Merged
rapids-bot[bot] merged 8 commits into
mainfrom
ci/pip-index
Oct 6, 2026
Merged

rapids-bot[bot] merged 8 commits into
mainfrom
ci/pip-index

Conversation

@jameslamb

@jameslamb jameslamb commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Contributes to rapidsai/build-planning#338

Enables NVIDIA's self-hosted pull-through proxy cache for pypi.anaconda.org. See the linked issue for benefits of doing that.

  • removes --extra-index-url pointing at nightly index from dependencies.yaml (already set globally in CI images)
  • sets PIP_EXTRA_INDEX_URL explicitly in pip devcontainers (so it doesn't need to rely on values from dependencies.yaml)

Notes for Reviewers

How I tested this

Saw pip-based CI jobs emit lines like this from pip install

Looking in indexes:
https://pip-cache.local.gha-runners.nvidia.com/simple,
https://pypi-anaconda-cache.local.gha-runners.nvidia.com/rapidsai-wheels-nightly/simple

(build link)

@jameslamb jameslamb added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Oct 1, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@jameslamb

Copy link
Copy Markdown
Member Author

/ok to test 7e1d343

# * echo to expand wildcard before adding `[extra]` requires for pip
# * '--extra-index-url pypi.nvidia.com' can be removed when 'cugraph' and
# its dependencies are available from pypi.org
#

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment was not moved when the arguments it describes were moved up into this PIP_INSTALL_ARGS array. Cleaning that up while I'm here, but it's unrelated to this PR's other goals.

Comment thread dependencies.yaml
Comment on lines -592 to -596
- output_types: requirements
packages:
# pip recognizes the index as a global option for the requirements.txt file
- --extra-index-url=https://pypi.nvidia.com
- --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general we shouldn't need any --extra-index-url entries like this for projects built within this same repo.

Any CI jobs should be getting the just-built-in-CI packages and devcontainers should be building everything from source.

Comment thread ci/build_wheel.sh Resolved
@jameslamb jameslamb changed the title WIP: ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml [DO NOT MERGE] ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml Oct 5, 2026
@jameslamb jameslamb added the DO NOT MERGE Hold off on merging; see PR for details label Oct 5, 2026
@jameslamb
jameslamb marked this pull request as ready for review October 5, 2026 19:36
@jameslamb
jameslamb requested review from a team as code owners October 5, 2026 19:36
@jameslamb
jameslamb requested a review from msarahan October 5, 2026 19:36
jameslamb added a commit to rapidsai/devcontainers that referenced this pull request Oct 6, 2026
In rapidsai/build-planning#338, I'm working on
enabling NVIDIA's self-hosted proxy cache for `pypi.anaconda.org` in CI.

To do that, we want to pass an extra index URL to `pip` like
`https://pypi-anaconda-cache.local.gha-runners.nvidia.com/rapidsai-wheels-nightly/simple/`
and avoid ever passing
`https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/`.

RAPIDS devcontainers depend on projects' `dependencies.yaml` files to
supply `--extra-index-url` values needed to construct the environment.
e.g. cuML has something like this:

```yaml
  depends_on_cudf:
    common:
      - output_types: requirements
        packages:
          - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple
    specific:
      - output_types: [requirements, pyproject]
        matrices:
          - matrix:
              cuda: "12.*"
              cuda_suffixed: "true"
            packages:
              - cudf-cu12==26.12.*,>=0.0.0a0
          - matrix:
              cuda: "13.*"
              cuda_suffixed: "true"
            packages:
              - cudf-cu13==26.12.*,>=0.0.0a0
          - matrix:
              cuda_suffixed: "false"
            packages:
              - *cudf_unsuffixed
```

([build
link](https://github.com/NVIDIA/cuml/blob/ac7dc8f3a5a222c3f8d0d1460a4f95bae99c1253/dependencies.yaml#L794))

Which would write something like this to the `requirements.txt`
generated by tools in devcontainers:

```text
--extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple
cudf-cu13==26.12.*,>=0.0.0a0
```

So in RAPIDS CI, we have to find someway to either convert those to the
proxy cache URL or avoid generating them at all.

I'm proposing that we *remove* those types of entries from
`dependencies.yaml` (example:
rapidsai/cugraph-gnn#552) across RAPIDS, and
instead just pass the nightly index unconditionally in devcontainers'
environments.

## Alternatives

Instead of this, I also considered modifying projects'
`dependencies.yaml` files like this:

```diff
diff --git a/dependencies.yaml b/dependencies.yaml
index 441f83f5b1..609c4c00a6 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -1319,11 +1319,16 @@ dependencies:
       - output_types: conda
         packages:
           - &libcudf_unsuffixed libcudf==26.12.*,>=0.0.0a0
-      - output_types: [requirements, constraints]
-        packages:
-          # pip recognizes the index as a global option for the requirements.txt file
-          - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/
     specific:
+      - output_types: [requirements, constraints]
+        matrices:
+          - matrix:
+              include_pip_indices: false
+            packages:
+          - matrix:
+            packages:
+              # pip recognizes the index as a global option for the requirements.txt file
+              - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/
       - output_types: [requirements, constraints, pyproject]
         matrices:
           - matrix:
```

And passing `include_pip_indices=false` at all the call sites in RAPIDS
CI. But that seems more complex and error-prone than excluding it from
`dependencies.yaml` altogether.
@jameslamb jameslamb changed the title [DO NOT MERGE] ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml Oct 6, 2026
@rapidsai rapidsai deleted a comment from greptile-apps Bot Oct 6, 2026
@rapidsai rapidsai deleted a comment from greptile-apps Bot Oct 6, 2026
@rapidsai rapidsai deleted a comment from greptile-apps Bot Oct 6, 2026
@greptile-apps

This comment was marked as resolved.

@jameslamb jameslamb removed the DO NOT MERGE Hold off on merging; see PR for details label Oct 6, 2026
@jameslamb

Copy link
Copy Markdown
Member Author

/merge

@rapids-bot
rapids-bot Bot merged commit cc515d8 into main Oct 6, 2026
63 checks passed
@rapids-bot

rapids-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Failed to merge PR using squash strategy.

@jameslamb
jameslamb deleted the ci/pip-index branch October 6, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants