- backend: FastAPI 应用工厂、统一错误信封、JWT、短信登录、工作区/成员/邀请、幂等中间件 - alembic 0001: workspace/member/invitation/audit_log/app_user + RLS 策略 + 双角色 GRANT - tests: 认证/工作区/租户隔离/幂等 四组用例(尚未在本机执行) - web: React18+Vite 骨架(登录、工作区、邀请落地页) - android: Compose 骨架(登录、工作区列表) - 2.Design: PRODUCT-PLAN / ROADMAP-M0-M1 / NAMING / DEVELOPMENT
60 lines
1.6 KiB
YAML
60 lines
1.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
backend:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
env:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres_dev_pw
|
|
POSTGRES_DB: dadaotask
|
|
ports: ["5433:5432"]
|
|
options: >-
|
|
--health-cmd "pg_isready -U postgres -d dadaotask"
|
|
--health-interval 5s --health-timeout 3s --health-retries 20
|
|
|
|
env:
|
|
ENV: test
|
|
DATABASE_URL: postgresql+asyncpg://dadao_app:dadao_dev_pw@127.0.0.1:5433/dadaotask
|
|
MIGRATION_DATABASE_URL: postgresql+asyncpg://dadao_owner:dadao_dev_pw@127.0.0.1:5433/dadaotask
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
# 关键:先建角色再跑迁移。应用角色必须是受限角色,否则 RLS 测试会"假通过"。
|
|
- name: 创建数据库角色
|
|
run: |
|
|
PGPASSWORD=postgres_dev_pw psql -h 127.0.0.1 -p 5433 -U postgres -d dadaotask \
|
|
-v ON_ERROR_STOP=1 -f deploy/postgres/init/01-roles.sql
|
|
|
|
- name: 安装依赖
|
|
working-directory: backend
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install -r requirements.txt
|
|
|
|
- name: Lint
|
|
working-directory: backend
|
|
run: |
|
|
ruff check .
|
|
ruff format --check .
|
|
|
|
- name: 迁移
|
|
working-directory: backend
|
|
run: alembic upgrade head
|
|
|
|
- name: 测试
|
|
working-directory: backend
|
|
run: pytest -q
|