将应用部署到 CapRover 并为新项目或现有项目配置 GitHub Actions CI/CD 工作流。用户说“部署 X”“触发部署”等时使用。
CapRover 部署是一项面向实际任务的技能,主要用于此技能仅通过询问即可向 CapRover 部署应用程序;它支持两种主要策略 :.;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
本技能支持仅通过自然语言指令(例如“部署 myapp”)即可将应用部署至 CapRover。它提供两种主要部署策略:
所有凭证均存放在技能目录下的 config.json 文件中(该文件已加入 .gitignore,不会被提交至 Git 仓库)。
{
"caprover": {
"url": "https://captain.example.com",
"password": "YOUR_MASTER_PASSWORD"
},
"github": {
"token": "ghp_YOUR_GITHUB_PAT",
"owner": "your-github-username"
},
"apps": {
"myapp": {
"caprover_app_name": "myapp",
"github_repo": "your-username/myapp",
"github_workflow": "deploy.yml",
"default_branch": "main",
"caprover_app_token": "OPTIONAL_PER_APP_TOKEN",
"caprover_webhook_url": "OPTIONAL_WEBHOOK_URL_FROM_CAPROVER_DASHBOARD"
}
}
}
| 凭证 | 获取位置 | 用途 |
|---|---|---|
caprover.url |
您的 CapRover 服务器地址 | API 调用的基础 URL |
caprover.password |
CapRover 控制台(Dashboard) | 用于 API 认证的主密码 |
github.token |
GitHub → Settings → Developer Settings → Personal Access Tokens (PAT) | 用于触发 workflow_dispatch 事件 |
apps.*.caprover_app_token |
CapRover 控制台 → App → Deployment 标签页 → 启用 App Token | 以应用级令牌进行部署,无需主密码 |
apps.*.caprover_webhook_url |
CapRover 控制台 → App → Deployment 标签页 → Webhook URL | 从已配置的 Git 仓库触发自动重建 |
apps.*.github_workflow |
.github/workflows/ 目录下的工作流文件名 |
指定需触发的具体 GitHub Actions 工作流 |
当用户输入 “deploy X”(可选附加 “to branch Y”)时,系统执行以下逻辑:
1. 读取 config.json 2. 根据应用名称查找匹配项(支持模糊匹配) 3. 选择部署策略: a. 若同时配置了 github.token、github_repo 和 github_workflow → 使用 GitHub workflow_dispatch b. 否则,若配置了 caprover_webhook_url → 向该 Webhook URL 发起 POST 请求 c. 否则,若配置了 caprover_app_token → 调用 caprover CLI 执行部署 d. 若缺少必要配置,则提示用户补充 4. 执行所选策略,并反馈结果
curl -X POST
-H "Authorization: Bearer $GITHUB_TOKEN"
-H "Accept: application/vnd.github+json"
https://api.github.com/repos/OWNER/REPO/actions/workflows/deploy.yml/dispatches
-d '{"ref":"main"}'
检查工作流运行状态:
curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/OWNER/REPO/actions/runs?per_page=1
curl -X POST "WEBHOOK_URL_FROM_CONFIG"
Webhook URL 获取路径:CapRover 控制台 → Apps → [应用名称] → Deployment 标签页 → Webhook URL
caprover deploy --caproverUrl https://captain.example.com --appToken "APP_TOKEN" --appName "myapp" --imageName "ghcr.io/owner/myapp:latest"
| 用户输入 | 执行动作 |
|---|---|
| "deploy myapp" | 使用当前可用的最佳策略部署默认分支 |
| "deploy myapp to main" | 部署 main 分支 |
| "deploy branch feat/ui to myapp" | 以 ref=feat/ui 触发 GitHub workflow_dispatch |
| "trigger a deploy of myapp" | 等效于 deploy 命令 |
| "check deploy status of myapp" | 获取最近一次 GitHub Actions 运行状态 |
| "what apps can I deploy?" | 列出 config.json 中定义的所有应用 |
| 场景 | 模板路径 |
|---|---|
| 项目含 Dockerfile,推送镜像至 ghcr.io | assets/templates/deploy-image.yml |
| Node.js 构建步骤 + tar 包部署 | assets/templates/deploy-tar.yml |
| 支持 Staging 与 Production 多环境 | assets/templates/deploy-multi-env.yml |
mkdir -p PROJECT/.github/workflows cp assets/templates/deploy-image.yml PROJECT/.github/workflows/deploy.yml # 将 __APP_NAME__ 替换为实际的 CapRover 应用名称 sed -i 's/__APP_NAME__/myapp/g' PROJECT/.github/workflows/deploy.yml
cp assets/templates/captain-definition.json PROJECT/captain-definition
在 GitHub → 仓库 → Settings → Secrets and variables → Actions 中添加以下密钥:
| 密钥名称 | 值 |
|---|---|
CAPROVER_HOST |
CapRover 地址,例如 https://captain.example.com |
CAPROVER_APP_TOKEN |
CapRover 控制台 → App → Deployment → 启用 App Token 后生成的令牌 |
如使用多环境部署,请额外添加:
CAPROVER_APP_PROD、CAPROVER_APP_TOKEN_PRODCAPROVER_APP_STAGING、CAPROVER_APP_TOKEN_STAGINGcd PROJECT git add .github/workflows/deploy.yml captain-definition git commit -m "ci: add CapRover deploy workflow" git push
caprover CLI 可能未安装:运行 npm install -g caprover 安装repo 与 workflow 权限范围assets/templates/ 目录相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章