ci: build linux application image
Some checks failed
ci / openapi (push) Has been cancelled
ci / proto (push) Has been cancelled
ci / image (push) Has been cancelled
ci / deployment (push) Has been cancelled
ci / test (ubuntu-latest) (push) Has been cancelled
ci / test (windows-latest) (push) Has been cancelled
ci / race (push) Has been cancelled
ci / integration (push) Has been cancelled

This commit is contained in:
youfak 2026-08-07 21:11:36 +08:00
parent 4f0245a7ec
commit d6ac783c1d
6 changed files with 22 additions and 1 deletions

View File

@ -29,6 +29,13 @@ jobs:
- shell: pwsh - shell: pwsh
run: ./scripts/verify-proto.ps1 run: ./scripts/verify-proto.ps1
image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Linux application image
run: docker build --file deploy/docker/Dockerfile --tag proxy-pool:ci .
deployment: deployment:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:

View File

@ -22,7 +22,7 @@ func TestCIValidatesProtocolAndDeploymentAssets(t *testing.T) {
if !ok { if !ok {
t.Fatal("ci workflow has no jobs") t.Fatal("ci workflow has no jobs")
} }
for _, name := range []string{"openapi", "proto", "deployment", "test", "race", "integration"} { for _, name := range []string{"openapi", "proto", "image", "deployment", "test", "race", "integration"} {
if _, exists := jobs[name]; !exists { if _, exists := jobs[name]; !exists {
t.Errorf("ci workflow has no %s job", name) t.Errorf("ci workflow has no %s job", name)
} }
@ -30,6 +30,7 @@ func TestCIValidatesProtocolAndDeploymentAssets(t *testing.T) {
for _, required := range []string{ for _, required := range []string{
"./scripts/verify-openapi.ps1", "./scripts/verify-openapi.ps1",
"./scripts/verify-proto.ps1", "./scripts/verify-proto.ps1",
"docker build --file deploy/docker/Dockerfile --tag proxy-pool:ci .",
"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", "docker compose -f deploy/docker-compose.test.yml config --quiet",
"go run ./deploy/tools/configcheck deploy/config/local.yaml", "go run ./deploy/tools/configcheck deploy/config/local.yaml",

View File

@ -377,6 +377,8 @@ Gateway 热路径。`platform/logging` 以 JSON `slog` 输出进程级致命错
CI 另有独立 Deployment job在占位凭据下渲染 Compose并使用 `kubectl kustomize` CI 另有独立 Deployment job在占位凭据下渲染 Compose并使用 `kubectl kustomize`
渲染 Kubernetes base 和单副本 development mTLS Overlay该 job 同时展开测试 Compose、 渲染 Kubernetes base 和单副本 development mTLS Overlay该 job 同时展开测试 Compose、
校验本地 Compose 配置。它不启动容器、不访问真实存储或密钥。 校验本地 Compose 配置。它不启动容器、不访问真实存储或密钥。
独立 Image job 会构建 Linux 多阶段应用镜像,覆盖 Dockerfile、Linux 交叉编译与运行时层;
容器服务编排和业务运行链路仍需在具备镜像网络的环境中验证。
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

@ -114,6 +114,9 @@ SPIFFE URI 解析器X.509-SVID 叶证书必须且只能包含一个 URI SAN
生产环境仍必须通过独立 Overlay 为每个弹性 Worker 注入唯一 SPIFFE URI且容器端到端 生产环境仍必须通过独立 Overlay 为每个弹性 Worker 注入唯一 SPIFFE URI且容器端到端
启动仍待具备镜像网络的环境验证。 启动仍待具备镜像网络的环境验证。
GitHub Actions 另行执行 Dockerfile 的 Linux 多阶段镜像构建;该门禁证明镜像可以构建,
不替代 Controller/Gateway/Checker 与真实 Redis/PostgreSQL 的容器运行验证。
运维手册已覆盖管理面/活动池恢复顺序、发布与兼容回滚、Secret 轮换、容量计算,以及 运维手册已覆盖管理面/活动池恢复顺序、发布与兼容回滚、Secret 轮换、容量计算,以及
主机内核、文件描述符、NAT/conntrack 的只读基线和证据采集要求;这些文档不替代真实环境 主机内核、文件描述符、NAT/conntrack 的只读基线和证据采集要求;这些文档不替代真实环境
的备份恢复、驱逐或容量演练。 的备份恢复、驱逐或容量演练。

View File

@ -286,3 +286,9 @@ Routing 自上而下匹配,首条命中停止;支持 Gateway 与 Extract 两
- development mTLS Overlay 的 ConfigMap 采用 Kustomize 内容哈希,渲染契约要求三个工作负载 - development mTLS Overlay 的 ConfigMap 采用 Kustomize 内容哈希,渲染契约要求三个工作负载
都引用同一版本化名称,因此配置变更进入 Pod 模板并触发滚动。外部固定名称 Secret 不含内容哈希, 都引用同一版本化名称,因此配置变更进入 Pod 模板并触发滚动。外部固定名称 Secret 不含内容哈希,
它们的轮换需要平台侧 reloader 或受控显式滚动;这一限制已写入运行手册。 它们的轮换需要平台侧 reloader 或受控显式滚动;这一限制已写入运行手册。
## Linux 镜像构建审计2026-08-07
- GitHub Actions 现在在 Linux Runner 执行 Dockerfile 多阶段构建,覆盖目标平台 Go 编译和最小
运行时层。该 job 依赖 Runner 镜像网络;它不启动 Compose 服务,因此不能作为 mTLS、存储、
探针或优雅停机端到端证据。

View File

@ -2,6 +2,8 @@
## 2026-08-07 ## 2026-08-07
- GitHub Actions 新增 Linux Dockerfile 镜像构建 job覆盖多阶段交叉编译和运行时镜像层
本机不具备基础镜像网络,因此未将其替代为本地 Compose 运行验证。
- 已校正 `proxy-loadgen` 架构文档HTTP、CONNECT 长连接和 Extract 都已实现;仅故障注入、 - 已校正 `proxy-loadgen` 架构文档HTTP、CONNECT 长连接和 Extract 都已实现;仅故障注入、
进程级资源采样和代表性集群报告仍未完成。 进程级资源采样和代表性集群报告仍未完成。
- Kubernetes 开发 mTLS Overlay 恢复 ConfigMap 内容哈希:配置更新会重写 Controller、Gateway - Kubernetes 开发 mTLS Overlay 恢复 ConfigMap 内容哈希:配置更新会重写 Controller、Gateway