Manage Demo routing independently of release configuration
Demo CI / check (push) Successful in 9s

This commit is contained in:
demo-ci committed 2026-10-10 02:24:50 +00:00
1 parent ab37baa6e4
commit 15cfa078bf
6 files changed
+4 -47

No files matched your search

+4 -3
View File
@@ -9,7 +9,7 @@
| 开发 | `platform-dev/dev` | 18080 | `demo-test.5dev.cn` | Supervisor 管理 `go run .` |
| 正式 | `platform-release/release` | 28080 | `demo.5dev.cn` | Supervisor 管理已发布的二进制 |
两个环境都按项目共享容器,不再为 Demo 单独保留运行 Deployment。正式端口等于开发端口加 10000;开发范围 18000–18999,正式范围 28000–28999。Service/Ingress 仍归各项目自身;正式入口配置在 `config/prod/`,选择共享 release 并转发到 28080。
两个环境都按项目共享容器,不再为 Demo 单独保留运行 Deployment。正式端口等于开发端口加 10000;开发范围 18000–18999,正式范围 28000–28999。Service 仍归项目自身;`config/prod/` 选择共享 release 并转发到 28080。开发与正式域名、路由在 Higress Console 管理,应用配置不再带 Ingress YAML。
`GET /` 返回 `hello world` 和换行;未知路径 404,不支持的方法 405,`HEAD /` 无响应体。程序从 `PORT` 读取监听端口。入口不叠加平台登录,鉴权由项目自行实现。
@@ -27,8 +27,9 @@ kubectl exec -n platform-release deployment/release -c release -- supervisorctl
- `.gitea/workflows/ci.yaml`:推送 main 或手动触发,固定提交清洁检出,运行格式检查、`go test`、`go vet` 和编译;不发布生产。
- `.gitea/workflows/release.yaml`:手动选择 Git ref 和 `operation=release`,构建版本化二进制,不再为项目推送运行镜像。
- `config/prod/release.json` 不再保存域名,仅保留项目、端口和预期健康响应。历史记录的 `host` 不重写,读取时忽略。公网域名在网关后台管理;独立验收使用 `python3 service/infra/higress/scripts/state.py check-route demo --project-config service/project/demo/config/prod/release.json`,不由公网结果决定业务回滚。
- 发布配置在 `config/prod/release.json`,流水线校验项目名、开发/正式端口对应关系与当前开发配置,并拒绝与其他已发布项目冲突的正式端口。
- 候选二进制先在临时 Job 中使用实际 release 基础镜像运行并验证 HTTP,再原子切换该项目的 `current`,仅重启其 Supervisor 进程,验证内部 HTTP 与正式 HTTPS。
- 候选二进制先在临时 Job 中使用实际 release 基础镜像运行并验证 HTTP,再原子切换该项目的 `current`,仅重启其 Supervisor 进程,验证正式进程的内部 HTTP;公网检查独立执行。
- `operation=rollback` 配合 `target_revision=<完整40位提交>`,只能回退到曾通过验证的二进制版本。复用校验过的产物,不重新编译。失败发布会尝试恢复之前的项目版本,并保留失败记录。
- 二进制归档为 `/dm/service/platform/release/artifacts/demo/<commit>/app`、`app.sha256`、`release.json`;正式运行副本为 `/dm/runtime/platform/release/programs/demo/versions/<commit>/`,`current` 指向选定版本。它们不进入源码 Git。
- 2026-10-09 切换前的旧项目镜像仍保留在 `images/`,仅用于历史恢复。新流水线的回退目标是新二进制发行,不把旧镜像记录冒充新发行。
@@ -41,6 +42,6 @@ kubectl exec -n platform-release deployment/release -c release -- supervisorctl
构建 Pod 不挂 Kubernetes 令牌和正式运行目录;部署 Pod 可以写共享程序目录并 exec 到共享 release,因此是可信平台发布权限,而不是项目间安全隔离。release 不挂源码、开发缓存、集群令牌或宿主机 socket,程序目录只读;整个 release Pod 重启影响其中所有项目。
新增项目只需自己的源码、工作流、端口/健康检查配置及 Service/Ingress,不增加项目运行 Deployment。首次新增入口仍需经过平台授权部署,发布流水线本身不修改集群入口。
新增项目只需自己的源码、工作流、端口/健康检查配置及 Service,不增加项目运行 Deployment;域名与路由在网关后台创建。首次新增入口仍需经过平台授权部署,发布流水线本身不修改集群入口。
2026-10-09 已实测共享运行方案:Actions #8 的 CI 与 #9 的首次二进制发布均通过,正式域名在原独立 Demo Pod 停止后仍返回 `hello world`;运行程序位于共享 release 的 28080 端口,dev 保持原样。各次后续发布与回退结果以 Actions 和对应发行记录为准。
-20
View File
@@ -1,20 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-dev
namespace: platform-dev
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
ingressClassName: traefik
rules:
- host: demo-test.5dev.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: demo-dev
port:
name: http
-1
View File
@@ -2,4 +2,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service.yaml
- ingress.yaml
-21
View File
@@ -1,21 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo
namespace: platform-release
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
traefik.ingress.kubernetes.io/router.priority: '100'
spec:
ingressClassName: traefik
rules:
- host: demo.5dev.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: demo
port:
name: http
-1
View File
@@ -2,4 +2,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service.yaml
- ingress.yaml
-1
View File
@@ -2,6 +2,5 @@
"project": "demo",
"development_port": 18080,
"production_port": 28080,
"host": "demo.5dev.cn",
"expected_body": "hello world\n"
}