ci: validate local deployment configuration

This commit is contained in:
youfak 2026-08-07 21:04:08 +08:00
parent 5c3c893c71
commit 51158007b4
5 changed files with 16 additions and 1 deletions

View File

@ -49,6 +49,10 @@ jobs:
cache: true cache: true
- name: Render Compose configuration - name: Render Compose configuration
run: docker compose -f deploy/docker-compose.yml config --quiet run: docker compose -f deploy/docker-compose.yml config --quiet
- name: Render integration Compose configuration
run: docker compose -f deploy/docker-compose.test.yml config --quiet
- name: Validate local Compose configuration
run: go run ./deploy/tools/configcheck deploy/config/local.yaml
- name: Render Kubernetes base - name: Render Kubernetes base
run: kubectl kustomize deploy/kubernetes/base > /dev/null run: kubectl kustomize deploy/kubernetes/base > /dev/null
- name: Render Kubernetes development mTLS overlay - name: Render Kubernetes development mTLS overlay

View File

@ -31,6 +31,8 @@ func TestCIValidatesProtocolAndDeploymentAssets(t *testing.T) {
"./scripts/verify-openapi.ps1", "./scripts/verify-openapi.ps1",
"./scripts/verify-proto.ps1", "./scripts/verify-proto.ps1",
"docker compose -f deploy/docker-compose.yml config --quiet", "docker compose -f deploy/docker-compose.yml config --quiet",
"docker compose -f deploy/docker-compose.test.yml config --quiet",
"go run ./deploy/tools/configcheck deploy/config/local.yaml",
"kubectl kustomize deploy/kubernetes/base", "kubectl kustomize deploy/kubernetes/base",
"kubectl kustomize deploy/kubernetes/overlays/development-mtls", "kubectl kustomize deploy/kubernetes/overlays/development-mtls",
"go run ./deploy/tools/configcheck deploy/kubernetes/overlays/development-mtls/config.yaml", "go run ./deploy/tools/configcheck deploy/kubernetes/overlays/development-mtls/config.yaml",

View File

@ -375,7 +375,8 @@ OpenAPI 结构契约由 Go 测试在双平台 CI 执行;`scripts/verify-openap
Gateway 热路径。`platform/logging` 以 JSON `slog` 输出进程级致命错误字段、URL Gateway 热路径。`platform/logging` 以 JSON `slog` 输出进程级致命错误字段、URL
用户信息、查询 Secret 和错误对象均经过脱敏,且不在请求热路径逐条写日志。 用户信息、查询 Secret 和错误对象均经过脱敏,且不在请求热路径逐条写日志。
CI 另有独立 Deployment job在占位凭据下渲染 Compose并使用 `kubectl kustomize` CI 另有独立 Deployment job在占位凭据下渲染 Compose并使用 `kubectl kustomize`
渲染 Kubernetes base 和单副本 development mTLS Overlay它不启动容器、不访问真实存储或密钥。 渲染 Kubernetes base 和单副本 development mTLS Overlay该 job 同时展开测试 Compose、
校验本地 Compose 配置。它不启动容器、不访问真实存储或密钥。
development Overlay 已挂载独立 Controller/Gateway/Checker TLS Secret、启用 Checker 和最小 development Overlay 已挂载独立 Controller/Gateway/Checker TLS Secret、启用 Checker 和最小
网络策略,并从固定开发证书派生 `gateway-a`、`checker-a` 身份且 HPA 锁为单副本,不能代替生产证书轮换。 网络策略,并从固定开发证书派生 `gateway-a`、`checker-a` 身份且 HPA 锁为单副本,不能代替生产证书轮换。
控制面 TLS 叶证书和信任根已在每次新握手时从文件加载,短暂文件不一致时保留最后一次有效材料; 控制面 TLS 叶证书和信任根已在每次新握手时从文件加载,短暂文件不一致时保留最后一次有效材料;

View File

@ -274,3 +274,9 @@ Routing 自上而下匹配,首条命中停止;支持 Gateway 与 Extract 两
- Dockerfile 构建阶段需要 `COPY . .`,因此根 `.dockerignore` 是隔离本地工作区与镜像上下文的 - Dockerfile 构建阶段需要 `COPY . .`,因此根 `.dockerignore` 是隔离本地工作区与镜像上下文的
必要边界。它显式排除 Git 元数据、环境文件、本地配置、控制面证书/私钥、PEM/CRT/KEY 文件及 必要边界。它显式排除 Git 元数据、环境文件、本地配置、控制面证书/私钥、PEM/CRT/KEY 文件及
构建和测试产物;部署测试会在清单被删除或放宽时失败。 构建和测试产物;部署测试会在清单被删除或放宽时失败。
## 部署静态门禁审计2026-08-07
- GitHub Actions 的 Deployment job 在同一组无敏感值 fixture 下渲染生产 Compose、测试 Compose
以及 Kubernetes base/development mTLS Overlay并对两份配置运行严格校验它仍不替代
需要镜像网络和真实服务的容器端到端测试。

View File

@ -2,6 +2,8 @@
## 2026-08-07 ## 2026-08-07
- GitHub Actions Deployment job 现同时静态展开生产与测试 Compose并对本地 Compose 配置和
开发 mTLS 配置执行严格校验,避免仅检查 Kubernetes 覆盖层。
- Docker 构建上下文现由根 `.dockerignore` 保护:本地控制面证书/私钥、环境文件、凭据文件、 - Docker 构建上下文现由根 `.dockerignore` 保护:本地控制面证书/私钥、环境文件、凭据文件、
Git 元数据和构建产物不会被 `COPY . .` 发送到镜像构建器;部署测试固定该清单。 Git 元数据和构建产物不会被 `COPY . .` 发送到镜像构建器;部署测试固定该清单。
- OpenAPI 标准验证已固定为 `@redocly/cli@2.25.4``verify-openapi.ps1` 对两份 OpenAPI - OpenAPI 标准验证已固定为 `@redocly/cli@2.25.4``verify-openapi.ps1` 对两份 OpenAPI