mcpField
S
sealos-deploy

sealos-deploy

github.com/zjy365云与 DevOps49 次安装
代码仓库

关于 sealos-deploy

sealos-deploy 是将 GitHub 或本地项目部署到 Sealos Cloud 的技能,按阶段完成评估、镜像构建、模板配置与部署,并记录日志及执行安全确认。

主要功能

  1. 01部署前检查与 Sealos 身份验证
  2. 02评估项目部署就绪度
  3. 03生成 Dockerfile 并发布镜像
  4. 04生成 Sealos 模板并部署
  5. 05分阶段记录日志并确认危险操作

适用场景

  1. 01将 GitHub 项目部署到 Sealos Cloud
  2. 02没有现成镜像时构建并发布镜像
  3. 03跟踪部署阶段并排查失败原因

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zjy365/seakills --skill sealos-deploy

安装后在 Claude Code 中输入/sealos-deploy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

config.json
evals/
benchmark.json
evals.json
knowledge/
lessons-learned.md
modules/
pipeline.md
preflight.md
schemas/
analysis.schema.json
build-result.schema.json
config.schema.json
state.schema.json
scripts/
artifact-validator.mjs
build-push.mjs
deploy-template.mjs
detect-image.mjs
ensure-image-pull-secret.mjs
gh-auth-utils.mjs
gh-refresh-scopes.mjs
score-model.mjs
sealos-auth.mjs
validate-artifacts.mjs

详细介绍

Sealos 部署

将任何 GitHub 项目部署到 Sealos Cloud——从源代码到运行中的应用,只需一条命令。

kubectl 安全规则(适用于所有阶段)

所有 kubectl 命令都必须使用 Sealos kubeconfig:

KUBECONFIG=~/.sealos/kubeconfig kubectl --insecure-skip-tls-verify

系统工具安装需要用户确认。如果缺少 docker、gh 或 kubectl,且当前平台支持通过该技能安装,请先询问;只有在用户明确回复 y 后,才能运行安装命令。

kubectl delete 需要用户确认。 删除任何资源(部署、服务、Ingress、PVC、数据库等)之前,务必询问:

WARNING: About to delete <resource kind>/<resource name>. This data cannot be recovered. Confirm? (y/n)

只有在用户确认后才能继续。即使流水线逻辑建议删除,也必须先询问。

用法

/sealos-deploy <github-url>
/sealos-deploy                    # deploy current project
/sealos-deploy <local-path>

快速开始

按顺序执行各模块:

  1. modules/preflight.md — 环境检查与 Sealos 身份验证
  2. modules/pipeline.md — 完整部署流水线(阶段 1–6)

日志记录

每次运行都必须在 ~/.sealos/logs/deploy-<YYYYMMDD-HHmmss>.log 创建日志文件。

执行一开始,只创建一次日志文件:

mkdir -p ~/.sealos/logs
LOG_FILE=~/.sealos/logs/deploy-$(date +%Y%m%d-%H%M%S).log
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploy started" > "$LOG_FILE"

重要:仅在开始时创建一次日志文件。此后所有写入都必须使用 >> 追加到同一个 $LOG_FILE。请勿创建第二个日志文件。

每个阶段结束时,使用 Bash >> 向同一文件追加日志条目:

