Files
flow-center-service/ci/README.md
T
chenxing d72128672f
build / build-push (push) Failing after 55s
feat(fl2): 落地部门目录 / 退回重提(D14) / 授权管理后端(基线 origin/main)
在 b369527 之上增量移植 FL2.0 后端能力,不改既有线级停发/指派预览/流程图入口:

- 部门目录:FlowDepartmentController(/admin/department/{groups,options,resolve,members})
  + UserBaseDepartmentDirectory(先按会话校域解析引用,再读成员;目录不可用 fail-closed)
- 退回重提 D14:POST /oapi/flow/instance/{instanceId}/resubmit,仅原提交人 CAS 路径放行,
  OAPI 侧 submitterId 路径继续 fail-closed
- 授权管理:/api/flow/admin/usage-grant/{schoolList,summary}(校域取管理员会话,无 schId 入参)
- 来源主体:解析器派生 ub-app:{applicationInfo.id},不再读取 UserBase 的 sourcePrincipalId 字段
- 回调来源策略:SELF 身份强校验;NULL 来源不广播;复合幂等键 (event_id,reg_id)
- 测试夹具:许可/主体/开通桩按新契约修正,FlowEngineIT/FormalApplyCommandIT/
  CallbackDispatchIT/OapiFlowContractIT 共 117 例在真实 MySQL 8 通过

不含:FlSourceAuthorizationTest(其断言的两个 Repository 派生方法属另一实现线)
2026-10-30 10:15:12 +08:00

2.2 KiB
Raw Blame History

FL 指定门禁与独立 MySQL

test-gate.sh 是 Gitea 与本地等价 CI 共用的入口。无参运行 test;工作流使用 sh ci/test-gate.sh clean package,真实测试未通过不会生成待发布 JAR,后续镜像步骤不会运行。 所有指定类必须存在;Surefire 不允许零测试;Hibernate 固定 ddl-auto=validate。

工作流在 infra-infra-net 内新建 ${BUILD_CONTAINER}-db,镜像 mysql:8.0,不映射宿主端口。 在启动之前把 flow-test-schema.sql 复制进初始化目录;该文件只含 14 张表的结构,不含业务数据。 镜像初始化阶段建立测试 schema,测试阶段只 validate。每个 job 的数据库容器名和随机凭据独立, EXIT trap 回收 Maven/MySQL 容器;不访问 160 业务库。

随机凭据仅经容器环境变量传递,不写仓库或日志。Maven 子容器必须获得:

  • CI_TEST_DB_URL:MySQL JDBC URL;schema 必须为 flowcenter_ci 或 flowcenter_ci_*。
  • CI_TEST_DB_USER、CI_TEST_DB_PASSWORD:本次数据库的专用账号与密码。

脚本只允许 localhost、127.0.0.1 或 mavenbuild-*-db 主机,随后映射为 Spring datasource 环境变量。 OapiFlowTasksByBizTest 在任何 cleanDb 前检查 JDBC 实际连接的 host/schema,防止 profile 覆盖错误。 CI 场景必须实际连接 flowcenter_ci*,不能悄悄改用默认开发库;11 项继续为真 MySQL 测试。

本地等价运行:在独立测试库按此 schema 初始化后,通过进程环境设置上述三个变量, 再执行 sh ci/test-gate.sh clean package。凭据不要写入命令历史或提交到仓库。

本次已在本机 MySQL 8.0.45 做正反等价验证:完整 schema 通过,空 schema 验证失败且不生成 JAR。 三个 workflow 的手动入口新增 tests_only=true(默认),可以在 runner 上只验测试/JAR,不推镜像或通知建档。 本机没有 Docker,Gitea runner 的容器启动、镜像拉取和网络连通未实跑;这些仍需在 runner 上验证, 不能将等价 Maven 证据描述为实际 Gitea workflow 已通过。

实体结构变更时应显式刷新 SQL 快照并重新验证;不能把 validate 改为 update 来绕过缺表或缺列。