🔧 Add UV cache functionality for improved performance #201
Workflow file for this run
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: | |
push: | |
branches: | |
- main | |
pull_request: {} | |
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: Install Pydantic and Ruff | |
run: | | |
uv add pydantic ruff | |
- name: Verify installed packages | |
run: | | |
python -c "import pydantic, ruff; print('Packages installed successfully')" | |
- name: Check cache directory (non-Windows) | |
if: runner.os != 'Windows' && matrix.cache == 'true' | |
run: | | |
ls -la ${{ env.UV_CACHE_DIR || '/tmp/.uv-cache' }} | |
echo "Checking for Pydantic and Ruff in cache" | |
find ${{ env.UV_CACHE_DIR || '/tmp/.uv-cache' }} -name "*pydantic*" -o -name "*ruff*" | |
- name: Check cache directory (Windows) | |
if: runner.os == 'Windows' && matrix.cache == 'true' | |
run: | | |
Get-ChildItem -Force ${{ env.UV_CACHE_DIR || '$env:TEMP\.uv-cache' }} | |
echo "Checking for Pydantic and Ruff in cache" | |
Get-ChildItem -Recurse ${{ env.UV_CACHE_DIR || '$env:TEMP\.uv-cache' }} | Where-Object { $_.Name -like "*pydantic*" -or $_.Name -like "*ruff*" } | |
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 (expected to fail) | |
uses: ./ | |
with: | |
uv-version: "0.2.9" | |
uv-cache: true | |
continue-on-error: true | |
- name: Verify failure for unsupported version | |
run: | | |
if [ $? -eq 0 ]; then | |
echo "Action succeeded when it should have failed" | |
exit 1 | |
fi | |
- name: Test cache with supported version (expected to fail) | |
uses: ./ | |
with: | |
uv-version: "0.3.0" | |
uv-cache: true | |
continue-on-error: true | |
- name: Verify failure for supported version with cache | |
run: | | |
if [ $? -eq 0 ]; then | |
echo "Action succeeded when it should have failed" | |
exit 1 | |
fi | |
- name: Test no cache when not requested (expected to succeed) | |
uses: ./ | |
with: | |
uv-version: "0.3.0" | |
uv-cache: false | |
- name: Verify success for no cache | |
run: | | |
if [ $? -ne 0 ]; then | |
echo "Action failed when it should have succeeded" | |
exit 1 | |
fi | |
if [ -d "$UV_CACHE_DIR" ]; then | |
echo "Cache directory exists when it shouldn't" | |
exit 1 | |
fi |