SuperAPI AI 工具集

genesis-cicd

部署与运维

查看项目

更新于 10-16 09:24

技能介绍

用途

为使用 genesis 脚手架生成的项目添加 GitHub Actions CI/CD。目标项目结构为 monorepo:services/<app>-server 是 Go API,services/<app>-web 是使用 pnpm 的 React 应用。技能会生成一个 .github/workflows/ci.yml 文件。

主要能力

支持三种 CD 目标:

  • railway:Railway 从 Dockerfile 构建并部署,无镜像构建作业、无 deploy 作业。在 release-prod 模型下,将生产环境指向 release 分支,暂存环境指向 main。需单独配置 Wait for CI 与服务 watch paths。
  • kubernetes:使用完整的 Kubernetes 参考(kubernetes.md),依赖外部 lwlee2608/release-manifest actions。GCR 存储镜像,GitHub Release 资产存储 manifest。流程为 resolve -> build-server-image / build-web-image -> publish -> deploy。
  • overwatcher:由 Overwatcher GitHub App 部署运行 Docker Compose 的 VM。镜像推送至 GHCR,无 deploy 作业,需将服务的 Workflow 字段设为 ci.yml。

支持两种分支模型:main = production,或 main = staging、release = production。

Docker 层缓存可选:GitHub Actions cache(type=gha,免费),或 Blacksmith sticky disk($0.50/GB/月,并持久化 RUN --mount=type=cache)。

使用方式

调用时先读取参数。railway/kubernetes/overwatcher 是 CD 目标;main-prod/release-prod 是分支模型;sticky-disk 表示采用 Blacksmith 付费 Docker 缓存。只询问缺失的参数,其余在一次 AskUserQuestion 调用中询问:CD 目标(railway 为推荐)、分支模型(main = production 为推荐)、Docker 层缓存(仅 kubernetes/overwatcher)。

写入前需确认目标前置条件。Kubernetes 需检查 chart,收集缺失的 GCP project、cluster locations、namespaces、release names 和环境 values 路径,要求 chart 支持完整 digest 引用而非仅 tag 的镜像构建。若缺少 Helm chart,需停止并询问是作为单独前置条件创建还是改选其他目标。需验证 lwlee2608/release-manifest 的已发布 commit 并将两个 action 固定到该 commit;若不可用则报告依赖阻塞,而非虚构版本。不得在生成的工作流中留下部署占位符。

确认后按规则编写:单工作流文件,作业通过 needs: 连接;仅取消被取代的 PR 运行;每个服务一个测试作业;绝不能在 PR 中执行发布或部署;不部署共享的 latest;提交中不得包含密钥。

验证方式:运行 actionlint,grep 确认无 project-00,并在本地运行 go vet ./... && make test 与 pnpm install --frozen-lockfile && pnpm lint && pnpm build。

适用场景

适用于为 genesis 脚手架项目配置 CI/CD 的开发者,需要在 Railway、Kubernetes 或 Overwatcher 上部署 Go 后端与 pnpm React 前端,并希望获得经过验证的单工作流配置。

限制

Kubernetes 目标需已存在 Helm chart,且需可用的 lwlee2608/release-manifest 已发布 commit,否则无法完成。Blacksmith runner 标签、GCR/GKE 的 service-account JSON、GHCR 权限等需按文档配置。不提供手动 dispatch、source-release 或 staging 镜像晋升。超过 30 个 runner 分钟的作业默认为内部使用。