🔧 Add UV cache functionality for improved performance #200
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
push: | |
jobs: | |
lint-and-test-units: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
id: npm-cache | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- run: npm install | |
- run: npm run format:check | |
- run: npm run test | |
test-integration: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
uv-version: ["0.1.12", "0.3.0", ""] | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
cache: [true, false] | |
fail-fast: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: ./ | |
with: | |
uv-version: ${{ matrix.uv-version }} | |
uv-venv: "my_virt_env" | |
uv-cache: ${{ matrix.cache }} | |
- run: uv --version | |
- name: Get python executable on Windows | |
if: runner.os == 'Windows' | |
run: | | |
Get-Command python | |
- name: Get python executable on non-Windows | |
if: runner.os != 'Windows' | |
run: | | |
which python | |
- name: Check inside virtual environment | |
run: python -c "import sys; exit(0 if sys.prefix != sys.base_prefix else 1)" | |
- name: Check cache directory (non-Windows) | |
if: runner.os != 'Windows' && matrix.cache == 'true' | |
run: | | |
ls -la ${{ env.UV_CACHE_DIR || '/tmp/.uv-cache' }} | |
- name: Check cache directory (Windows) | |
if: runner.os == 'Windows' && matrix.cache == 'true' | |
run: | | |
Get-ChildItem -Force ${{ env.UV_CACHE_DIR || '$env:TEMP\.uv-cache' }} | |
test-cache-behavior: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Test cache with unsupported version | |
uses: ./ | |
with: | |
uv-version: "0.2.9" | |
uv-cache: true | |
- name: Verify no cache for unsupported version | |
run: | | |
if [ -d "$UV_CACHE_DIR" ]; then | |
echo "Cache directory exists when it shouldn't" | |
exit 1 | |
fi | |
- name: Test cache with supported version | |
uses: ./ | |
with: | |
uv-version: "0.3.0" | |
uv-cache: true | |
- name: Verify cache for supported version | |
run: | | |
if [ ! -d "$UV_CACHE_DIR" ]; then | |
echo "Cache directory doesn't exist when it should" | |
exit 1 | |
fi | |
- name: Test no cache when not requested | |
uses: ./ | |
with: | |
uv-version: "0.3.0" | |
uv-cache: false | |
- name: Verify no cache when not requested | |
run: | | |
if [ -d "$UV_CACHE_DIR" ]; then | |
echo "Cache directory exists when it shouldn't" | |
exit 1 | |
fi |