SuperAPI AI 工具集

gating-production-deploys

部署与运维

查看项目

更新于 10-16 09:51

技能介绍

用途:在新增或编辑 GitHub Actions 工作流时,对推送生产容器镜像到镜像仓库(ECR/ghcr/Docker Hub,经 build-push-action)或向 PostHog/charts 派发部署(commit_state_update 及其 deployer-token 步骤)的步骤进行门控。这些操作应从由 CD_DEPLOY_ENABLED 变量选定的规范部署仓库运行,否则会从错误位置发布或部署。

需要门控的情况:在 push 到 master、schedule 或 workflow_dispatch 时运行的生产标签镜像推送,以及向 PostHog/charts 的 commit_state_update 派发。

不需门控:发布/分发类工作流(GitHub release、npm、crate、Homebrew,如 build-phrocs.yml、release-cli.yml);pull_request / merge_group 验证构建(门控会破坏贡献者 CI);变更检测/初始化任务(只用组织检查,不用该变量)。判断标准是“推送生产镜像或触发部署”,而非“在 master 上构建”。

门控写法: if: github.repository_owner == 'PostHog' && vars.CD_DEPLOY_ENABLED == 'true'

替代硬编码 github.repository == 'PostHog/posthog'。常见模式包括:整个 job 即部署/推送时门控 job;job 已限定 master 时叠加门控;兼顾 PR 的构建 job 仅门控其中 master 分支;推送步骤用表达式限定 master;push: true 的场景加入 pull_request 或 merge_group 条件;可复用工作流增加默认 true 的 push 布尔输入并由调用方传入。

需在应发布仓库上设置 CD_DEPLOY_ENABLED,否则 master 推送会跳过构建/部署。用 actionlint 做检查。示例文件:container-images-cd.yml(整 job)、cd-mcp-image.yml 等(PR 与 master 混合)、rust-docker-build.yml 与 _rust-build-images.yml(可复用 push 输入);反例为未门控的 build-phrocs.yml。