Skip to content
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

Add GitHub Actions Workflows #1062

Merged
merged 41 commits into from
Jan 4, 2023
Merged

Add GitHub Actions Workflows #1062

merged 41 commits into from
Jan 4, 2023

Conversation

bdice
Copy link
Contributor

@bdice bdice commented Dec 5, 2022

Description

This PR adds GitHub Actions workflows to dask-cuda.

Task list

Coverage required for this PR:

  • Python tests
  • Codecov
  • Style checks

Future work required:

@github-actions github-actions bot added the gpuCI gpuCI issue label Dec 5, 2022
@codecov-commenter
Copy link

codecov-commenter commented Dec 7, 2022

Codecov Report

Base: 0.00% // Head: 0.00% // No change to project coverage 👍

Coverage data is based on head (ce9a14f) compared to base (8c87288).
Patch coverage: 0.00% of modified lines in pull request are covered.

❗ Current head ce9a14f differs from pull request most recent head 5712a8b. Consider uploading reports for the commit 5712a8b to get more accurate results

Additional details and impacted files
@@             Coverage Diff              @@
##           branch-23.02   #1062   +/-   ##
============================================
  Coverage          0.00%   0.00%           
============================================
  Files                26      26           
  Lines              3439    3433    -6     
============================================
+ Misses             3439    3433    -6     
Impacted Files Coverage Δ
dask_cuda/benchmarks/local_cudf_groupby.py 0.00% <ø> (ø)
dask_cuda/cuda_worker.py 0.00% <0.00%> (ø)
dask_cuda/local_cuda_cluster.py 0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@bdice
Copy link
Contributor Author

bdice commented Dec 7, 2022

Thanks @pentschev for helping with the libnuma questions and @ajschmidt8 for updating the base images. Tests appear to be passing now. I’m going to open this for review but it should not be merged until after the 22.12 release, when we will migrate most repos to GitHub Actions. Can someone with privileges mark this DO NOT MERGE?

@bdice bdice marked this pull request as ready for review December 7, 2022 03:24
@bdice bdice requested a review from a team as a code owner December 7, 2022 03:24
@madsbk madsbk added 5 - DO NOT MERGE Hold off on merging; see PR for details improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Dec 7, 2022
@bdice bdice changed the title Add GitHub Actions Workflows [skip gpuci] Add GitHub Actions Workflows Dec 7, 2022
@github-actions github-actions bot added the conda conda issue label Dec 13, 2022
.github/workflows/build.yaml Outdated Show resolved Hide resolved
.github/workflows/pr.yaml Outdated Show resolved Hide resolved
.github/workflows/pr.yaml Outdated Show resolved Hide resolved
ci/release/update-version.sh Outdated Show resolved Hide resolved
ajschmidt8 and others added 10 commits January 1, 2023 12:15
- `strategy.fail-fast` is only necessary for matrix builds
- `runs-on` can be changed to use GH hosted runners since the respective builds are quick
  - GH hosted runners are cheaper and are usually available a bit quicker than our self-hosted nodes
- `env` vars aren't necessary
the environment variables standardized by these steps are only used in the `gha-tools` scripts that upload/download artifacts from S3.

since these jobs don't upload/download artifacts from S3, these enironment variables are not necessary
`shellcheck` prefers `$()` vs. backticks
using a more generic matching pattern will help prevent potential issues in the future if the tags somehow get out of sync
@ajschmidt8 ajschmidt8 removed the 5 - DO NOT MERGE Hold off on merging; see PR for details label Jan 1, 2023
and remove `external_contributors` since its not a valid entry
@ajschmidt8
Copy link
Member

I don't think the latest pytest failures are related to the changes in our PR.

They also seem to be appearing in #1069.

@pentschev
Copy link
Member

I don't think the latest pytest failures are related to the changes in our PR.

They also seem to be appearing in #1069.

They're not related, I opened #1070 to track that.

Copy link
Member

@pentschev pentschev left a comment

Choose a reason for hiding this comment

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

Thanks @bdice and @ajschmidt8 for the hard work you've put on this. I've added a few comments.


# Usage:
# conda build -c conda-forge .
{% set data = load_file_data("pyproject.toml") %}

{% set version = environ.get('GIT_DESCRIBE_TAG', '0.0.0.dev').lstrip('v') + environ.get('VERSION_SUFFIX', '') %}
{% set number = environ.get('GIT_DESCRIBE_NUMBER', 0) %}
{% set py_version = environ.get('CONDA_PY', 36) %}
{% set py_version = environ['CONDA_PY'] %}
Copy link
Member

Choose a reason for hiding this comment

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

I understand probably now we are sure that CONDA_PY is set, but what if there's a regression, wouldn't be better to keep a safe default like other variables have?

Copy link
Contributor Author

@bdice bdice Jan 3, 2023

Choose a reason for hiding this comment

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

This is set by conda, not by RAPIDS. This should be safe -- and if it's not, we want to have a hard failure. Also we want to avoid setting defaults that need continually updated in the recipes as we change Python version support.

.github/workflows/build.yaml Show resolved Hide resolved
echo "FAILED: Local benchmark with explicit comms"
fi

exit ${SUITEERROR}
Copy link
Member

Choose a reason for hiding this comment

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

This will only capture the latest error, which may or may not be fine depending on how this is handled outside. Since we can't return multiple error codes on a single script, I think it might make sense to:

  1. Have one script per executed test (in this particular case we would need 3, the first pytest and two benchmarks); or
  2. Logging the error code for each failing test and returning a generic error code that the caller of this script will be able to parse (e.g., 0 for "success" and 1 for "error(s) occurred").

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We have plans to revisit and simplify some of this logic in follow-up PRs, but ultimately I think we only care to distinguish zero (success) from non-zero (failure) exit codes for the purposes of GitHub Actions calling this script.

Comment on lines +24 to +25
- rapidsai
- rapidsai-nightly
Copy link
Member

Choose a reason for hiding this comment

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

Do we really want both rapidsai and rapidsai-nightly here?

Copy link
Contributor Author

@bdice bdice Jan 3, 2023

Choose a reason for hiding this comment

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

Yes. The tests require cudf (among other RAPIDS packages), and the pinning of cudf=23.02 requires rapidsai-nightly. For any dependencies on other RAPIDS packages, we want to test against nightlies so we are aware of breakage before release time.

- cudf=23.02
- dask-cudf=23.02

@ajschmidt8
Copy link
Member

rerun tests

- name: Build wheel
run: ci/build_python_pypi.sh
- name: Publish distribution 📦 to PyPI
if: inputs.build_type == 'branch'
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
if: inputs.build_type == 'branch'
if: inputs.build_type == 'nightly'

For parity with the Jenkins setup, we should only publish this once a day (at night).

We'll also need to add this repo to the RAPIDS nightly pipeline below

.github/workflows/pr.yaml Show resolved Hide resolved
.github/workflows/pr.yaml Show resolved Hide resolved
@ajschmidt8
Copy link
Member

/merge

@rapids-bot rapids-bot bot merged commit d78c60a into rapidsai:branch-23.02 Jan 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
conda conda issue gpuCI gpuCI issue improvement Improvement / enhancement to an existing function non-breaking Non-breaking change
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

5 participants