Skip to content

ci: 在 PR 评论中添加 API 文档预览链接 #14

ci: 在 PR 评论中添加 API 文档预览链接

ci: 在 PR 评论中添加 API 文档预览链接 #14

Workflow file for this run

# PR 构建:在 tdesign-flutter 中用本 PR tools 重生成文档并产出 artifact(评论见 preview-publish.yml、二进制见 build-multi-platform.yml)
name: PR 文档预览构建
on:
pull_request:
branches: [develop, main]
types: [opened, synchronize, reopened]
concurrency:
group: pr-preview-${{ github.event.pull_request.number }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build:
name: 构建文档与预览站
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: 检出 tdesign-flutter-tools(本 PR)
uses: actions/checkout@v4
- name: 配置 Git(避免符号链接问题)
run: git config --global core.symlinks false
- name: 克隆 tdesign-flutter(develop)
run: git clone --depth 1 --branch develop https://github.com/Tencent/tdesign-flutter.git
- name: 覆盖依赖为本 PR 的 tdesign_flutter_tools
working-directory: tdesign-flutter/tdesign-component
env:
PR_REPO: ${{ github.event.pull_request.head.repo.full_name }}
PR_SHA: ${{ github.event.pull_request.head.sha }}
run: |
cat > pubspec_overrides.yaml <<EOF
dependency_overrides:
tdesign_flutter_tools:
git:
url: https://github.com/${PR_REPO}.git
ref: ${PR_SHA}
EOF
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: 安装 Node.js 20
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"
cache-dependency-path: "tdesign-flutter/tdesign-site/pnpm-lock.yaml"
- name: 安装 Flutter 3.32
uses: TDesignOteam/workflows/actions/setup-flutter@main
with:
flutter-version: 3.32.0
channel: stable
cache: true
aop-registry: true
aop-project-path: ./tdesign-flutter/tdesign-component/example
- name: Flutter 依赖解析(tdesign-component)
working-directory: tdesign-flutter/tdesign-component
run: flutter pub get
- name: 用本 PR tools 全量重生成 API 文档
working-directory: tdesign-flutter/tdesign-component
run: |
dart compile exe ${{ github.workspace }}/bin/main.dart -o /tmp/api_tool
/tmp/api_tool update
- name: 运行 widget_test 生成站点 README
working-directory: tdesign-flutter/tdesign-component/example
run: |
flutter test test/widget_test.dart --reporter expanded || {
echo "⚠ Widget test completed with warnings (this is expected)"
}
- name: 构建 tdesign-site 静态站
working-directory: tdesign-flutter/tdesign-site
run: |
pnpm install --frozen-lockfile
npm run site
- name: 组装 Surge 预览目录
working-directory: tdesign-flutter
run: |
mkdir -p ../tdesign-flutter-web/flutter/example/
cp -r tdesign-site/_site/* ../tdesign-flutter-web/ || echo "tdesign-site/_site/ not found or empty"
rm -rf ../tdesign-flutter-web/assets || true
for f in "$GITHUB_WORKSPACE/tdesign-flutter-web/index.html"; do
if [ -f "$f" ]; then
if ! grep -q '<base href="/">' "$f"; then
sed -i 's|<meta http-equiv="X-UA-Compatible" content="ie=edge">|<meta http-equiv="X-UA-Compatible" content="ie=edge">\n <base href="/">|' "$f" || true
fi
sed -i "s|src=\"/flutter/|src=\"flutter/|g; s|href=\"/flutter/|href=\"flutter/|g; s|src='/flutter/|src='flutter/|g; s|href='/flutter/|href='flutter/|g" "$f" || true
fi
done
cp -v tdesign-site/_site/index.html ../tdesign-flutter-web/404.html || true
cp -v tdesign-site/_site/index.html ../tdesign-flutter-web/200.html || true
cp -r tdesign-site/_site/assets ../tdesign-flutter-web/flutter/assets || true
- name: 构建 Flutter Web 示例
working-directory: tdesign-flutter/tdesign-component/example
run: flutter build web -t ./lib/main.dart --base-href /flutter/example/ --source-maps
- name: 拷贝 Web 示例到预览目录
working-directory: tdesign-flutter
run: cp -r tdesign-component/example/build/web/* ../tdesign-flutter-web/flutter/example/ || true
- name: 上传 Surge 预览站产物
uses: actions/upload-artifact@v4
with:
name: tdesign-flutter-web
path: tdesign-flutter-web
retention-days: 5
- name: 生成文档 diff 评论内容(构建成功后)
working-directory: tdesign-flutter
run: |
/tmp/api_tool doc-diff \
--out ${{ github.workspace }}/doc-diff-comment.md \
--repo .
- name: 上传文档 diff
uses: actions/upload-artifact@v4
with:
name: doc-diff-comment
path: doc-diff-comment.md
retention-days: 5