Kaynağa Gözat

ci(tdd): 最小 CI 管线落地(根目录 .gitlab-ci.yml,3-job)| 后端 G0 编译(mvn test-compile -DskipTests=false 防 pom:28 假绿) + 前端 jest 296 例 + 管理端 jest 90 例,命令均本机实测通过;when: manual 首跑开关,契约复验暂留本地轮次(P-2 3 红未拍板不入 CI);automation-status 接入状态更新 + draft 归档标注

E2E Test Bot 6 gün önce
ebeveyn
işleme
5783bb2948

+ 107 - 0
.gitlab-ci.yml

@@ -0,0 +1,107 @@
+# =============================================================================
+# 浠艾福 (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/

+ 1 - 0
docs/tdd/ci/gitlab-ci.draft.yml

@@ -1,5 +1,6 @@
 # ⚠️ DRAFT — 请勿直接改名为根目录 .gitlab-ci.yml
 # ⚠️ DRAFT — 请勿直接改名为根目录 .gitlab-ci.yml
 # 本文件是 G3「CI 接入」的配置草案,放在 docs/ 下不会被 GitLab 自动加载。
 # 本文件是 G3「CI 接入」的配置草案,放在 docs/ 下不会被 GitLab 自动加载。
+# ✅【2026-11-06 16:2x】正式版已落地为根目录 `.gitlab-ci.yml`(最小 3-job),本草案仅作历史归档。
 # 启用前置(需人工核实):
 # 启用前置(需人工核实):
 #   1) 确认 CI 平台确为 GitLab(remote: http://git.iwintrue.com/liaoxg/cfc,属 GitLab 系)
 #   1) 确认 CI 平台确为 GitLab(remote: http://git.iwintrue.com/liaoxg/cfc,属 GitLab 系)
 #   2) runner 具备:JDK8(/d/jdk1.8.0_25 等价)、Maven、node22、可拉取依赖的网络
 #   2) runner 具备:JDK8(/d/jdk1.8.0_25 等价)、Maven、node22、可拉取依赖的网络

+ 5 - 1
docs/tdd/test/automation-status.md

@@ -13,7 +13,11 @@
 
 
 > 脚本级自动化(Playwright / pytest / @Test)需接入 CI 才能持续回归;此处如实标注当前接入情况。
 > 脚本级自动化(Playwright / pytest / @Test)需接入 CI 才能持续回归;此处如实标注当前接入情况。
 
 
-- ⚠ 未发现 `.github/workflows/` / `.gitlab-ci.yml` / `Jenkinsfile` → 测试脚本**未接入 CI 流水线**,仅本机/本地可跑。
+- ✅ **已落地**(2026-11-06 16:2x):根目录 `.gitlab-ci.yml`(最小 3-job:后端 G0 编译 + 前端 jest + 管理端 jest),命令已本机实测通过;`when: manual` 首跑开关,runner 能力经平台核实后可改自动。
+  - 后端:`mvn test-compile -DskipTests=false`(BUILD SUCCESS,2046+231 源)
+  - 前端:`npx jest --ci`(cfc-frontend 14 suites / 296 例)
+  - 管理端:`npx jest --ci`(cfc-web 12 suites / 90 例)
+  - ⚠ 契约/单测复验(159 例/轮)暂由本地轮次承担——P-2 MapContract 3 红未拍板,纳入会使 CI 必红;待口径拍板后并入后端 job。
 
 
 ## 一、汇总(按来源类型)
 ## 一、汇总(按来源类型)