feat: Gitea Actions——ruff/pyright 检测与 Cloudflare Pages 文档自动部署

- .gitea/workflows/ci.yml:push(main)/PR/手动触发,setup-uv 装依赖
  后运行与本地一致的 uv run ruff check src tests examples + uv run
  pyright;故意未加 ruff format --check(存量 5 文件格式漂移会打红)
- .gitea/workflows/deploy-docs.yml:main 的文档文件变更时自动部署,
  经 CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID secrets 鉴权
- scripts/deploy_docs.sh:组装纯文档 dist/(不含源码,排除
  __pycache__)后 wrangler Direct Upload 上传——CF Pages 的 Git 直连
  只支持 GitHub/GitLab,Gitea 仓库只能走 Direct Upload;新版
  wrangler 的 pages deploy 不再自动建项目,脚本先幂等 create

站点 https://qqbotsdk-docs.pages.dev 已上线。.wrangler/ 缓存与
dist/ 产物入 .gitignore。
This commit is contained in:
snowy-yang committed 2026-09-24 20:18:39 +08:00
1 parent 7e7dcbaa94
commit 35e501aabb
4 files changed
+89

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
name: 代码检测
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
lint:
name: ruff + pyright
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 uv 与 Python 3.13
uses: astral-sh/setup-uv@v5
with:
python-version: "3.13"
enable-cache: true
- name: 同步依赖(含 dev 组)
run: uv sync
- name: ruff 静态检查
run: uv run ruff check src tests examples
- name: pyright 类型检查
run: uv run pyright
+29
View File
@@ -0,0 +1,29 @@
name: 部署文档
on:
push:
branches: [main]
paths:
- "index.html"
- "_sidebar.md"
- "README.md"
- "docs/**"
- "examples/**"
- "CHANGELOG.md"
- "scripts/deploy_docs.sh"
- ".gitea/workflows/deploy-docs.yml"
workflow_dispatch:
jobs:
deploy-docs:
name: Cloudflare Pages
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 组装并部署(wrangler Direct Upload)
run: bash scripts/deploy_docs.sh
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
+4
View File
@@ -10,6 +10,10 @@ __pycache__/
.ruff_cache/
.pytest_cache/
# 文档部署产物(scripts/deploy_docs.sh 组装)
dist/
.wrangler/
# 编辑器/IDE
.vscode/
.zcode/
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
# 组装纯文档目录并部署到 Cloudflare Pages(docsify 零构建,Direct Upload)。
#
# 用法:scripts/deploy_docs.sh [项目名] # 项目名默认取 PROJECT_NAME,再默认 qqbotsdk-docs
# 本地首次运行会自动唤起 wrangler 浏览器授权(或预先 export CLOUDFLARE_API_TOKEN);
# 项目不存在时 wrangler 会自动创建,站点地址 https://<项目名>.pages.dev。
# CI(.gitea/workflows/deploy-docs.yml)经 CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID 鉴权调用本脚本。
set -euo pipefail
cd "$(dirname "$0")/.."
PROJECT_NAME="${1:-${PROJECT_NAME:-qqbotsdk-docs}}"
rm -rf dist
mkdir dist
# docsify 站点只由这些 markdown 和 index.html 组成,静态资源全部走 CDN——
# 只挑文档文件,不把源码仓库整个传上站点
cp index.html README.md _sidebar.md CHANGELOG.md dist/
cp -r docs examples dist/
cp .nojekyll dist/ 2>/dev/null || true
# examples/ 里的 Python 字节码缓存不该上站点
find dist -type d -name __pycache__ -exec rm -rf {} +
# 新版 wrangler 的 pages deploy 不再自动建项目:先幂等创建(已存在则忽略报错)
npx wrangler pages project create "$PROJECT_NAME" --production-branch=main >/dev/null 2>&1 || true
npx wrangler pages deploy dist --project-name="$PROJECT_NAME" --branch=main --commit-dirty=true