-
Notifications
You must be signed in to change notification settings - Fork 21
[CI][Enhancement] Create a blank environment to test the installation of the TileOPs dependency library. #150
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
base: main
Are you sure you want to change the base?
Conversation
|
Note Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported. |
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.
Pull request overview
Updates CI to validate dependency installation in a freshly created Python environment rather than relying on pre-provisioned Conda environments.
Changes:
- Pin key dependencies (PyTorch, TileLang) and add
pytesttorequirements.txt. - Replace Conda activation in CI test jobs with
actions/setup-python+venvcreation andpip install -r requirements.txt. - Keep release and nightly test logs as uploaded artifacts.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
requirements.txt |
Pins dependency versions and adds pytest for CI/test execution. |
.github/workflows/ci.yml |
Creates/activates a venv and installs dependencies before running the existing test script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| python -m pip install --upgrade pip setuptools wheel --no-user | ||
| if [[ -f requirements.txt ]]; then | ||
| export PIP_NO_BUILD_ISOLATION=1 pip install -r requirements.txt --no-user |
Copilot
AI
Jan 23, 2026
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.
In the nightly job, export PIP_NO_BUILD_ISOLATION=1 pip install ... does not execute pip; export treats pip/install/etc as variable names and the dependency installation step will be skipped. Set PIP_NO_BUILD_ISOLATION on its own line or prefix the command (as done in the release job).
| export PIP_NO_BUILD_ISOLATION=1 pip install -r requirements.txt --no-user | |
| export PIP_NO_BUILD_ISOLATION=1 | |
| pip install -r requirements.txt --no-user |
| - name: Ensure persistent venv and install dependencies | ||
| run: | | ||
| source ~/miniconda3/etc/profile.d/conda.sh | ||
| conda activate tileops-release | ||
| set -e | ||
| VENV_DIR="tileops_venv" | ||
| REQS_HASH=$(sha256sum requirements.txt 2>/dev/null | awk '{print $1}' || echo "no_requirements") | ||
| MARKER="${{ runner.tool_cache }}/.venv_marker_${{ runner.os }}_${REQS_HASH:0:8}" | ||
|
|
||
| if [[ -f "$MARKER" ]] && [[ -f "${{ runner.tool_cache }}/${VENV_DIR}/bin/activate" ]]; then | ||
| echo "Found cached venv and matching marker — reusing" | ||
| else |
Copilot
AI
Jan 23, 2026
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.
This workflow claims to create a fresh environment per CI run, but the venv reuse logic (marker + ${{ runner.tool_cache }}) can keep state across runs on self-hosted runners. If the goal is to validate install-from-scratch, consider always recreating the venv, or switch to an explicit actions/cache key and clear it when validating the README install path.
| if [[ -f requirements.txt ]]; then | ||
| PIP_NO_BUILD_ISOLATION=1 pip install -r requirements.txt --no-user | ||
| else | ||
| echo "requirements.txt not found — skipping pip install -r requirements.txt" | ||
| fi | ||
| touch "$MARKER" | ||
| fi | ||
| shell: bash | ||
|
|
||
| - name: Run tests | ||
| run: | | ||
| VENV_DIR="tileops_venv" | ||
| source "${{ runner.tool_cache }}/${VENV_DIR}/bin/activate" | ||
| export PYTHONPATH="$(pwd):$PYTHONPATH" | ||
| echo "PYTHONPATH=$PYTHONPATH" | ||
| bash tests/ci_test.sh tileops_test_release.log |
Copilot
AI
Jan 23, 2026
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.
The install step only runs pip install -r requirements.txt and then sets PYTHONPATH to the repo. If the intent is to validate the README/source install process (and Issue #127's “build and install TileOps” requirement), add a step that installs the package via pip (e.g., editable install with the project’s extras) instead of relying on PYTHONPATH.
| export PIP_NO_BUILD_ISOLATION=1 pip install -r requirements.txt --no-user | ||
| retry_cmd pip install git+https://github.com/tile-ai/tilelang.git --no-user |
Copilot
AI
Jan 23, 2026
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.
Nightly installs tilelang from requirements.txt and then installs tilelang again from GitHub. This double-install increases CI time and can mask which version is actually under test. Consider using a separate nightly requirements/constraints file, or install the GitHub version with --upgrade/--no-deps and remove tilelang from the base requirements for the nightly job.
| export PIP_NO_BUILD_ISOLATION=1 pip install -r requirements.txt --no-user | |
| retry_cmd pip install git+https://github.com/tile-ai/tilelang.git --no-user | |
| export PIP_NO_BUILD_ISOLATION=1 | |
| # Install all requirements except tilelang to avoid double-installing it in nightly | |
| retry_cmd pip install -r <(grep -vE '^\s*tilelang' requirements.txt) --no-user | |
| # Install tilelang from GitHub, ensuring this version is under test | |
| retry_cmd pip install --upgrade --no-deps git+https://github.com/tile-ai/tilelang.git --no-user |
| python -m venv "${{ runner.tool_cache }}/${VENV_DIR}" | ||
| # shellcheck source=/dev/null | ||
| source "${{ runner.tool_cache }}/${VENV_DIR}/bin/activate" | ||
| python -m pip install --upgrade pip setuptools wheel --no-user |
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.
I suggest caching the packages dependencies for speedup the process, you can use setup python or cache action
| with: | ||
| python-version: "3.11" | ||
|
|
||
| - name: Ensure persistent venv and install dependencies |
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.
I strongly recommend using container as a clean environment instead of reusing the persistent venv.
resolve: #127
Each CI run creates a fresh virtual environment and installs dependencies following the README instructions, ensuring a consistent test environment and validating the installation process.