name: CI on: pull_request: branches: [main] push: branches: [main, "feat/**", "fix/**", "chore/**"] workflow_dispatch: env: APP_EXPORT_FONT: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf RUSTUP_DIST_SERVER: https://rsproxy.cn RUSTUP_UPDATE_ROOT: https://rsproxy.cn/rustup UV_INSTALLER_GITHUB_BASE_URL: https://ghfast.top/https://github.com UV_DEFAULT_INDEX: https://mirrors.aliyun.com/pypi/simple jobs: docs-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: git diff --check - run: python3 scripts/check-doc-links.py backend-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 切换 Python 锁文件下载源 run: python3 scripts/prepare-ci-uv-mirror.py - name: 安装 Rust 工具链 run: | curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: 安装 uv run: | curl -LsSf https://astral.sh/uv/0.9.24/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" - run: uv sync --frozen working-directory: backend - run: uv run python -m compileall -q app working-directory: backend - run: uv run pytest working-directory: backend - run: python3 scripts/phase3-production-acceptance.py --list-cases --json service-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 切换 Python 锁文件下载源 run: python3 scripts/prepare-ci-uv-mirror.py - run: corepack enable && corepack prepare pnpm@10.28.0 --activate - run: pnpm install --frozen-lockfile && pnpm build working-directory: server sync/console - run: git diff --exit-code -- "server sync/sync_server/static" - name: 安装 uv run: | curl -LsSf https://astral.sh/uv/0.9.24/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" - run: uv sync --frozen working-directory: backend - run: uv sync --frozen && uv run pytest --deselect='tests/test_upload_benchmark.py::test_four_concurrent_uploads_over_real_http[104857600]' working-directory: server sync - run: uv sync --frozen && uv run pytest working-directory: community-server - run: backend/.venv/bin/python scripts/phase3-isolated-smoke.py frontend-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corepack enable && corepack prepare pnpm@10.28.0 --activate - run: pnpm install --frozen-lockfile working-directory: frontend - run: pnpm test && pnpm type-check && pnpm build working-directory: frontend rust-core: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 切换 Python 锁文件下载源 run: python3 scripts/prepare-ci-uv-mirror.py - name: 安装 Rust 工具链 run: | curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal --component rustfmt,clippy echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: 准备协议测试所需的后端环境 run: | curl -LsSf https://astral.sh/uv/0.9.24/install.sh | sh export PATH="$HOME/.local/bin:$PATH" uv sync --frozen working-directory: backend - name: 运行 Rust 基础检查 run: | cargo fmt --check cargo test --lib --locked -- --skip credentials::tests::b04_migration_survives_twenty_hard_terminations_per_boundary cargo clippy --lib --locked -- -D warnings working-directory: frontend/src-tauri