Files
easy_tdx_max/.github/workflows/ci.yml
T

94 lines
3.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# 项目核心场景是读取 Windows 通达信安装目录下的 .day 文件,
# 路径分隔符 / GBK 文件名 / tzdata 时区行为在 Windows 上与 Linux 不同,
# 故补充 Windows 矩阵覆盖这些平台特有路径。
os: [ubuntu-latest, windows-latest]
python-version: ["3.10", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# 前端 dist 被 pyproject.toml 的 force-include 引用,pip install -e .
# 要求它存在。先构建前端(type-check + vite build)。
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: web-ui/package-lock.json
- run: npm ci
working-directory: web-ui
- run: npm run build
working-directory: web-ui
- run: pip install -e ".[dev]"
- run: pip install -r requirements-dev.txt
# test_ai_llm.py 依赖 LLM 异步任务轮询,CI 无 API key 且 runner 卡顿时
# 必然轮询超时抖挂(本地有 mock 可跑),CI 跳过
- run: python -m pytest tests/unit/ -v --tb=short --cov src/easy_tdx --cov-fail-under=60 --ignore=tests/unit/test_ai_llm.py
- run: ruff check src/ tests/
- run: ruff format --check src/ tests/
mypy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
# 同 test jobforce-include 要求 web-ui/dist 存在。
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: web-ui/package-lock.json
- run: npm ci
working-directory: web-ui
- run: npm run build
working-directory: web-ui
- run: pip install -e ".[dev,web]"
- run: mypy src/
# 前端构建检查。web-ui 此前只有本地 vue-tscCI 不覆盖,
# 类型错误 / 破坏性 import 只有发布后用户才发觉(v1.17.9 的
# 65409694% 离谱数值 bug 即前端无回归守卫的典型后果)。
# 与 Python 版本无关,故独立 job,避免在 test matrix 里跑 6 遍。
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: web-ui/package-lock.json
- run: npm ci
working-directory: web-ui
- run: npm run build
working-directory: web-ui
# Playwright E2Emock 模式):serve 托管刚构建的 dist,行情全部来自
# EASY_TDX_E2E_MOCK=1 合成数据,不连真实通达信服务器、不受交易时段限制。
# 需要 Python 侧 easy-tdx[web]webServer 用系统 python 启动 serve)。
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install -e ".[web]"
- run: npx playwright install --with-deps chromium
working-directory: web-ui
- run: npm run test:e2e
working-directory: web-ui
env:
EASY_TDX_PYTHON: python