|
31 | 31 | jobs: |
32 | 32 | generate-lockfile: |
33 | 33 | runs-on: ubuntu-latest |
| 34 | + container: |
| 35 | + image: nvcr.io/nvidia/pytorch:25.09-py3 |
| 36 | + options: --shm-size=2g |
34 | 37 | steps: |
35 | | - - name: Free up disk space |
| 38 | + - name: Aggressive disk cleanup inside container |
36 | 39 | run: | |
37 | | - # Remove unnecessary packages to free up space |
38 | | - sudo rm -rf /usr/share/dotnet |
39 | | - sudo rm -rf /opt/ghc |
40 | | - sudo rm -rf /usr/local/share/boost |
41 | | - sudo rm -rf "$AGENT_TOOLSDIRECTORY" |
42 | | - sudo apt-get clean |
| 40 | + # Clean up unnecessary files from the container |
| 41 | + rm -rf /workspace/* || true |
| 42 | + rm -rf /tmp/* || true |
| 43 | + apt-get clean |
| 44 | + rm -rf /var/lib/apt/lists/* |
| 45 | + # Remove unnecessary PyTorch extras to save space |
| 46 | + pip uninstall -y torchvision torchaudio || true |
43 | 47 | df -h |
44 | | -
|
| 48 | + |
45 | 49 | - name: Checkout repository |
46 | 50 | uses: actions/checkout@v4 |
47 | 51 |
|
48 | | - - name: Set up Python |
49 | | - uses: actions/setup-python@v5 |
50 | | - with: |
51 | | - python-version: '3.12' |
52 | | - |
53 | 52 | - name: Install uv |
54 | 53 | run: | |
55 | 54 | curl -LsSf https://astral.sh/uv/0.8.22/install.sh | sh |
| 55 | + export PATH="$HOME/.local/bin:$PATH" |
56 | 56 | echo "$HOME/.local/bin" >> $GITHUB_PATH |
57 | 57 |
|
58 | | - - name: Install build dependencies |
| 58 | + - name: Set environment |
59 | 59 | run: | |
60 | | - # Install minimal dependencies needed for lockfile generation |
61 | | - # Use regular pip to ensure packages are installed correctly |
62 | | - pip install setuptools wheel packaging ninja pybind11 Cython "numpy<2.0.0" |
63 | | - # Install CPU-only torch (sufficient for lockfile generation - we're only resolving versions, not running CUDA code) |
64 | | - pip install torch --index-url https://download.pytorch.org/whl/cpu |
| 60 | + echo "UV_PROJECT_ENVIRONMENT=/opt/venv" >> $GITHUB_ENV |
| 61 | + echo "UV_CACHE_DIR=/tmp/uv-cache" >> $GITHUB_ENV |
| 62 | + echo "CUDA_HOME=/usr/local/cuda" >> $GITHUB_ENV |
| 63 | + echo "PATH=$HOME/.local/bin:/usr/local/cuda/bin:$PATH" >> $GITHUB_PATH |
65 | 64 |
|
66 | | - - name: Verify torch installation |
| 65 | + - name: Create venv and install minimal build deps |
67 | 66 | run: | |
68 | | - python3 -c "import torch; print(f'Torch version: {torch.__version__}')" |
69 | | - python3 -c "import sys; print(f'Python path: {sys.path}')" |
| 67 | + uv venv /opt/venv --system-site-packages |
| 68 | + # Only install what's absolutely necessary |
| 69 | + uv pip install --system setuptools wheel packaging ninja pybind11 Cython "numpy<2.0.0" |
| 70 | + # Clean cache after install to save space |
| 71 | + uv cache clean |
70 | 72 |
|
71 | | - - name: Temporarily remove override-dependencies and no-build-isolation packages |
| 73 | + - name: Temporarily remove override-dependencies |
72 | 74 | run: | |
73 | | - # Backup original pyproject.toml |
74 | 75 | cp pyproject.toml pyproject.toml.backup |
75 | | - # Comment out override-dependencies section |
76 | 76 | sed -i '/^override-dependencies = \[/,/^\]/s/^/# /' pyproject.toml |
77 | | - # Comment out no-build-isolation-package section (let packages build normally with wheels) |
78 | | - sed -i '/^no-build-isolation-package = \[/,/^\]/s/^/# /' pyproject.toml |
79 | | - echo "Modified pyproject.toml:" |
80 | | - grep -A 5 "override-dependencies" pyproject.toml || echo "override-dependencies removed" |
81 | | - grep -A 10 "no-build-isolation" pyproject.toml || echo "no-build-isolation removed" |
82 | 77 |
|
83 | 78 | - name: Generate lockfile |
84 | 79 | run: | |
85 | | - # Let uv use pre-built wheels - no need for CUDA compiler |
86 | | - uv lock |
| 80 | + # Use system torch from container, no-build-isolation for CUDA packages |
| 81 | + uv lock --no-build-isolation |
| 82 | + # Clean cache immediately after to free up space |
| 83 | + uv cache clean |
87 | 84 |
|
88 | 85 | - name: Restore original pyproject.toml |
89 | 86 | run: | |
90 | 87 | mv pyproject.toml.backup pyproject.toml |
| 88 | + |
| 89 | + - name: Show final disk usage |
| 90 | + run: df -h |
91 | 91 |
|
92 | 92 | - name: Upload lockfile artifact |
93 | 93 | uses: actions/upload-artifact@v4 |
|
0 commit comments