7ff337373ce0881b9d33948afb4f9a3049f9c080
build / build-push (push) Successful in 1m46s
现象:java -jar cas.war 启动即抛 NoSuchMethodError: ThreadContext.getThreadContextMap, WAR 的 WEB-INF/lib 同时存在 log4j api/core/slf4j-impl 的 2.7 与 2.12.1 两套。 根因:spring-boot-dependencies 1.5.18 经内嵌 log4j-bom 管理 log4j 版本,默认 2.7; BOM import 方式下 pom 覆盖 <log4j2.version> 属性不生效(属性在导入 BOM 自身上下文解析), maven 仍解析出 2.7 全套,与 overlay war 物理自带的 2.12.1 混包,类加载顺序决定成败。 修复:dependencyManagement 最前(先声明者优先)import log4j-bom 2.12.1, 全套 log4j 钉死 2.12.1,与 overlay war 内物理版本一致,war 内仅剩单套。
CasService
CAS 5.3.16 单点登录服务(war overlay 项目,源自 CasSsoService 改版迁移)。本仓库由 projman 创建并注入 CI 与 Dockerfile,已按 CAS 项目形态适配。
与标准 springboot CI 模板的差异
- 构建产物是 WAR 不是 jar:pom
packaging=war、finalName=cas,CI 在 maven 构建后cp cas.war app.jar(可执行 WAR,WarLauncher 直接java -jar)。 - Dockerfile 为 CAS 专用:镜像内生成自签名 keystore(8443 HTTPS),内置
docker/cas.properties(仅 TLS/端口/日志)与etc/cas/config/log4j2.xml;业务配置由 projman 配置管理挂载/app/config/application.yml。 - 健康检查:
/cas/status(HTTPS 自签名),projman 应用需配置 healthPath=/cas/status+ HTTPS 开。 - pom 不声明外网仓库:依赖全部经 nexus maven-public 代理解析(内网 CI 无外网)。
- 前端登录页静态文件由 CasSsoFront 仓库独立发布(
src/main/webapp/front/不入库)。
推送后验证
push 到 main 触发 CI 构建,前往 Gitea 仓库 → Actions 查看日志;构建成功后镜像推送到 Nexus(docker-hosted/cas-service:{sha8}),projman 建档待部署,在 projman 应用详情「后端发布」手动点部署。
Languages
Java
54.1%
JavaScript
14.6%
HTML
10.5%
CSS
7.2%
Shell
6%
Other
7.6%