Skip to content

[ci] Split test requirements by subproject - #7728

Draft
ScottTodd wants to merge 8 commits into
mainfrom
users/scotttodd/test-requirements-split
Draft

[ci] Split test requirements by subproject#7728
ScottTodd wants to merge 8 commits into
mainfrom
users/scotttodd/test-requirements-split

Conversation

@ScottTodd

Copy link
Copy Markdown
Member

Motivation

We've been using a common https://github.com/ROCm/TheRock/blob/main/requirements-test.txt file across all ROCm subproject tests that seemed convenient to extend at the time, but it has a few drawbacks:

Technical Details

Important

Now each project that installs additional requirements should provide its own requirements.txt as part of its test artifact and register that with the CI test system via the additional_requirements_files field in build_tools/github_actions/fetch_test_configurations.py.

Comparing https://github.com/ROCm/TheRock/actions/runs/33191445520 (this branch) vs a baseline https://github.com/ROCm/TheRock/actions/runs/33159247177, in aggregate across up to 50 subproject test jobs, this results in:

  • Most test jobs now download ~15MB instead of 110MB of python packages --> save ~4.5GB of download bandwidth per full CI run
  • Installing requirements median time dropped from 39s to 2.5s --> save ~24 runner-minutes per full CI run

Test Plan

  • Tested via workflow_dispatch: https://github.com/ROCm/TheRock/actions/runs/33191445520 and checked that jobs complete successfully after installing the expected set of packages
  • Note the 'quick' test levels, while projects run additional tests that other test levels that may have additional requirements

Submission Checklist

Install artifact-provided requirements for component tests and carry the configuration through failure reproduction commands. Remove the libhipcxx and TensileLite dependencies from the shared test environment.

Tests: 52 passed in the targeted build_tools test suite.

Generated with Codex
Always pass the component requirements list from the workflow and let the installer no-op when the list is empty.

Generated with Codex
@therock-pr-bot

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass
Forbidden Files ✅ Pass
🧪 Unit Test ✅ Pass
🚫 Draft PR 🔜 To Be Enabled
🚩 Feature Flag 🔜 To Be Enabled
📊 Code Coverage 🔜 To Be Enabled

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: TODO

Development

Successfully merging this pull request may close these issues.

[Feature]: Split test requirements by subproject to optimize component test environment setup time

1 participant