| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- name: ci-pr
- on:
- # PR 触发:用于主分支合并前的快速回归
- pull_request:
- branches:
- - main
- - master
- # 手动触发:便于在分支上临时复跑
- workflow_dispatch:
- permissions:
- contents: read
- jobs:
- unitFull:
- name: unit-full
- runs-on: ubuntu-latest
- timeout-minutes: 60
- steps:
- - name: 拉取代码
- uses: actions/checkout@v4
- - name: 安装 xmake
- uses: xmake-io/github-action-setup-xmake@v1
- with:
- xmake-version: latest
- - name: 安装 clang/llvm(覆盖率工具)
- run: |
- sudo apt-get update
- sudo apt-get install -y clang llvm
- - name: 单元测试 full 模式(8 组配置全覆盖,跳过覆盖率)
- run: |
- chmod +x ./scripts/ci/runBaseCoverage.sh
- UNIT_MODE=full \
- UNIT_SKIP_COV=1 \
- UNIT_STOP_ON_FAIL=1 \
- bash ./scripts/ci/runBaseCoverage.sh
- # 即使 full 模式跳过覆盖率,也保留执行产物,便于失败排查
- - name: 上传单测产物
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: unit-full-artifacts
- path: |
- coverage/
- build/
- if-no-files-found: ignore
- retention-days: 7
- fuzzQuick:
- name: fuzz-quick-default
- runs-on: ubuntu-latest
- timeout-minutes: 35
- steps:
- - name: 拉取代码
- uses: actions/checkout@v4
- - name: 安装 xmake
- uses: xmake-io/github-action-setup-xmake@v1
- with:
- xmake-version: latest
- - name: 安装 clang/llvm(fuzzer + 覆盖率工具)
- run: |
- sudo apt-get update
- sudo apt-get install -y clang llvm
- - name: Fuzz quick 模式(跳过覆盖率)
- env:
- # PR 只跑一组默认语义,优先保证反馈速度
- RYANJSON_STRICT_OBJECT_KEY_CHECK: "false"
- RYANJSON_DEFAULT_ADD_AT_HEAD: "true"
- RYANJSON_SNPRINTF_SUPPORT_SCIENTIFIC: "true"
- run: |
- chmod +x ./scripts/ci/runCoverage.sh
- FUZZ_MODE=quick \
- FUZZ_SKIP_COV=1 \
- FUZZ_MAX_TOTAL_TIME=45 \
- FUZZ_WORKERS=2 \
- FUZZ_JOBS=2 \
- bash ./scripts/ci/runCoverage.sh
- - name: 上传 fuzz 产物
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: fuzz-quick-default-artifacts
- path: |
- coverage/
- build/
- *.log
- if-no-files-found: ignore
- retention-days: 7
|