ci-pr.yml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. name: ci-pr
  2. on:
  3. # PR 触发:用于主分支合并前的快速回归
  4. pull_request:
  5. branches:
  6. - main
  7. - master
  8. # 手动触发:便于在分支上临时复跑
  9. workflow_dispatch:
  10. permissions:
  11. contents: read
  12. jobs:
  13. unitFull:
  14. name: unit-full
  15. runs-on: ubuntu-latest
  16. timeout-minutes: 60
  17. steps:
  18. - name: 拉取代码
  19. uses: actions/checkout@v4
  20. - name: 安装 xmake
  21. uses: xmake-io/github-action-setup-xmake@v1
  22. with:
  23. xmake-version: latest
  24. - name: 安装 clang/llvm(覆盖率工具)
  25. run: |
  26. sudo apt-get update
  27. sudo apt-get install -y clang llvm
  28. - name: 单元测试 full 模式(8 组配置全覆盖,跳过覆盖率)
  29. run: |
  30. chmod +x ./scripts/ci/runBaseCoverage.sh
  31. UNIT_MODE=full \
  32. UNIT_SKIP_COV=1 \
  33. UNIT_STOP_ON_FAIL=1 \
  34. bash ./scripts/ci/runBaseCoverage.sh
  35. # 即使 full 模式跳过覆盖率,也保留执行产物,便于失败排查
  36. - name: 上传单测产物
  37. if: always()
  38. uses: actions/upload-artifact@v4
  39. with:
  40. name: unit-full-artifacts
  41. path: |
  42. coverage/
  43. build/
  44. if-no-files-found: ignore
  45. retention-days: 7
  46. fuzzQuick:
  47. name: fuzz-quick-default
  48. runs-on: ubuntu-latest
  49. timeout-minutes: 35
  50. steps:
  51. - name: 拉取代码
  52. uses: actions/checkout@v4
  53. - name: 安装 xmake
  54. uses: xmake-io/github-action-setup-xmake@v1
  55. with:
  56. xmake-version: latest
  57. - name: 安装 clang/llvm(fuzzer + 覆盖率工具)
  58. run: |
  59. sudo apt-get update
  60. sudo apt-get install -y clang llvm
  61. - name: Fuzz quick 模式(跳过覆盖率)
  62. env:
  63. # PR 只跑一组默认语义,优先保证反馈速度
  64. RYANJSON_STRICT_OBJECT_KEY_CHECK: "false"
  65. RYANJSON_DEFAULT_ADD_AT_HEAD: "true"
  66. RYANJSON_SNPRINTF_SUPPORT_SCIENTIFIC: "true"
  67. run: |
  68. chmod +x ./scripts/ci/runCoverage.sh
  69. FUZZ_MODE=quick \
  70. FUZZ_SKIP_COV=1 \
  71. FUZZ_MAX_TOTAL_TIME=45 \
  72. FUZZ_WORKERS=2 \
  73. FUZZ_JOBS=2 \
  74. bash ./scripts/ci/runCoverage.sh
  75. - name: 上传 fuzz 产物
  76. if: always()
  77. uses: actions/upload-artifact@v4
  78. with:
  79. name: fuzz-quick-default-artifacts
  80. path: |
  81. coverage/
  82. build/
  83. *.log
  84. if-no-files-found: ignore
  85. retention-days: 7