Skip to content

Commit d20eba7

Browse files
SK-3118: Add clean-install smoke test to flowvault PR CI
Build the wheel, install ONLY that wheel into a fresh virtualenv, and import skyflow from outside the repo. The venv has just the wheel's declared runtime dependencies, so a dependency missing from setup.py (like the python-dotenv drop that broke 1.0.0) fails the import here. The existing unit-test job installs dev deps, which masked this class of bug. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 7018a08 commit d20eba7

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

‎.github/workflows/pr-flowvault.yml‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,33 @@ jobs:
8282
flags: flowvault
8383
name: codecov-skyflow-python-flowvault
8484
verbose: true
85+
86+
smoke:
87+
name: Clean-install smoke test
88+
runs-on: ubuntu-latest
89+
steps:
90+
- uses: actions/checkout@v4
91+
- uses: actions/setup-python@v2
92+
with:
93+
python-version: '3.9'
94+
95+
# Build the wheel (it bundles the sibling common/ tree via setup.py's
96+
# custom build_py), then install ONLY that wheel into a fresh virtualenv
97+
# and import it. The venv contains just the wheel's declared runtime
98+
# dependencies, so a dependency missing from setup.py fails the import
99+
# here -- the unit-test job installs dev deps and would mask it.
100+
- name: Build the flowvault wheel
101+
run: |
102+
python -m pip install --upgrade pip setuptools wheel
103+
cd flowvault
104+
python setup.py bdist_wheel
105+
106+
- name: Install the wheel in a clean venv and import
107+
run: |
108+
python -m venv /tmp/smoke
109+
/tmp/smoke/bin/pip install --upgrade pip
110+
/tmp/smoke/bin/pip install flowvault/dist/*.whl
111+
# Import from outside the repo so the source tree (flowvault/skyflow,
112+
# ./common) is not on sys.path -- this exercises the installed wheel.
113+
cd /tmp
114+
/tmp/smoke/bin/python -c "import skyflow, common; from skyflow import Skyflow, Env, LogLevel; from skyflow.vault.data import InsertRequest, GetRequest, UpdateRequest, DeleteRequest, DetokenizeRequest, InsertOptions, GetOptions, UpdateOptions, DeleteOptions, DetokenizeOptions; from skyflow.vault.controller import VaultController; print('clean-install import OK')"

0 commit comments

Comments
 (0)