用途
该技能用于 RHDH(Red Hat Developer Hub)的冒烟测试,在 RC 构建(来自 Quay CI Chart 或 IIB)产出后执行安装与升级链路验证。它明确说明自身不等于完整 QE、Prow e2e、本地 compose 或 operator-PR catalog 测试。
主要能力与执行顺序
- 先检查 catalog-index OCI 引用:在任何 Helm 安装/升级或 Operator CSV 工作之前,先运行 catalog-index 检查(加载 workflows/catalog-index.md)。该步骤只拿到 CATALOG_REPO 和 INDEX_IMAGE,不拿 kubeconfig。即使 catalog 检查失败,也不跳过后续 Helm/Operator。
- 并行执行 Helm 与 Operator 两条集群链:在同一次操作中同时启动两个 agent,不等 Helm 完成再启动 Operator。两条链各自使用一个命名空间(NS_HELM 与 NS_OP)。
- 每条链的三步检查(同一命名空间,一个 Helm release / 一个 Backstage CR):
- 安装上一个 GA(已发布 chart 或 OperatorHub fast),然后验证;
- 升级到本次 RC(Quay *-CI chart 或 IIB),然后验证;
- 当该 RC 不是最新流时,升级到下一个次版本的最新已发布 GA(例如 1.10.z,不是跳到 2.0),然后验证。 链结束后保留命名空间以便检查。
使用方式与前置条件
- 收集 tags:tags 缺失时停止,不凭空编造 CI tag。需要 INDEX_IMAGE,或从
registry.access.redhat.com/rhdh/plugin-catalog-index:${RC_VER}推导;需要 CATALOG_REPO(包含build/scripts/checkIndexRefsPullable.sh的 rhdh-plugin-catalog checkout)。 - 集群登录:若
oc whoami已成功则跳过提示;否则需要用户提供 kubeconfig、API URL 或可用的 oc 会话,或提供形如https://console-openshift-console.apps.<...>/的 console URL,由scripts/cluster_from_console.py处理。 - CLUSTER_ROUTER_BASE 由
oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'取得,示例apps.ci-ln-ibvnlsb-72292.gcp-2.ci.openshift.org。 - 默认是 RC 运行;只有用户明确要求 GA 时才执行 GA 运行(已发布 chart / OperatorHub fast,含 fast ↔ fast-1.y)。
- 参数示例:
PREV_GA、RC_CHART、RC_VER、STREAM、NEXT_GA、NEXT_STREAM、NS_HELM、NS_OP、CLUSTER_ROUTER_BASE、CATALOG_REPO、INDEX_IMAGE。
Guest 启用与验证
Guest 默认关闭,需在每次安装或升级后、验证之前应用:
- Helm:使用
upstream.backstage.appConfig,传入assets/helm-values-guest.yaml并设置--set global.clusterRouterBase="${CLUSTER_ROUTER_BASE}",安装与每次 upgrade 都要带;不要使用--reuse-values,不要用oc create configmap,不要用extraAppConfig。 - Operator:创建 ConfigMap 并 patch Backstage CR(一次性应用,可跨 CSV 升级存活),命令与示例已给出。
验证使用
scripts/verify_ns.py --namespace "${NS}";遇到 ImagePullBackOff、CrashLoopBackOff、OOMKilled 或在 install-dynamic-plugins 中出现 401/403 则失败;安装后立即出现 504 表示仍在启动。同时报告/api/extensions/packages的 totalItems(不是 JSON 数组),catalog 为空或缺 Guest 则失败;catalog 有内容但少于 100 不算失败。UI 上 Administration → Extensions → Catalog 不能为空。
输出与注意事项
- 每个阶段输出一行结果(Catalog:/Helm:/Operator: 前缀),使用真实 tag;失败则在同一句后加 FAILED 及原因,跳过则输出
skipped说明。 - 完成后输出固定七行状态表(Status 列在前,catalog 为第 1 行),higher-stream 在该流为最新时保持 ⚠️ skip,不删行;并在表下注明 Guest 方式(Helm appConfig 还是 Operator ConfigMap),不将其作为第八行。
- 已知注意点包括:Operator CatalogSource 为空应等待新 IIB;GA 镜像必须来自 registry.redhat.io/rhdh/…,若出现 Quay *-CI 说明仍在 RC;Helm 用 extraAppConfig 会与 chart 生成的 appConfig 冲突;
--reuse-values会在 RC 升级时保留 GA 镜像 digest;索引字段是 registryReference 而非 oci://…!package;checkIndexUpToDate.sh 不属于本冒烟测试;catalog 脚本默认只打印失败表,--debug才包含通过的引用;tree 只是人工调试用。
适用场景与限制
适用于 RHDH RC 发布前的快速安装/升级链路冒烟验证,支持 Helm 与 Operator 双路径并行。限制为:不覆盖完整 QE、Prow e2e、本地 compose、operator-PR catalog 测试;tags 缺失时应停止而非猜测;Operator OLM Subscription 是集群级的,不能同时跑两个 Operator CSV 目标。官方文档中未提供收费、价格、平台支持范围等信息。