Skip to content

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

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

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

Workflow file for this run

name: PREVIEW_BUILD
on:
pull_request:
branches: [develop, main]
types: [opened, synchronize, reopened]
jobs:
tdesign-flutter-site:
runs-on: ubuntu-latest
steps:
- name: Checkout tdesign-flutter
run: git clone --depth 1 --branch develop https://github.com/Tencent/tdesign-flutter.git
- name: Override tdesign_flutter_tools to current PR
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: |
# 通过 pubspec_overrides.yaml 让 CI 真正测试到本次 PR 的改动
# 这是 Dart 原生支持的覆盖机制,flutter pub get 会自动识别
cat > pubspec_overrides.yaml <<EOF
dependency_overrides:
tdesign_flutter_tools:
git:
url: https://github.com/${PR_REPO}.git
ref: ${PR_SHA}
EOF
cat pubspec_overrides.yaml
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Set Node version
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"
cache-dependency-path: "tdesign-flutter/tdesign-site/pnpm-lock.yaml"
- name: Set up Flutter
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: Save PR number for publish workflow
run: echo "${{ github.event.number }}" > pr-number.txt
- name: Upload PR number
uses: actions/upload-artifact@v4
with:
name: pr-number
path: pr-number.txt
retention-days: 5
- name: Generate site README via flutter test
working-directory: tdesign-flutter/tdesign-component/example
run: |
# widget_test.dart 会遍历每个组件页面,生成 tdesign-site/src/<组件>/README.md
# (内容已嵌入 example/assets/api/<组件>_api.md 的 API 表格)
flutter test test/widget_test.dart --reporter expanded
- name: Build site
working-directory: tdesign-flutter/tdesign-site
run: |
pnpm install --frozen-lockfile
npm run site
- name: Build flutter web demo
working-directory: tdesign-flutter/tdesign-component/example
run: flutter build web -t ./lib/main.dart --base-href /flutter/example/
- name: Assemble preview artifact
run: |
mkdir -p tdesign-flutter-web/flutter/example
# 站点页面(编译后的 _site 直接铺到 surge 根)
cp -r tdesign-flutter/tdesign-site/_site/. tdesign-flutter-web/
# surge 通过 200.html / 404.html 实现 SPA fallback
cp tdesign-flutter/tdesign-site/_site/index.html tdesign-flutter-web/200.html
cp tdesign-flutter/tdesign-site/_site/index.html tdesign-flutter-web/404.html
# flutter web demo(base-href: /flutter/example/)
cp -r tdesign-flutter/tdesign-component/example/build/web/. tdesign-flutter-web/flutter/example/
- name: Upload preview artifact
uses: actions/upload-artifact@v4
with:
name: tdesign-flutter-web
path: tdesign-flutter-web
retention-days: 5