|
|
ef3be3934a
|
fix(ci): 禁止 release 部署回退 latest
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
|
2026-04-30 09:29:08 +08:00 |
|
|
|
7c2effce37
|
fix(zlm): 修复 release 健康检查接口
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
|
2026-04-30 09:08:55 +08:00 |
|
|
|
4a8641571f
|
feat(video): Release 环境部署独立 ZLM + video-server
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
- 添加 zlmediakit-release 容器(host 网络)
- 添加 video-server 连接本地 ZLM
- ZLM HTTP 7080 / RTSP 7554 / RTMP 7935 / RTP 30000-30500
- Hook URL 指向 127.0.0.1:48093 (video-server)
- SIP ID 末位 02 与 Prod 区分
- Secret 统一使用 u3UapOhmZa9er7S37Hc2k695NlZOBYdB
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-29 11:02:23 +08:00 |
|
|
|
8148bf7471
|
fix(ci): 修 release/next 误部署到 PROD 的严重 bug + 容器名 -release 物理隔离
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
事故复盘:build #5 触发 release/next 部署,但 Initialize 阶段
env.DEPLOY_HOST = env.RELEASE_DEPLOY_HOST
没有生效,DEPLOY_HOST 保持 environment 块默认值 172.17.16.14(PROD),导致
release.yml 被部署到 PROD 服务器;同时容器名与 prod 同名(aiot-gateway 等),
docker compose up -d 直接 force-recreate prod 容器,配置切到 release 库 / Nacos
namespace / Redis db1 — prod 业务断了。
根因:Jenkins declarative pipeline 的 environment 块声明的变量是 build-scope
constant,在 script 块里 env.X = ... 的赋值在某些场景不生效。
修复:
1. environment 块只声明常量 PROD_DEPLOY_HOST/PROD_DEPLOY_PATH/RELEASE_DEPLOY_HOST/
RELEASE_DEPLOY_PATH,DEPLOY_HOST/DEPLOY_PATH/COMPOSE_FILE/CONTAINER_NAME_SUFFIX
全部在 Initialize 阶段动态创建(不在 environment 声明则 env.X = 赋值生效)
2. 增加防呆:未知分支(既不是 master 也不是 release/next)DEPLOY_HOST 设空,
后续 ssh 命令会因目标空直接报错,不会误伤任何机器
3. release 容器名加 -release 后缀(aiot-gateway-release 等),物理隔离:
即便部署目标 host 错了,容器名不与 prod 重叠,docker compose 不会 recreate
prod 同名容器
4. getContainerNameForService 改读 env.CONTAINER_NAME_SUFFIX(Initialize 阶段写入),
不再依赖 @NonCPS 函数里访问 env.BRANCH_NAME
prod 影响:master 分支行为完全不变(DEPLOY_HOST→PROD_DEPLOY_HOST 同值、容器名
suffix='')。
|
2026-04-28 17:38:17 +08:00 |
|
|
|
7950d87a73
|
fix(ci): release Redis 用 db1 与 prod 隔离
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
prod 走 Redis 默认 db0,release 与 prod 共用同一个 Redis 实例必须靠 db 索引隔离,
否则 key 前缀冲突会读写到对方数据。
改动:docker-compose.release.yml 给 common-env 与 iot-gateway 都加:
SPRING_DATA_REDIS_DATABASE: 1
|
2026-04-28 17:09:24 +08:00 |
|
|
|
db91e9503e
|
refactor(ci): release 走独立 compose 文件,prod 文件回滚成历史原版
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
之前的参数化(docker-compose.core.yml 用 \${VAR:-default} + .env 注入)让运维要在
两台部署机分别维护 .env,体验跟 prod 现状不一致。改回与 prod 同款:每个环境一个
独立的 compose 文件,配置直接硬编码在 yml 里。
改动:
- 新增 docker-compose.release.yml(release 专用:MySQL aiot-platform-release 库、
Nacos namespace e635b215-...、TDengine database aiot_platform_release、
XXL-Job executor IP=.7、appname 加 -release 后缀、RocketMQ 内网 .7:9876)
- docker-compose.core.yml 完全恢复到 master 版本(prod 文件未做任何改动)
- 删除 env/ 目录(prod.env.example / release.env.example / .gitignore 都不需要了)
- Jenkinsfile:
- Initialize 阶段按分支选 COMPOSE_FILE:master→core.yml、release/next→release.yml
- 所有 docker compose 命令统一用 -f \${env.COMPOSE_FILE}
- Pre-deploy 移除 .env 文件存在性检查
- 删除 checkRemoteEnvFileOrFail helper(不再使用)
application.yaml 里的 \${XXL_JOB_EXECUTOR_APPNAME_SUFFIX:} 与 application-prod.yaml
里的 \${TDENGINE_DATABASE:aiot_platform} 保留——默认值与历史一致,prod 行为零变化,
但给 release.yml 注入这两个变量留了入口。
|
2026-04-28 17:00:24 +08:00 |
|