SuperAPI AI 工具集

maintain-ci

部署与运维

查看项目

更新于 10-16 02:34

技能介绍

用途:当改动涉及 .github/workflows/*.yml 或 .yaml,或需要从安全、可靠性、可复现性角度审查 CI 行为时使用本技能,用于维护 NeMo Fabric 的 GitHub Actions 工作流。实施或审查时可配合 karpathy-guidelines,保持改动范围收敛、明确假设并在编辑前定义聚焦的验证。

主要能力与标准:按作业声明 permissions,仅在需要令牌访问的作业上设置,避免工作流级权限(除非仓库有意集中管理并记录继承权衡);第三方 action 固定到完整 commit SHA 并保留 SHA 后可读版本注释;优先使用 action 原生或生态原生缓存而非通用 actions/cache;用锁文件或依赖清单驱动缓存失效;部署与发布权限隔离到对应作业;TypeScript 契约从 publish_typescript.yml 经受保护的 npmjs 环境发布,授予 id-token: write 用于 npm 可信发布,不提供会掩盖 OIDC 配置失败的 npm 写入令牌;使用 workflow_call 时同时阅读调用方与被调用方;文档发布和预览凭证隔离在 Fern docs 工作流;本地命令在与 justfile 配方等价时保持一致;标签过滤、预发布规范化和发布行为与 RELEASING.md 对齐。

权限模型:contents: read 是基于 checkout 的构建、测试、文档和打包作业的默认最小权限;pull-requests: read 用于 PR 元数据查询作业;pages: write 仅限 Pages 部署作业及通过可复用工作流调用它们的调用方;id-token: write 仅限与受保护部署目标交换 GitHub OIDC 令牌的作业,包括 Pages 部署和受保护的 npm 发布作业。可复用工作流的调用方必须授予被调用作业所需的全部权限,被调用方不能超出调用方范围提权。

缓存:优先 astral-sh/setup-uv 的缓存支持,cache-dependency-glob 锚定到 uv.lock;优先 Swatinem/rust-cache 并显式设置 shared-key 与 workspaces,而非临时 target 目录缓存;避免缓存可能掩盖陈旧行为的生成输出(除非仓库已有意依赖)。

审查清单:每个作业具有所需最小权限;可复用工作流调用方仅授予被调用方所需范围;每个外部 action 固定到完整 SHA;缓存设置绑定锁文件、清单或明确工具版本;密钥仅传给使用它们的作业;Python、Rust 与文档作业与各自锁文件及 justfile 配方一致;并发、分支过滤器和文档发布守卫仍符合仓库意图。

验证:从最窄的有用检查开始,先运行 just --fmt --check,再用 ripgrep 查看工作流图:rg -n "uses:|permissions:|secrets:|concurrency:|cache|just " .github/workflows。若本地 lint 通过但需确认 GitHub 是否授权运行,应检查 GitHub 权限模型及上游 action 或可复用工作流源码,不能假定本地通过即远程通过。

限制与参考:资料仅给出上述标准与检查项,未提供具体配置示例、版本号或其他平台说明;涉及收费、价格、平台覆盖与效果的信息暂未提供。可参考 .github/workflows/ci_python.yml、ci_rust.yml、fern-docs.yml、nightly-alpha-tag.yml、publish_rust.yml、publish_typescript.yml、scripts/ci/publish_typescript_package.py、.gitlab-ci.yml、RELEASING.md、Cargo.lock、uv.lock、docs/package-lock.json、justfile,以及 maintain-packaging、validate-change 相关技能。