mcpField
D
deployment

deployment

github.com/digitalocean-labs云与 DevOps3895 次安装6 天前更新
代码仓库

关于 deployment

用于通过 GitHub Actions 和 `app_action` 将应用部署到 DigitalOcean App Platform,并使用仓库中的应用规格文件。该技能涵盖环境配置、工作流选择、验证与故障排查。

主要功能

  1. 01GitHub Actions 部署工作流
  2. 02应用规格的创建与更新
  3. 03配置暂存和生产环境
  4. 04拉取请求预览指南
  5. 05部署故障排查

适用场景

  1. 01从 GitHub 部署应用规格和代码变更
  2. 02分离暂存与生产环境部署
  3. 03合并前预览变更
  4. 04诊断 App Platform 构建失败

安装

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

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill deployment

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

包含的文件

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

README.md
reference/
command-reference.md
debug-container-deployment.md
initial-setup.md
workflow-templates.md

详细介绍

部署技能

使用 GitHub Actions 和 app_action 工作流部署到 App Platform。

理念:PUSH 模式部署

本技能专注于 PUSH 模式——即将基础设施定义为代码,并由 GitHub Actions 驱动部署。

PULL MODE (Console-driven) — NOT covered by this skill
• Go to DigitalOcean Console → Create App → Point to GitHub
• App Platform auto-generates app spec
• Good for: Quick starts, manual one-offs

PUSH MODE (CLI/Actions-driven) — THIS SKILL
• Define app spec in repo (.do/app.yaml)
• Use GitHub Actions + app_action to deploy
• Good for: CI/CD, automation, GitOps, multi-environment

提示:对于复杂项目,可考虑使用 planner 技能分阶段处理。所有技能请参阅 根目录 SKILL.md。


快速决策

Using GitHub Actions? (RECOMMENDED)
├── YES → Use digitalocean/app_action/deploy@v2
│         • Handles spec updates AND code deployments
│         • Manages app creation if doesn't exist
│         • Supports PR previews
│
└── NO (Manual/Scripting)
    ├── Spec changed? → doctl apps update --spec
    └── Code only? → doctl apps create-deployment
命令用途使用时机
doctl apps create --spec创建新应用仅限首次部署
doctl apps update --spec更新应用规范配置变更时
doctl apps create-deployment触发重新构建仅代码变更时
app_action v2同时处理规范和重新构建推荐:一站式处理

快速开始:环境设置

# 1. Create DigitalOcean projects
doctl projects create --name "myapp-staging" --environment "Staging"
doctl projects create --name "myapp-production" --environment "Production"

# 2. Create GitHub environments
gh api --method PUT repos/:owner/:repo/environments/staging
gh api --method PUT repos/:owner/:repo/environments/production

# 3. Set secrets per environment (user fills in values)
gh secret set DIGITALOCEAN_ACCESS_TOKEN --env staging
gh secret set DIGITALOCEAN_ACCESS_TOKEN --env production
gh variable set DO_PROJECT_ID --env staging --body "PROJECT_ID"
gh variable set DO_PROJECT_ID --env production --body "PROJECT_ID"

完整设置指南:请参阅 initial-setup.md


快速开始:基本工作流

# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - uses: actions/checkout@v4
      - uses: digitalocean/app_action/deploy@v2
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}
        with:
          token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
          project_id: ${{ vars.DO_PROJECT_ID }}

所有工作流模板:请参阅 workflow-templates.md


工作流选择

场景工作流参考资料
简单的单环境部署最小可用workflow-templates.md
预发布环境 + 生产环境基于环境workflow-templates.md
生产环境需要审批受保护的环境workflow-templates.md
合并前测试 PRPR 预览workflow-templates.md
多个环境,共用一个工作流统一工作流workflow-templates.md
需要回退回滚workflow-templates.md

快速开始:调试容器

对于包含多个集成的复杂应用,请先部署调试容器:

# Add to .do/app.yaml temporarily
workers:
  - name: debug
    image:
      registry_type: GHCR
      registry: ghcr.io
      repository: bikramkgupta/do-app-debug-container-python
      tag: latest
    instance_size_slug: apps-s-1vcpu-2gb
    envs:
      - key: DATABASE_URL
        scope: RUN_TIME
        value: ${db.DATABASE_URL}
# Connect and verify
doctl apps console $APP_ID debug
./diagnose.sh

完整指南:请参阅 debug-container-deployment.md


常用命令速查

任务命令
验证规范doctl apps spec validate .do/app.yaml
创建应用doctl apps create --spec .do/app.yaml --project-id $PROJECT_ID
更新应用doctl apps update $APP_ID --spec .do/app.yaml
重新部署doctl apps create-deployment $APP_ID
查看日志doctl apps logs $APP_ID --type run
设置密钥gh secret set NAME --env staging
列出密钥gh secret list --env staging

完整参考:请参阅 command-reference.md


参考文件

文件内容
initial-setup.md项目、环境、密钥和应用规范设置
workflow-templates.md所有 GitHub Actions 工作流 YAML 模板
debug-container-deployment.md用于基础设施验证的调试容器
command-reference.md完整的 doctl 和 gh CLI 命令

快速故障排查

问题症状解决方法
未找到应用规范Error: spec file not found确保 .do/app.yaml 存在
令牌无效401 Unauthorized检查 DIGITALOCEAN_ACCESS_TOKEN 密钥
未找到项目project_id is invalid验证 DO_PROJECT_ID 变量
构建失败BuildJobFailed检查构建日志:doctl apps logs $APP_ID --type build
环境变量显示为字面值值显示为 ${...}检查可绑定变量名称是否匹配

固定默认配置

决策默认值理由
CI 平台GitHub Actions通过 app_action 实现最佳的 DO 集成
部署 Actionapp_action/deploy@v2一步完成 spec 配置和部署
密钥每个环境使用 GitHub Secrets安全,AI 永远看不到这些值
deploy_on_pushapp spec 中设为 false由 GitHub Actions 控制部署
App spec 位置.do/app.yaml符合惯例,也与 DO 按钮一致

与其他技能集成

  • ← designer:创建部署时使用的 .do/app.yaml
  • ← postgres:处理数据库设置,并将 DATABASE_URL 存储在 GitHub Secrets 中
  • → troubleshooting:调试部署失败
  • ← devcontainers:确保本地开发环境与生产环境一致

生产环境检查清单

  • 已创建带有环境标签的 DO Projects
  • 已创建 GitHub 环境(staging、production)
  • 已为每个环境设置 DIGITALOCEAN_ACCESS_TOKEN 密钥
  • 已为每个环境设置 DO_PROJECT_ID 变量
  • .do/app.yaml 中已设置 deploy_on_push: false
  • 已创建 .github/workflows/deploy.yml
  • 已启用生产环境保护规则
  • 已测试 staging 部署
  • 已测试 production 部署

文档链接

评论

支持 Markdown