SuperAPI AI 工具集

update-ci-images

设计与创作

查看项目

更新于 10-16 03:44

技能介绍

用途:在 posit-dev/positron 仓库中,以一个新 tag(如 2025.06.0)和指定 Node 版本(如 22.22.1)重建全部 CI 镜像。共 6 个构建:ubuntu24_04、rocky_8、debian、openSUSE15_6、SLES15_6 使用 ci-images-build-os.yml;postgres 使用 ci-images-build-postgres.yml。每次 workflow 运行以矩阵方式在原生 runner 上构建 amd64 与 arm64,再由 merge job 合成多架构 manifest 列表,如 ghcr.io/<owner>/positron-ubuntu24:<tag>、positron-postgres:<tag>;每个镜像一次 dispatch,而非每架构一次。postgres 无 Node,不涉及 NODE_VERSION 变更。

输入:tag(必填,所有镜像的 Docker tag);node version(必填,需在 nodejs.org/dist/v<version>/ 同时提供 x64 与 arm64);concurrency N(可选,默认 4)。

使用方式:先做预检(gh auth status、工作区必须干净、确认仓库为 posit-dev/positron,并用 curl 验证 Node 两个架构包存在),随后创建 update-images/<tag> 分支、运行 bump-node-version.sh 更新 10 个 compose 文件、提交推送并用 gh pr create 打开 PR(基于 main,模板含 6 项构建清单)。构建阶段用 dispatch-job.sh 派发任务,用后台 wait-for-runs.sh 轮询等待(macOS 可用 caffeinate -i 防止空闲休眠),每个成功任务通过 REST PATCH(gh api -X PATCH)勾选 PR 清单。失败时用 gh run view <id> --log-failed 诊断,区分瞬时故障(重试上限 5 次)与真实构建错误(改文件后重推并重派,同一失败签名修复上限 3 次)。全部成功后在 PR 中列出各 manifest:tag 并评论,PR 保持开启交由人工审核,不自动合并。

已知失败模式:R 源码包需要比发行版更新的系统库时,按 OS 固定到较早日期的 PPM 快照(debian 因 terra/GDAL 固定在 2026-03-01,不随其他滚动的 4 个 OS 由 bump-ppm-snapshot.sh 调整);PPM latest 发布窗口竞态导致 404;TinyTeX/tlmgr 镜像随机失效,需固定单一镜像并加重试。涉及包版本变更需用户确认。

限制:需要具备 workflow 与 repo 权限的 gh 认证及干净工作区;Node 版本必须同时有 x64 与 arm64 包,否则应停止并报告;技能为长时间运行的编排流程,中途可能因宿主机休眠而停滞。