ci: 在 PR 评论中添加 API 文档预览链接 #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |