refactor(flutter): 重构 Flutter 图标包生成工具,flutter 图标库单独发布 flutter_icons
#272
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: MAIN_PULL_REQUEST | |
| on: | |
| pull_request: | |
| branches: [develop, main] | |
| jobs: | |
| check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: check_github_primary_email | |
| run: | | |
| # 获取最新提交的作者邮箱和提交者邮箱 | |
| log_emails=$(git log --pretty=format:"%ae %ce" -1) | |
| # 如果邮箱包含 'tdesign@tencent.com',跳过验证 | |
| if [[ ${log_emails} =~ 'tdesign@tencent.com' ]];then | |
| echo "$log_emails 跳过验证" | |
| exit 0 | |
| fi | |
| # 如果邮箱包含 '@tencent.com',校验失败,提示用户更改邮箱 | |
| if [[ ${log_emails} =~ '@tencent.com' ]];then | |
| echo "默认邮箱 $log_emails 校验非法,可以去 https://github.com/settings/emails 更改" | |
| exit 2; | |
| else | |
| # 否则,校验通过 | |
| echo "邮箱 $log_emails 校验通过"; | |
| fi | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha }} | |
| - name: check_local_email | |
| run: | | |
| # 获取最新提交的作者邮箱和提交者邮箱 | |
| log_emails=$(git log --pretty=format:"%ae %ce" -1) | |
| # 如果邮箱包含 'tdesign@tencent.com',跳过验证 | |
| if [[ ${log_emails} =~ 'tdesign@tencent.com' ]];then | |
| echo "$log_emails 跳过验证" | |
| exit 0 | |
| fi | |
| # 如果邮箱包含 '@tencent.com',校验失败,提示用户更改本地邮箱 | |
| if [[ ${log_emails} =~ '@tencent.com' ]];then | |
| echo "本地提交邮箱 $log_emails 校验非法,需要本地更改重新提交" | |
| exit 2; | |
| else | |
| # 否则,校验通过 | |
| echo "邮箱 $log_emails 校验通过"; | |
| fi | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| icons: | |
| - tdesign-icons-vue | |
| - tdesign-icons-vue-next | |
| - tdesign-icons-react | |
| - tdesign-icons-svg | |
| - tdesign-icons-view | |
| - tdesign-icons-web-components | |
| - tdesign-icons-flutter | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: .node-version | |
| cache: "pnpm" | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm run generate | |
| - if: matrix.icons != 'tdesign-icons-flutter' | |
| run: pnpm run --filter ${{ matrix.icons }} build | |
| - if: matrix.icons == 'tdesign-icons-flutter' | |
| uses: TDesignOteam/workflows/actions/setup-flutter@main | |
| with: | |
| flutter-version: 3.32.0 | |
| - if: matrix.icons == 'tdesign-icons-flutter' | |
| working-directory: ./packages/flutter | |
| run: | | |
| flutter pub get | |
| dart ./tool/generate.dart | |
| # 验证 | |
| [ -f "lib/src/assets.g.dart" ] || (echo "❌ assets.g.dart 不存在" && exit 1) | |
| [ -f "fonts/t.ttf" ] || (echo "❌ t.ttf 不存在" && exit 1) | |
| icon_count=$(grep -c "static const " lib/src/assets.g.dart || echo "0") | |
| echo "✅ Flutter 包构建成功,共 $icon_count 个图标" | |
| flutter analyze | |
| flutter pub publish --dry-run | |
| site: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: .node-version | |
| cache: "pnpm" | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm run generate | |
| - run: pnpm run --filter tdesign-icons-view preview | |
| - run: mv packages/view/dist _site | |
| - run: zip -r _site.zip _site | |
| - name: upload _site artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: _site | |
| path: _site.zip | |
| retention-days: 5 | |
| - name: Save PR number | |
| if: always() | |
| run: echo ${{ github.event.number }} > ./pr-id.txt | |
| - name: Upload PR number | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pr | |
| path: ./pr-id.txt |