[2026-03-05 14:30:01] === Phase 0: Preflight ===
[2026-03-05 14:30:01] Docker: ✓ 27.5.1
[2026-03-05 14:30:01] Node.js: ✓ 22.12.0
[2026-03-05 14:30:02] Sealos auth: ✓ (region: <REGION from config.json>)
[2026-03-05 14:30:02] Project: /Users/dev/myapp (github: https://github.com/owner/repo)

[2026-03-05 14:30:03] === Phase 1: Assess ===
[2026-03-05 14:30:03] Score: 9/12 (good)
[2026-03-05 14:30:03] Language: python, Framework: fastapi, Port: 8000
[2026-03-05 14:30:03] Decision: CONTINUE

[2026-03-05 14:30:04] === Phase 2: Detect Image ===
[2026-03-05 14:30:05] Docker Hub: owner/repo:latest (arm64 only, no amd64)
[2026-03-05 14:30:05] GHCR: not found
[2026-03-05 14:30:05] Decision: no amd64 image → continue to Phase 3

[2026-03-05 14:30:06] === Phase 3: Dockerfile ===
[2026-03-05 14:30:06] Existing Dockerfile: none
[2026-03-05 14:30:07] Generated: python-fastapi template, port 8000

[2026-03-05 14:30:08] === Phase 4: Build & Push ===
[2026-03-05 14:30:08] Registry: ghcr (auto-detected via gh CLI)
[2026-03-05 14:30:30] Build: ✓ ghcr.io/zhujingyang/repo:20260305-143022
[2026-03-05 14:30:32] GHCR pullability: private package detected — deploy will auto-create image pull Secret from gh CLI
[2026-03-05 14:30:33] IMAGE_REF=ghcr.io/zhujingyang/repo:20260305-143022

[2026-03-05 14:30:34] === Phase 5: Template ===
[2026-03-05 14:30:35] Output: .sealos/template/index.yaml

[2026-03-05 14:30:36] === Phase 6: Deploy ===
[2026-03-05 14:30:36] Deploy URL: https://template.gzg.sealos.run/api/v2alpha/templates/raw
[2026-03-05 14:30:38] Status: 201 — deployed successfully
[2026-03-05 14:30:38] === DONE ===

发生错误时,停止前记录错误详情:

[2026-03-05 14:30:10] === ERROR ===
[2026-03-05 14:30:10] Phase: 4 (Build & Push)
[2026-03-05 14:30:10] Error: docker buildx build failed — "npm ERR! Missing script: build"
[2026-03-05 14:30:10] Retry: 1/3

执行结束时,告知用户日志所在位置:

Log saved to: ~/.sealos/logs/deploy-20260305-143001.log

脚本

位于此技能目录中的 scripts/ 内(<SKILL_DIR>/scripts/):

脚本用法用途
score-model.mjsnode score-model.mjs <repo-dir>确定性就绪度评分(0-12)
validate-artifacts.mjsnode validate-artifacts.mjs --dir <work-dir>根据强制执行的架构验证 .sealos JSON 制品
detect-image.mjsnode detect-image.mjs <github-url> [work-dir] 或 node detect-image.mjs <work-dir>检测现有 Docker/GHCR 镜像
build-push.mjsnode build-push.mjs <work-dir> <repo> [--registry ghcr|dockerhub] [--user <user>]构建 amd64 镜像并推送到所选镜像仓库(Docker Hub 路径假定部署时镜像是公开的;省略 --registry 会保持自动检测行为)
ensure-image-pull-secret.mjsnode ensure-image-pull-secret.mjs <namespace> <secret-name> <image-ref> [deployment-name]创建或更新应用专用的 GHCR 拉取 Secret,并可选地为现有 Deployment 添加对此 Secret 的引用
gh-refresh-scopes.mjsnode gh-refresh-scopes.mjs write:packages在当前 TTY 中刷新 GHCR 软件包访问权限;在此工作流中,write:packages 足以用于推送和拉取私有镜像
deploy-template.mjsnode deploy-template.mjs <template-path> [--dry-run] [--args-json '{"KEY":"value"}'|--args-file <file>]从 ~/.sealos/auth.json 解析当前区域,构建正确的 Template API URL,并提交本地模板 YAML
sealos-auth.mjsnode sealos-auth.mjs check|login|list|switchSealos Cloud 身份验证与工作空间切换

所有脚本都会输出 JSON。通过 Bash 运行并解析结果。

内部技能依赖项

此技能会引用同一安装环境中其他内部技能的知识文件。这些文件不面向用户,仅在特定阶段按需加载。

<SKILL_DIR> 指向包含此 SKILL.md 的目录。同级技能位于 <SKILL_DIR>/../:

<SKILL_DIR>/../
├── sealos-deploy/           ← this skill (user entry point) = <SKILL_DIR>
├── dockerfile-skill/        ← Phase 3: Dockerfile generation knowledge
├── cloud-native-readiness/  ← Phase 1: assessment criteria
└── docker-to-sealos/       ← Phase 5: Sealos template rules

pipeline.md 中使用的路径遵循以下模式:

<SKILL_DIR>/../dockerfile-skill/knowledge/error-patterns.md
<SKILL_DIR>/../dockerfile-skill/templates/<lang>.dockerfile
<SKILL_DIR>/../docker-to-sealos/references/sealos-specs.md

阶段概览

阶段操作跳过条件
0 — 预检能力扫描、路径特定警告、Sealos 身份验证初始阻塞问题已解决
1 — 评估克隆仓库(或使用当前项目),分析是否可部署评分过低 → 停止
2 — 检测查找现有镜像(Docker Hub / GHCR / README)找到 → 跳转至阶段 5
3 — Dockerfile如果缺少 Dockerfile,则生成一个已有 Dockerfile → 跳过
4 — 构建并推送docker buildx → GHCR(通过 gh CLI 自动完成)或 Docker Hub(备用)—
5 — 模板生成 Sealos 应用模板—
5.5 — 配置指导用户配置应用环境变量和输入项无需输入
6 — 部署将模板部署到 Sealos Cloud—

决策流程

Input (GitHub URL / local path)
  │
  ▼
[Phase 0] Preflight ── fail → guide user to fix and STOP
  │ pass
  ▼
[Phase 1] Assess ── not suitable → STOP with reason
  │ suitable
  ▼
[Phase 2] Detect existing image
  │
  ├── found (amd64) ────────────────────┐
  │                                     │
  ▼                                     │
[Phase 3] Dockerfile (generate/reuse)   │
  │                                     │
  ▼                                     │
[Phase 4] Build & Push to registry      │
  │                                     │
  ◄─────────────────────────────────────┘
  │
  ▼
[Phase 5] Generate Sealos Template
  │
  ▼
[Phase 5.5] Configure ── present env vars → ask user for inputs → confirm
  │
  ▼
[Phase 6] Deploy to Sealos Cloud ── 401 → re-auth
  │                                  409 → instance exists
  ▼
Done — app deployed ✓

执行规则: 阶段 0 仍有未解决的入口阻塞问题时,绝不能启动阶段 1。必须尽早报告 Docker、gh、构建器和镜像仓库故障,但只有在后续运行需要本地构建/推送时,这些故障才会成为硬性阻塞问题。

评论

支持 Markdown