build-docs.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. name: Build Documentation
  2. on:
  3. push:
  4. branches:
  5. - master
  6. - main
  7. paths:
  8. - 'docs/**'
  9. - '.github/versions.json'
  10. - 'projects/**'
  11. pull_request:
  12. paths:
  13. - 'docs/**'
  14. - '.github/versions.json'
  15. - 'projects/**'
  16. workflow_dispatch:
  17. jobs:
  18. validate-versions:
  19. runs-on: ubuntu-latest
  20. steps:
  21. - name: Checkout code
  22. uses: actions/checkout@v4
  23. with:
  24. fetch-depth: 0
  25. - name: Set up Python
  26. uses: actions/setup-python@v5
  27. with:
  28. python-version: '3.11'
  29. - name: Install dependencies
  30. run: |
  31. cd docs/source
  32. pip install -r requirements.txt
  33. - name: Validate version configuration
  34. run: |
  35. cd docs/source
  36. python utils/version_utils.py --validate
  37. build-docs:
  38. needs: validate-versions
  39. runs-on: ubuntu-latest
  40. steps:
  41. - name: Checkout code
  42. uses: actions/checkout@v4
  43. with:
  44. fetch-depth: 0
  45. - name: Set up Python
  46. uses: actions/setup-python@v5
  47. with:
  48. python-version: '3.11'
  49. - name: Install dependencies
  50. run: |
  51. cd docs/source
  52. pip install -r requirements.txt
  53. - name: Setup Google Chrome for headless PDF
  54. uses: browser-actions/setup-chrome@v1
  55. - name: Install fonts and locale support
  56. env:
  57. DEBIAN_FRONTEND: noninteractive
  58. run: |
  59. sudo apt-get update
  60. sudo apt-get install -y --no-install-recommends \
  61. fonts-noto-cjk fonts-wqy-zenhei fonts-wqy-microhei \
  62. fonts-arphic-uming fonts-arphic-ukai \
  63. locales
  64. # 生成中英文locale
  65. sudo locale-gen zh_CN.UTF-8
  66. sudo locale-gen zh_CN.GBK
  67. sudo locale-gen en_US.UTF-8
  68. sudo locale-gen en_GB.UTF-8
  69. sudo fc-cache -f -v || true
  70. - name: Verify locale support
  71. run: |
  72. echo "=== 验证locale支持 ==="
  73. echo "可用的locale列表:"
  74. locale -a | grep -E "(zh|en)" || echo "警告: 未找到中英文locale"
  75. echo "当前LANG: $LANG"
  76. echo "当前LC_ALL: $LC_ALL"
  77. echo "=== 测试中文locale ==="
  78. export LANG=zh_CN.UTF-8
  79. export LC_ALL=zh_CN.UTF-8
  80. echo "中文LANG: $LANG"
  81. echo "中文LC_ALL: $LC_ALL"
  82. python3 -c "import locale; print('中文Python locale:', locale.getlocale())"
  83. echo "=== 测试英文locale ==="
  84. export LANG=en_US.UTF-8
  85. export LC_ALL=en_US.UTF-8
  86. echo "英文LANG: $LANG"
  87. echo "英文LC_ALL: $LC_ALL"
  88. python3 -c "import locale; print('英文Python locale:', locale.getlocale())"
  89. - name: List version configurations
  90. run: |
  91. cd docs/source
  92. echo "=== 版本配置列表 ==="
  93. python utils/version_utils.py --list
  94. - name: Build all versions
  95. env:
  96. CHROME_PATH: ${{ env.CHROME_PATH }}
  97. run: |
  98. cd docs/source
  99. echo "=== 构建环境信息 ==="
  100. echo "LANG: $LANG"
  101. echo "LC_ALL: $LC_ALL"
  102. echo "LC_CTYPE: $LC_CTYPE"
  103. echo "可用的locale:"
  104. locale -a | grep -E "(zh|en)" | head -10
  105. python3 -c "import locale; print('Python locale:', locale.getlocale())"
  106. echo "=== 开始构建 ==="
  107. echo "注意: 构建管理器将分别为中英文设置正确的locale环境变量"
  108. # 不设置全局locale,让构建管理器自己控制
  109. python build_manager.py --clean
  110. - name: Upload build artifacts
  111. uses: actions/upload-artifact@v4
  112. with:
  113. name: docs-build
  114. path: docs/source/source_build/html
  115. retention-days: 30
  116. deploy-docs:
  117. needs: build-docs
  118. runs-on: ubuntu-latest
  119. if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
  120. steps:
  121. - name: Download documentation artifacts
  122. uses: actions/download-artifact@v4
  123. with:
  124. name: docs-build
  125. path: docs/source/source_build/html
  126. - name: Deploy to GitHub Pages
  127. uses: peaceiris/actions-gh-pages@v4
  128. with:
  129. github_token: ${{ secrets.GITHUB_TOKEN }}
  130. publish_dir: docs/source/source_build/html
  131. force_orphan: true
  132. user_name: 'github-actions[bot]'
  133. user_email: '41898282+github-actions[bot]@users.noreply.github.com'