SuperAPI AI 工具集

rhdh-smoke-tests

测试与质量

查看项目

更新于 10-16 12:06

技能介绍

用途

该技能用于 RHDH(Red Hat Developer Hub)的冒烟测试,在 RC 构建(来自 Quay CI Chart 或 IIB)产出后执行安装与升级链路验证。它明确说明自身不等于完整 QE、Prow e2e、本地 compose 或 operator-PR catalog 测试。

主要能力与执行顺序

  1. 先检查 catalog-index OCI 引用:在任何 Helm 安装/升级或 Operator CSV 工作之前,先运行 catalog-index 检查(加载 workflows/catalog-index.md)。该步骤只拿到 CATALOG_REPO 和 INDEX_IMAGE,不拿 kubeconfig。即使 catalog 检查失败,也不跳过后续 Helm/Operator。
  2. 并行执行 Helm 与 Operator 两条集群链:在同一次操作中同时启动两个 agent,不等 Helm 完成再启动 Operator。两条链各自使用一个命名空间(NS_HELM 与 NS_OP)。
  3. 每条链的三步检查(同一命名空间,一个 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 目标。官方文档中未提供收费、价格、平台支持范围等信息。