fix: include kubectl in CI tools images

This commit is contained in:
pikastech
2026-07-20 19:09:25 +02:00
parent ae824ebb31
commit c2fd4cb3f2
6 changed files with 46 additions and 7 deletions
+6 -1
View File
@@ -362,7 +362,12 @@ bun scripts/cli.ts hwlab nodes control-plane legacy-cicd --help
- 自动链单步测不通时,应在 Git-backed YAML、controller 或源码中修复根因,并由修复 PR 合并产生的新正常 webhook/PaC 事件复测;不得用 branch-follower 写状态或补跑当前交付。
- CI/CD 排障中再次踩到已暴露的运行面坑、工具误用、镜像假设或状态可见性缺口时,必须先把长期规则写入本 skill/reference,再继续只读定位。
- CI/CD 运行面验收必须在目标 NODE/k8s 内计算短摘要;本机只用于源码阅读、编辑和静态合同测试,不能替代正常 PR merge 自动事件产生的目标运行面证据。
- in-cluster/controller/native helper 不能假设镜像内存在 `kubectl` binary。目标 Pod/Job 内读取或写入 Kubernetes 对象必须走 serviceaccount token + Kubernetes HTTPS API 或已封装的 native helper`kubectl` 只允许在 operator 侧受控 CLI/trans 边界作为 transport/debug 包装,不得进入正式 controller 状态读写链路。
- CI tools image 默认必须包含 `kubectl`
- `kubectl` 与其他构建工具统一由 owning YAML 的 tools image Dockerfile 声明并随镜像交付;
- 镜像构建必须执行 `kubectl version --client` 自检;
- 禁止在 PipelineRun、Pod 或 Job 启动后临时安装 `kubectl`
- 使用 tools image 的有界 CI helper、cleanup 或 bootstrap 可以直接调用 `kubectl`
- 产品业务镜像和长期 controller 不得仅因本规则新增对 `kubectl` 的运行时依赖。
- 一旦发现 CI/CD CLI 被误用且可能写入错误状态、产生伪证据或绕过目标运行面,必须立刻先把用法改成更符合直觉的公开入口并更新本 skill/reference,再继续验证或交付;不要只靠口头记忆、隐藏 flag、手动约定或后续小心来避免复发。内部 in-cluster 模式必须只由目标 k8s Job/Pod 调用,操作者从本机只能用公开入口提交目标侧 Job 或读取目标侧摘要。
- PaC migrated consumer 的旧手动 publish/debug 命令不得作为正式 closeout 引导;调查命令默认只能指向只读的 `platform-infra pipelines-as-code status|history``closeout` 仅保留只读兼容能力,不得作为主代理、子代理或操作者的 PR 合并后步骤。需要保留的旧 mutation 命令只能属于 YAML 明确的 legacy authority 或独立平台维护,不得标记或引导 manual recovery;单步确认的自动链缺陷必须回到 YAML/controller/源码修复。
- Secret 只通过 YAML sourceRef/targetKey 和受控 CLI 下发;输出只披露 presence/fingerprint。
@@ -88,6 +88,13 @@ bun scripts/cli.ts hwlab g14 tools-image build \
tools image 构建只在目标 host 和本地 registry 的受控路径中执行,不把 master server 当通用构建机。
- 默认工具集:
- CI tools image 必须随镜像提供 `kubectl`
- `kubectl` 必须由 owning YAML 的内联 Dockerfile 构建,不得在 PipelineRun、Pod 或 Job 启动后安装;
- Dockerfile 构建自检必须包含 `kubectl version --client`
- 有界 CI helper、cleanup 和 bootstrap 可以直接调用镜像内的 `kubectl`
- 产品业务镜像和长期 controller 不继承该运行时依赖。
## PipelineRun 清理
```bash