chore: 小程序线(app)固定 v1.0.2,不跟随平台 tag
mirror-to-gitee / mirror (push) Successful in 5s

版本号与功能一一对应:小程序线功能停在 v1.0.2,镜像 tag 也停在 v1.0.2,
平台后续发 v1.0.5 时它不动。

- deploy/docker-compose.yml:app-server / app-web 两行回退 v1.0.2
- Makefile:IMAGE_MAP 增加第 5 列「固定版本」,app 两行填 v1.0.2,
  本地构建与 CI 行为一致
- 根 README:新增「小程序线是独立版本线」说明
- app/README.md:标注本目录对应 v1.0.2,不跟随平台 tag
- 文档:deploy/README 版本表、build-image 的 tag 表与说明、
  offline / prerequisites / configuration 示例 tag 全部回退 v1.0.2

CI 侧由 Jenkins 流水线的 PIN 表(app|v1.0.2)保证:tag 构建自动跳过 app,
需要重建时单独触发 SERVICES=app VERSION=v1.0.2。
This commit is contained in:
MiFaZhan
2026-11-02 14:11:13 +08:00
parent 89a15c4fca
commit 42d12d905a
9 changed files with 54 additions and 27 deletions
+19 -17
View File
@@ -15,20 +15,21 @@ BASE_REGISTRY ?= docker.io/library
GO_MODULES := admin-svr/server app/server bot onelink-mock openapi sms upstream-chan upstream-proxy worker-svr
# 目录|镜像名|构建上下文|Dockerfile
# 目录|镜像名|构建上下文|Dockerfile|固定版本(留空=跟随 VERSION)
# 小程序线 app 固定 v1.0.2:版本号与功能一一对应,平台发新 tag 时不跟着动。
IMAGE_MAP := \
admin-svr|iotlcm-admin-svr|admin-svr/server|build/Dockerfile \
admin-ui|iotlcm-admin-ui|admin-ui|vue/build/Dockerfile \
openapi|iotlcm-openapi|openapi|build/Dockerfile \
worker-svr|iotlcm-worker-svr|worker-svr|build/Dockerfile \
upstream-chan|iotlcm-upstream-chan|upstream-chan|build/Dockerfile \
upstream-proxy|iotlcm-upstream-proxy|upstream-proxy|build/Dockerfile \
app|iotlcm-app-server|app/server|Dockerfile \
app|iotlcm-app-web|app/app|Dockerfile \
sms|iotlcm-sms|sms|build/Dockerfile \
bot|iotlcm-bot|bot|Dockerfile \
docs|iotlcm-docs|docs|Dockerfile \
onelink-mock|iotlcm-onelink-mock|onelink-mock|Dockerfile
admin-svr|iotlcm-admin-svr|admin-svr/server|build/Dockerfile| \
admin-ui|iotlcm-admin-ui|admin-ui|vue/build/Dockerfile| \
openapi|iotlcm-openapi|openapi|build/Dockerfile| \
worker-svr|iotlcm-worker-svr|worker-svr|build/Dockerfile| \
upstream-chan|iotlcm-upstream-chan|upstream-chan|build/Dockerfile| \
upstream-proxy|iotlcm-upstream-proxy|upstream-proxy|build/Dockerfile| \
app|iotlcm-app-server|app/server|Dockerfile|v1.0.2 \
app|iotlcm-app-web|app/app|Dockerfile|v1.0.2 \
sms|iotlcm-sms|sms|build/Dockerfile| \
bot|iotlcm-bot|bot|Dockerfile| \
docs|iotlcm-docs|docs|Dockerfile| \
onelink-mock|iotlcm-onelink-mock|onelink-mock|Dockerfile|
.PHONY: help build test images docs clean
@@ -50,15 +51,16 @@ test:
images:
@set -e; echo "镜像前缀: $(REGISTRY) 版本: $(VERSION)"; \
echo "$(IMAGE_MAP)" | tr ' ' '\n' | while IFS='|' read -r dir img ctx df; do \
echo "$(IMAGE_MAP)" | tr ' ' '\n' | while IFS='|' read -r dir img ctx df pin; do \
[ -z "$$dir" ] && continue; \
echo ""; echo "==> $$img:$$VERSION (context=$$ctx dockerfile=$$df)"; \
v="$${pin:-$(VERSION)}"; \
echo ""; echo "==> $$img:$$v (context=$$ctx dockerfile=$$df$${pin:+ [固定版本]})"; \
docker build -f "$$ctx/$$df" \
--build-arg BASE_REGISTRY="$(BASE_REGISTRY)" \
--build-arg BuildVersion="$(VERSION)" \
--build-arg BuildVersion="$$v" \
--build-arg CommitID="$$(git rev-parse --short=7 HEAD)" \
--build-arg BuildTime="$$(date -u +%FT%TZ)" \
-t "$(REGISTRY):$$img-$(VERSION)" "$$ctx"; \
-t "$(REGISTRY):$$img-$$v" "$$ctx"; \
done
docs:
+11 -1
View File
@@ -74,7 +74,17 @@ make images # 本地构建全部镜像
└─ 仓库 ┘ └─ 服务名 ─┘└版本┘
```
打 `v*` tag 会经由内网 CI 构建全部镜像并推送,见 `.gitea/workflows/`。
打 `v*` tag 会经由内网 CI 构建镜像并推送,见 `.gitea/workflows/`。
**小程序线(`app/`)是独立版本线**,不跟随平台 tag:
| 服务 | 当前版本 | 说明 |
| --- | --- | --- |
| 其余业务服务 | `v1.0.4` | 跟随平台 tag |
| `iotlcm-app-server` / `iotlcm-app-web` | **`v1.0.2`** | 直连版本号与功能一一对应,功能未变就不动版本 |
CI 里用一张 `PIN` 表维护这条规则(`app|v1.0.2`):平台发新 tag 时自动跳过 app,需要重建小程序线时单独触发
`SERVICES=app VERSION=v1.0.2`。
## 许可
+3
View File
@@ -2,6 +2,9 @@
iotLCM 物联网卡全生命周期管理平台的**小程序端 + 用户端服务**。
> **版本线独立**:本目录对应小程序线的 **v1.0.2**,不跟随平台 tag(平台当前为 v1.0.4)。
> 功能变更时才提升本线版本,镜像 tag 仍为 `iotlcm-app-server-<版本>` / `iotlcm-app-web-<版本>`。
- `app/` —— uni-app 小程序前端(基于 [unibest](https://github.com/unibest-tech/unibest),MIT)
- `server/` —— 用户端 GoFrame 服务(基于 XiuAdmin 框架,Apache-2.0)
+9 -2
View File
@@ -49,12 +49,19 @@ docker compose --profile with-nginx up -d # 自带反向代理
crpi-.../iotlcm/iotlcm:mysql-8.0
crpi-.../iotlcm/iotlcm:redis-7.2
crpi-.../iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4
crpi-.../iotlcm/iotlcm:iotlcm-app-server-v1.0.4
crpi-.../iotlcm/iotlcm:iotlcm-app-server-v1.0.2
```
tag 格式统一为 **`<服务名>-<版本>`**。
当前业务版本:全部服务为 `v1.0.4`(单仓统一版本号 —— 平台 v1.0.4 发布包含全部服务)。
当前业务版本:
| 服务 | 版本 |
| --- | --- |
| 除 app 线外的全部业务服务 | `v1.0.4` |
| `iotlcm-app-server` / `iotlcm-app-web` | **`v1.0.2`**(小程序线独立版本,不跟随平台 tag) |
> 版本号与功能一一对应:小程序线的功能停在 v1.0.2,因此镜像 tag 也停在 v1.0.2;平台后续发 v1.0.5 时它依然不动。
升级时在 `docker-compose.yml` 中同步更新 tag 的版本部分,不要改用 `latest`。
+2 -2
View File
@@ -285,7 +285,7 @@ services:
condition: service_healthy
app-server:
image: 'crpi-qflrqrxoohlkkvgc.cn-chengdu.personal.cr.aliyuncs.com/iotlcm/iotlcm:iotlcm-app-server-v1.0.4'
image: 'crpi-qflrqrxoohlkkvgc.cn-chengdu.personal.cr.aliyuncs.com/iotlcm/iotlcm:iotlcm-app-server-v1.0.2'
container_name: iotlcm-app-server
restart: always
ports:
@@ -306,7 +306,7 @@ services:
condition: service_healthy
app-web:
image: 'crpi-qflrqrxoohlkkvgc.cn-chengdu.personal.cr.aliyuncs.com/iotlcm/iotlcm:iotlcm-app-web-v1.0.4'
image: 'crpi-qflrqrxoohlkkvgc.cn-chengdu.personal.cr.aliyuncs.com/iotlcm/iotlcm:iotlcm-app-web-v1.0.2'
container_name: iotlcm-app-web
restart: always
ports:
+7 -2
View File
@@ -139,8 +139,8 @@ docker build --build-arg GOPROXY=https://goproxy.cn,direct -t ... .
| admin-svr | `iotlcm-admin-svr-<TAG>` | `.../iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4` |
| admin-ui | `iotlcm-admin-ui-<TAG>` | `.../iotlcm/iotlcm:iotlcm-admin-ui-v1.0.4` |
| openapi | `iotlcm-openapi-<TAG>` | `.../iotlcm/iotlcm:iotlcm-openapi-v1.0.4` |
| app-server | `iotlcm-app-server-<TAG>` | `.../iotlcm/iotlcm:iotlcm-app-server-v1.0.4` |
| app-web | `iotlcm-app-web-<TAG>` | `.../iotlcm/iotlcm:iotlcm-app-web-v1.0.4` |
| app-server | `iotlcm-app-server-<TAG>` | `.../iotlcm/iotlcm:iotlcm-app-server-v1.0.2` |
| app-web | `iotlcm-app-web-<TAG>` | `.../iotlcm/iotlcm:iotlcm-app-web-v1.0.2` |
| upstream-chan | `iotlcm-upstream-chan-<TAG>` | `.../iotlcm/iotlcm:iotlcm-upstream-chan-v1.0.4` |
| upstream-proxy | `iotlcm-upstream-proxy-<TAG>` | `.../iotlcm/iotlcm:iotlcm-upstream-proxy-v1.0.4` |
| worker-svr | `iotlcm-worker-svr-<TAG>` | `.../iotlcm/iotlcm:iotlcm-worker-svr-v1.0.4` |
@@ -151,6 +151,11 @@ docker build --build-arg GOPROXY=https://goproxy.cn,direct -t ... .
基础组件(`mysql`、`redis`、`rabbitmq`、`consul`、`nginx`)不需要构建,从上游同步到同一仓库即可,tag 为 `<组件>-<版本>`,见下节。
::: tip app 线是独立版本
`iotlcm-app-server` 与 `iotlcm-app-web` 属于**小程序线**,版本号与平台 tag 解耦:平台发 v1.0.4 时它们仍是 `v1.0.2`。
自建镜像时按 `iotlcm-app-<x>-v1.0.2` 命名,不要跟着平台版本走。
:::
::: warning tag 必须带上服务名
同一个仓库里 tag 不能重复。只用版本号(如 `v1.0.4`)会让 12 个服务互相覆盖,因此 tag 固定为 `<服务名>-<版本>`。
:::
+1 -1
View File
@@ -35,7 +35,7 @@ image: 'crpi-.../iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4'
| tag 形式 | 示例 |
| --- | --- |
| 基础组件:`<组件>-<版本>` | `mysql-8.0`、`redis-7.2`、`nginx-1.30` |
| 业务服务:`<服务>-<版本>` | `iotlcm-admin-svr-v1.0.4`、`iotlcm-app-server-v1.0.4` |
| 业务服务:`<服务>-<版本>` | `iotlcm-admin-svr-v1.0.4`、`iotlcm-app-server-v1.0.2` |
改用自有仓库时,全局替换 Registry 前缀即可。
+1 -1
View File
@@ -25,7 +25,7 @@ docker compose config --images | sort -u
```text
registry.example.com/iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4
registry.example.com/iotlcm/iotlcm:iotlcm-admin-ui-v1.0.4
registry.example.com/iotlcm/iotlcm:iotlcm-app-server-v1.0.4
registry.example.com/iotlcm/iotlcm:iotlcm-app-server-v1.0.2
...
registry.example.com/iotlcm/iotlcm:mysql-8.0
registry.example.com/iotlcm/iotlcm:redis-7.2
+1 -1
View File
@@ -71,7 +71,7 @@ crpi-.../iotlcm/iotlcm:mysql-8.0
crpi-.../iotlcm/iotlcm:redis-7.2
crpi-.../iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4
crpi-.../iotlcm/iotlcm:iotlcm-openapi-v1.0.4
crpi-.../iotlcm/iotlcm:iotlcm-app-server-v1.0.4
crpi-.../iotlcm/iotlcm:iotlcm-app-server-v1.0.2
```
tag 格式统一为 **`<服务名>-<版本>`**。