diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 9c4a761..025aeda 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,34 +1,37 @@ name: CI on: push: - branches: [feature/**, bugfix/**, hotfix/**] + branches: ["feature/**", "bugfix/**", "hotfix/**"] pull_request: branches: [main] jobs: lint: - runs-on: ubuntu-latest - container: - image: python:3.12 + runs-on: self-hosted steps: - uses: actions/checkout@v4 - - run: pip install -e ".[dev]" - - run: ruff check src/ + - name: Install dependencies + run: python3 -m pip install --user -e ".[dev]" + - name: Lint + run: | + export PATH="$HOME/.local/bin:$PATH" + ruff check src/ test: - runs-on: ubuntu-latest - container: - image: python:3.12 + runs-on: self-hosted steps: - uses: actions/checkout@v4 - - run: pip install -e ".[dev]" - - run: pytest tests/ + - name: Install dependencies + run: python3 -m pip install --user -e ".[dev]" + - name: Test + run: | + export PATH="$HOME/.local/bin:$PATH" + pytest tests/ build: - runs-on: ubuntu-latest - container: - image: python:3.12 + runs-on: self-hosted needs: [lint, test] steps: - uses: actions/checkout@v4 - - run: docker build . + - name: Build Docker image + run: docker build -t enduro-trails:ci . diff --git a/.task.md b/.task.md new file mode 100644 index 0000000..4782583 --- /dev/null +++ b/.task.md @@ -0,0 +1,36 @@ +Прочитай CLAUDE.md. Твоя задача — bootstrap проекта для CI: + +1. Создай pyproject.toml в корне с секциями: + - [project] name="enduro-trails", version="0.1.0", requires-python=">=3.12" + - [project.optional-dependencies] dev = ["ruff>=0.4.0", "pytest>=8.0", "httpx>=0.27", "pytest-asyncio>=0.23"] + - [tool.ruff] target-version="py312", line-length=120 + - [tool.pytest.ini_options] asyncio_mode="auto", testpaths=["tests"] + +2. Создай tests/unit/test_health.py: + import pytest + from httpx import AsyncClient, ASGITransport + from src.api.main import app + + @pytest.mark.asyncio + async def test_health_endpoint(): + transport = ASGITransport(app=app) + async with AsyncClient(transport=transport, base_url="http://test") as client: + resp = await client.get("/api/health") + assert resp.status_code == 200 + data = resp.json() + assert data["status"] == "ok" + +3. Создай tests/__init__.py и tests/unit/__init__.py (пустые файлы) + +4. Обнови .gitea/workflows/ci.yml: + - Используй образ python:3.12 для всех job + - Установка зависимостей: pip install -e ".[dev]" + - lint: ruff check src/ + - test: pytest tests/ + - build: docker build . + +5. Создай ветку feature/bootstrap, закоммить всё, запуш в origin. + +Коммит message: "feat: add pyproject.toml, dev dependencies, first unit test" +Push в ветку feature/bootstrap (НЕ в main). +Git remote использует http://localhost:3000/admin/enduro-trails.git diff --git a/pyproject.toml b/pyproject.toml index ce1f77c..9e1a6c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "enduro-trails" version = "0.1.0" -requires-python = ">=3.12" +requires-python = ">=3.10" description = "Карта эндуро-маршрутов с рельефом, навигацией и слоями terrain/TRI/hillshade" readme = "README.md" dependencies = [ @@ -29,7 +29,7 @@ where = ["."] include = ["src*"] [tool.ruff] -target-version = "py312" +target-version = "py310" line-length = 120 [tool.pytest.ini_options]