| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # =============================================================================
- # 浠艾福 (XAF) — 最小 CI 管线(GitLab CI,仓库根,自动加载)
- # -----------------------------------------------------------------------------
- # 落地:2026-11-06(最小 CI 管线搭建)
- # 前置:remote = http://git.iwintrue.com/liaoxg/cfc(GitLab 系自托管)
- # 命令均已在本机实测通过(2026-11-06 16:2x):
- # - 后端 G0 编译 : mvn test-compile -DskipTests=false → BUILD SUCCESS (2046+231 源)
- # - 前端 jest : cfc-frontend 14 suites / 296 例全绿
- # - 管理端 jest : cfc-web 12 suites / 90 例全绿
- #
- # 🔴 关键坑(必须保留):cfc-backend/pom.xml 第 28 行 <skipTests>true</skipTests>,
- # 直接 `mvn test` 会**静默跳过全部测试(假绿)**。因此后端 job 必须显式
- # `-DskipTests=false`,否则 CI 绿灯是假的。
- #
- # 🔴 启用前置(本机实测,runner 侧待平台核实):
- # 1) runner 需 JDK8 + Maven + node22/npm + 可拉依赖网络(本机已备 JDK8/Maven3.9.9/node22)
- # 2) 本文件默认 when: manual(首次先手动触发跑通);确认 runner 能力后
- # 将三处 `when: manual` 改为 `when: on_success`(或删除该行走默认自动)
- # 3) 若 runner .m2 已预热且无外网,可在 mvn 命令加 `-o`(离线)
- # -----------------------------------------------------------------------------
- # 设计说明(最小闭环,绿灯基准):
- # - 后端采用 G0 编译门禁(必绿,最快信号);契约复验(159 例/轮)仍由本地
- # 轮次承担——因 P-2 MapContract 3 红为已知未拍板项,纳入会让 CI 必红,
- # 待口径拍板后再并入 backend job(见 docs/tdd/ci/CI_READINESS_2026-11-05.md)
- # - 前端/管理端用 jest --ci(已验证全绿,无外部依赖)
- # =============================================================================
- stages:
- - build
- - test
- variables:
- MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
- cache:
- key: "$CI_COMMIT_REF_SLUG"
- paths:
- - .m2/repository
- - cfc-frontend/node_modules/
- - cfc-web/node_modules/
- # ---------------------------------------------------------------------------
- # Job 1 — 后端 G0 编译门禁
- # ---------------------------------------------------------------------------
- backend-g0-compile:
- stage: build
- when: manual # 首次手动;确认 runner 能力后改 on_success
- cache:
- key: "$CI_COMMIT_REF_SLUG"
- paths:
- - .m2/repository
- script:
- - cd cfc-backend
- # 必须 -DskipTests=false 覆盖 pom 默认假绿(pom.xml:28)
- - mvn test-compile -DskipTests=false
- artifacts:
- when: always
- expire_in: 7 days
- paths:
- - cfc-backend/target/classes/
- # 注:契约/单测复验(G1)暂由本地轮次承担(P-2 3 红未拍板,见 CI_READINESS)
- # ---------------------------------------------------------------------------
- # Job 2 — 小程序前端(cfc-frontend)jest 单测
- # ---------------------------------------------------------------------------
- frontend-jest:
- stage: test
- when: manual # 首次手动;确认 runner 能力后改 on_success
- cache:
- key: "$CI_COMMIT_REF_SLUG"
- paths:
- - cfc-frontend/node_modules/
- script:
- - cd cfc-frontend
- - npm ci || npm install
- - npx jest --ci
- artifacts:
- when: always
- expire_in: 7 days
- reports:
- junit:
- - cfc-frontend/junit.xml
- paths:
- - cfc-frontend/coverage/
- # ---------------------------------------------------------------------------
- # Job 3 — 管理端(cfc-web)jest 单测
- # ---------------------------------------------------------------------------
- web-jest:
- stage: test
- when: manual # 首次手动;确认 runner 能力后改 on_success
- cache:
- key: "$CI_COMMIT_REF_SLUG"
- paths:
- - cfc-web/node_modules/
- script:
- - cd cfc-web
- - npm ci || npm install
- - npx jest --ci
- artifacts:
- when: always
- expire_in: 7 days
- reports:
- junit:
- - cfc-web/junit.xml
- paths:
- - cfc-web/coverage/
|