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. 01GitHub からアプリ仕様とコード変更をデプロイ
  2. 02ステージングと本番のデプロイを分離
  3. 03マージ前に変更をプレビュー
  4. 04App 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 モードでのデプロイ

このスキルでは、インフラストラクチャをコードとして定義し、GitHub Actions がデプロイを実行する PUSH モード に焦点を当てています。

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
マージ前に PR をテストPR プレビューworkflow-templates.md
複数の環境で 1 つのワークフローを使用統合ワークフロー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.mdGitHub Actions ワークフロー YAML テンプレート一式
debug-container-deployment.mdインフラストラクチャを検証するためのデバッグコンテナ
command-reference.mddoctl と gh CLI コマンドの完全なリファレンス

クイックトラブルシューティング

問題症状対処方法
アプリスペックが見つからないError: spec file not found.do/app.yaml が存在することを確認してください
トークンが無効401 UnauthorizedDIGITALOCEAN_ACCESS_TOKEN シークレットを確認してください
プロジェクトが見つからないproject_id is invalidDO_PROJECT_ID 変数を確認してください
ビルドに失敗BuildJobFailedビルドログを確認してください:doctl apps logs $APP_ID --type build
環境変数がリテラルとして表示される値が ${...} と表示されるバインド可能な変数名が一致しているか確認してください

意見のあるデフォルト設定

決定事項デフォルト理由
CI プラットフォームGitHub Actionsapp_action による DO との連携が最適です
デプロイアクションapp_action/deploy@v2仕様の適用とデプロイを 1 ステップで処理します
シークレット環境ごとの 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 environments を作成済み(staging、production)
  • 環境ごとに DIGITALOCEAN_ACCESS_TOKEN シークレットを設定済み
  • 環境ごとに DO_PROJECT_ID 変数を設定済み
  • deploy_on_push: false を指定した .do/app.yaml を作成済み
  • .github/workflows/deploy.yml を作成済み
  • production の保護ルールを有効化済み
  • staging へのデプロイをテスト済み
  • production へのデプロイをテスト済み

ドキュメントへのリンク

コメント