DeskClaw 的发版和部署使用独立入口管理:release.sh 只负责版本制品和 GitHub Release,deploy.sh 只负责把已存在镜像 tag 更新到 K8s,init.sh 只负责首次初始化环境。
deploy/
├── release.sh # 发版:构建镜像、推送、git tag、GitHub Release
├── deploy.sh # 部署:更新 K8s Deployment 到指定 tag
├── init.sh # 初始化:Namespace、Secret、基础 Deployment/Service
├── lib/ # 共享函数
├── .env.local # 本地部署配置(不进 git)
├── k8s/ # K8s Deployment / Service / Ingress 清单
└── mirrors/ # 构建镜像源预设
创建 deploy/.env.local(已被 .gitignore 忽略):
REGISTRY="<YOUR_REGISTRY>/<YOUR_NAMESPACE>"
PUBLIC_REGISTRY="<PUBLIC_REGISTRY>/<PUBLIC_NAMESPACE>" # 可选
KUBE_CONTEXT="<YOUR_KUBECTL_CONTEXT>"PUBLIC_REGISTRY 可选。配置后,backend/portal/proxy 使用 PUBLIC_REGISTRY,admin 始终使用 REGISTRY;未配置时所有组件使用 REGISTRY。
其他前提:
- Docker Desktop 运行中,且已登录容器镜像仓库
kubectl已配置目标集群上下文- 目标 Namespace 和
cr-pull-secret已存在,或先运行init.sh ghCLI 已安装并认证(仅release.sh需要)
创建版本制品:
./deploy/release.sh create v0.5.0
./deploy/release.sh create v0.5.0 --ee
./deploy/release.sh create v0.5.0 --skip-proxy
./deploy/release.sh create v0.5.0 --mirrors cncreate 会构建并推送版本镜像、生成 changelog、创建/更新 git tag,并创建 GitHub Pre-release。它不会执行 K8s 部署。
将 GitHub Release 标记为正式版:
./deploy/release.sh finalize v0.5.0finalize 只更新 GitHub Release 状态,不触碰 K8s。
部署只使用已存在镜像 tag,--tag 必填:
./deploy/deploy.sh deploy --tag v0.5.0 --staging --context <CTX>
./deploy/deploy.sh deploy backend --tag v0.5.0 --staging --context <CTX>
./deploy/deploy.sh deploy proxy --tag v0.5.0 --staging --context <CTX>
./deploy/deploy.sh deploy --tag v0.5.0 --prod --context <CTX>EE 模式:
./deploy/deploy.sh deploy --tag v0.5.0 --ee --staging --context <CTX>
./deploy/deploy.sh deploy admin --tag v0.5.0 --ee --staging --context <CTX>
./deploy/deploy.sh deploy --tag v0.5.0 --ee --skip-proxy --staging --context <CTX>生产部署会先展示当前镜像和目标镜像,并要求交互确认。部署脚本不构建镜像、不推送镜像、不修改 GitHub Release。
./deploy/init.sh --staging --context <CTX>
./deploy/init.sh --prod --context <CTX>
./deploy/init.sh --env-file path/to/.env --staging --context <CTX>
./deploy/init.sh --ee --staging --context <CTX>初始化会创建 Namespace、写入后端 Secret,并应用基础 Deployment/Service 清单。Ingress 仍需配置域名后手动 apply:
kubectl --context <CTX> -n <NS> apply -f deploy/k8s/ingress.yamlStaging 验证:
./deploy/release.sh create v0.5.0
./deploy/deploy.sh deploy --tag v0.5.0 --staging --context <CTX>生产发布:
./deploy/deploy.sh deploy --tag v0.5.0 --prod --context <CTX>
./deploy/release.sh finalize v0.5.0- 日常测试版本:
YYYYMMDD-<git-short-hash>或显式版本号 - 正式版本:语义化版本,例如
v0.1.0-beta.1、v0.1.0
通过 --ee 参数控制构建或部署目标:
- CE 模式默认包含 backend、portal、proxy,不包含 admin。
- EE 模式包含 backend、admin、portal、proxy,并要求本地存在
ee/目录。 - admin 镜像始终使用
REGISTRY,其他组件使用PUBLIC_REGISTRY,未配置时回退REGISTRY。