build-index.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. name: 生成 Protobuf 数据索引
  2. on:
  3. workflow_dispatch:
  4. jobs:
  5. build-and-deploy:
  6. runs-on: ubuntu-latest
  7. permissions:
  8. contents: write
  9. steps:
  10. - name: 检出代码
  11. # 将整个仓库代码检出到 runner 机器上
  12. uses: actions/checkout@v4
  13. - name: 设置 Python 环境
  14. uses: actions/setup-python@v5
  15. with:
  16. python-version: '3.11'
  17. - name: 安装 Python 依赖
  18. run: |
  19. python -m pip install --upgrade pip
  20. pip install pyyaml protobuf
  21. - name: 执行数据构建脚本
  22. # 脚本将生成 school_index.pb 到仓库根目录
  23. # 路径:scripts/build_data.py
  24. run: python scripts/build_data.py
  25. - name: 发布到无历史的孤立分支
  26. run: |
  27. ASSET_BRANCH="index-pb-release" # 目标孤立分支名称,您可以自定义
  28. git config user.name "GitHub Actions Bot"
  29. # 使用官方 bot 邮箱,保证提交标识清晰
  30. git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
  31. # --- 检查文件 ---
  32. if [ ! -f school_index.pb ]; then
  33. echo "错误:未找到生成的 school_index.pb 文件。请检查 build_data.py 的输出路径。"
  34. exit 1
  35. fi
  36. # --- 关键步骤:创建和切换到孤立分支 ---
  37. # --orphan 选项创建的分支是完全没有历史记录的
  38. git checkout --orphan $ASSET_BRANCH
  39. # 清除工作目录中的所有文件,确保分支是干净的
  40. git rm -rf .
  41. # --- 添加资产文件 ---
  42. # 默认情况下 school_index.pb 在根目录,直接 add
  43. git add school_index.pb
  44. # --- 提交更改 ---
  45. # [skip ci] 标签可以防止这个提交再次触发 CI/CD 循环
  46. git commit -m "Release: Latest school_index.pb $(date +'%Y%m%d%H%M%S') [skip ci]"
  47. # --- 强制推送到远程分支 ---
  48. # 使用 --force 覆盖远程分支的历史记录,确保每次都是最新的、单一的提交
  49. git push --force origin $ASSET_BRANCH
  50. echo "成功将 school_index.pb 发布到 $ASSET_BRANCH 分支,仅保留一个最新的提交。"