fix(ci): use self-hosted runner, support python 3.10
Some checks failed
CI / lint (push) Failing after 6s
CI / test (push) Failing after 9s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 7s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped

This commit is contained in:
2026-05-15 17:11:02 +03:00
parent 76ff0c6587
commit 00e112b7d5
3 changed files with 56 additions and 17 deletions

View File

@@ -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 .

36
.task.md Normal file
View File

@@ -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

View File

@@ -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]