-
Notifications
You must be signed in to change notification settings - Fork 932
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install upstream dev dependencies in nightly CI #17999
Install upstream dev dependencies in nightly CI #17999
Conversation
This installs dev versions (from source) of dask and distributed in the nightly CI of dask-cudf. When paired with rapidsai/rapids-dask-dependency#85, we'll have CI for pull requests and merge commits against released versions of Dask, but keep nightly CI runs against upstream dev versions. This ensures we'll still have advanced notice of upstream changes that cause CI failures, without disrupting day-to-day activity.
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. |
@@ -16,6 +16,12 @@ rapids-logger "Install dask_cudf, cudf, pylibcudf, and test requirements" | |||
# generate constraints (possibly pinning to oldest support versions of dependencies) | |||
rapids-generate-pip-constraints py_test_dask_cudf ./constraints.txt | |||
|
|||
# latest-nightly builds are run against upstream *dev* versions of various packages: | |||
if [[ "${RAPIDS_DEPENDENCIES}" == "latest" ]] && [[ "${BUILD_TYPE}" == "nightly" ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RAPIDS_DEPENDENCIES
is set here and
BUILD_TYPE
is set here
With RAPIDS_DEPENDENCIES="latest"
, rapids-generate-pip-constraints currently outputs an empty text file: https://github.com/rapidsai/gha-tools/blob/4e9add6b630887217825bbbcd2009742dab271ec/tools/rapids-generate-pip-constraints#L32-L34.
I share your opinion. Historical Context: In the past, we had GPU-CI running on all dask and distributed PRs (for the rest of this blurb, I'll use We no longer have GPU-CI running in dask and distributed in todays world, because RAPIDS no longer supports the underlying Jenkins infrastructure (and the GHA replacement option was not deemed acceptable). In the past, we also had two clear sources of motivation to stay tightly aligned with
It is no longer our strategy to rely on upstream contributions for RAPIDS roadmap items. However, it is still true that divergence from My personal take-away: Given the historical context, I completely agree that it no longer makes sense to expose all of RAPIDS CI to the latest change in |
@pentschev points out that when, say, dask-cudf needs to adapt to an upstream change then CI won't automatically run against upstream dev like it did previously, and so the fix won't actually be tested in CI until after it's merged. Which isn't great. xarary has a test-upstream job: https://github.com/pydata/xarray/blob/3dafcf9a29b82930828ca0bd8ff0a038b4affcd3/.github/workflows/upstream-dev-ci.yaml#L37. By including I'll see if we can do something similar here. |
Closing this in favor of running some cudf tests in |
This installs dev versions (from source) of dask and distributed in the nightly CI of dask-cudf.
When paired with rapidsai/rapids-dask-dependency#85, we'll have CI for pull requests and merge commits against released versions of Dask, but keep nightly CI runs against upstream dev versions. This ensures we'll still have advanced notice of upstream changes that cause CI failures, without disrupting day-to-day activity.
Description
I think we we want two things out of our CI, with respect to our dependencies:
The "insulation from" / "exposure to" framing makes clear that these two goals are in tension.
Currently,
rapids-dask-dependency
specifies a dependency on daskmain
. When downstream RAPIDS projects (like cuDF) solve their environment, they depend onrapids-dask-dependency
and get the transitive dependency on daskmain
.This setup gives us complete exposure to upstream dev changes. CI immediately fails, and we scramble to fix things, either upstream in Dask or downstream in RAPIDS libraries. IMO (and it's just that: my opinion), that doesn't strike a good balance between the two goals.
I propose an alternative setup that gives us some of both.
Relative to today, we'll have less testing against dask
main
. But by monitoring nightly builds we still get advanced notice of a change that has broken our builds, which can be addressed before a release is made.Checklist