OC_P8 / .github /workflows /ci.yml
KLEB38's picture
Upload folder using huggingface_hub
ab6d9f6 verified
Raw
History Blame Contribute Delete
2.65 kB
name: CI_CD
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch: {}
env:
PYTHON_VERSION: "3.12"
jobs:
build_and_test:
name: Build & Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
lfs: true
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install uv
uses: astral-sh/setup-uv@v8.1.0
with:
version: "0.5.4"
- name: Install dependencies
run: uv sync --frozen
- name: Lint (ruff)
run: uv run ruff check api database feature_engineering tests
- name: Ensure test table exists in Supabase
if: env.TEST_DATABASE_URL != ''
env:
TEST_DATABASE_URL: ${{ secrets.TEST_DATABASE_URL }}
run: uv run python -m database.setup --create-test --database-url "$TEST_DATABASE_URL"
- name: Run tests with coverage
env:
TEST_DATABASE_URL: ${{ secrets.TEST_DATABASE_URL }}
run: |
uv run pytest \
--cov=api \
--cov-report=term-missing \
--cov-report=xml \
--cov-fail-under=80
- name: Truncate test table (cleanup)
if: always() && env.TEST_DATABASE_URL != ''
env:
TEST_DATABASE_URL: ${{ secrets.TEST_DATABASE_URL }}
run: uv run python -m database.setup --truncate-test --database-url "$TEST_DATABASE_URL"
- name: Upload coverage report
if: always()
uses: actions/upload-artifact@v7
with:
name: coverage-xml
path: coverage.xml
retention-days: 30
deploy:
name: Deploy to Hugging Face Space
needs: build_and_test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
lfs: true
- name: Push to Hugging Face Space
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
run: |
pip install huggingface_hub
python - <<'EOF'
import os
from huggingface_hub import HfApi
api = HfApi(token=os.environ["HF_TOKEN"])
api.upload_folder(
folder_path=".",
repo_id="KLEB38/OC_P8",
repo_type="space",
ignore_patterns=[
".git", ".github", ".venv", ".claude",
"__pycache__", "*.pyc",
"data/", "dashboard/", "database/.env",
],
)
EOF